|
1 | | -var fs = require('fs'); |
| 1 | + |
| 2 | +var fs = require('fs-extra'); |
2 | 3 | var path = require('path'); |
| 4 | +var uglify = require('uglify-js'); |
3 | 5 |
|
4 | 6 | var template = require('./template'); |
5 | 7 |
|
6 | 8 | function bundle(srcPath){ |
7 | 9 |
|
8 | | - var srcFile = fs.existsSync(srcPath)? fs.readFileSync(srcPath, 'utf8') : srcPath; |
| 10 | + var promise = fs.existsSync(srcPath)? fs.readFile(srcPath, 'utf8') : Promise.resolve(srcPath); |
9 | 11 |
|
10 | | - var source = template.preamble + template.umdHeader + |
11 | | - srcFile + |
12 | | - template.moduleExports + template.umdFooter; |
| 12 | + return promise.then(function(srcFile){ |
| 13 | + var source = template.preamble + template.umdHeader + |
| 14 | + srcFile + |
| 15 | + template.moduleExports + template.umdFooter; |
13 | 16 |
|
14 | | - return source; |
| 17 | + return source; |
| 18 | + }); |
15 | 19 | } |
16 | 20 |
|
17 | 21 | function bundleTo(srcPath, targets){ |
18 | | - var source = bundle(srcPath); |
19 | | - var t; |
20 | | - for(var i=0,size=targets.length; i < size; ++i){ |
21 | | - t = targets[i]; |
22 | | - fs.writeFileSync(path.resolve(__dirname, '..', t), source); |
23 | | - } |
| 22 | + return bundle(srcPath).then(function(source){ |
| 23 | + var t, files = []; |
| 24 | + if(!Array.isArray(targets)){ |
| 25 | + targets = [targets]; |
| 26 | + } |
| 27 | + for(var i=0,size=targets.length; i < size; ++i){ |
| 28 | + t = targets[i]; |
| 29 | + files.push(fs.writeFile(path.resolve(__dirname, '..', t), source)); |
| 30 | + } |
| 31 | + return Promise.all(files).then(function(){ |
| 32 | + return source; |
| 33 | + }); |
| 34 | + }); |
| 35 | +} |
| 36 | + |
| 37 | +function minifySync(code, targetFileName){ |
| 38 | + return uglify.minify(code, { |
| 39 | + sourceMap: { |
| 40 | + filename: targetFileName, |
| 41 | + url: targetFileName + '.map' |
| 42 | + } |
| 43 | + }); |
24 | 44 | } |
25 | 45 |
|
26 | 46 | module.exports = { |
27 | 47 | bundle: bundle, |
28 | | - bundleTo: bundleTo |
| 48 | + bundleTo: bundleTo, |
| 49 | + minifySync: minifySync |
29 | 50 | } |
30 | 51 |
|
31 | 52 | if (require.main === module) { |
32 | 53 |
|
33 | 54 | if(process.argv.length === 2){ |
34 | 55 |
|
35 | 56 | var srcPath = path.resolve(__dirname, '..', 'jsonlint.js'); |
36 | | - console.log(bundle(srcPath)); |
| 57 | + bundle(srcPath).then(function(src){ |
| 58 | + console.log(src); |
| 59 | + }); |
37 | 60 |
|
38 | 61 | } else { |
39 | 62 |
|
|
0 commit comments