1 | #!/usr/bin/env node
|
2 |
|
3 | var path = require('path');
|
4 | var fs = require('fs');
|
5 | var program = require('commander');
|
6 | var _ = require("lodash");
|
7 | var ems = require('..');
|
8 |
|
9 | var pkg = require('../package.json');
|
10 |
|
11 | program
|
12 | .version(pkg.version)
|
13 | .usage('<target>')
|
14 | .option('-s, --source-maps', 'write sourcemap files')
|
15 | .option('-e, --embed-mapping-comments', 'embed sourcemap url into created files')
|
16 | .option('-c, --compress', 'create gzipped files')
|
17 | .on('--help', function(){
|
18 | console.log(' Examples:');
|
19 | console.log('');
|
20 | console.log(' $ ems precompile');
|
21 | console.log(' $ ems precompile my-spa-application');
|
22 | console.log(' $ ems precompile /path/to/my-spa-application');
|
23 | console.log('');
|
24 | })
|
25 | .parse(process.argv);
|
26 |
|
27 |
|
28 | // Setup NODE ENV to production
|
29 | process.env.NODE_ENV = 'production';
|
30 |
|
31 | var target = program.args[0] || process.cwd();
|
32 | var targetPath = path.resolve(process.cwd(), target);
|
33 | if(fs.existsSync(targetPath)) {
|
34 | var app = require(targetPath);
|
35 | app.bootstrap({
|
36 | assets: {
|
37 | production: false
|
38 | },
|
39 | precompile: {
|
40 | options: {
|
41 | sourceMaps: program.sourceMaps,
|
42 | embedMappingComments: program.embedMappingComments,
|
43 | compress: program.compress
|
44 | }
|
45 | }
|
46 | });
|
47 |
|
48 | if(_.has(app, 'assetPipeline')) {
|
49 | var manifest = new app.assetPipeline.Mincer.Manifest(
|
50 | app.assetPipeline.environment,
|
51 | app.config.precompile.target
|
52 | );
|
53 | var files = app.config.precompile.files || [];
|
54 | if(app.config.precompile.fonts) {
|
55 | files = _.concat(files, ems.getPrecompileFonts());
|
56 | }
|
57 |
|
58 | if(app.config.precompile.images) {
|
59 | files = _.concat(files, ems.getPrecompileImages());
|
60 | }
|
61 | var data = manifest.compile(files, app.config.precompile.options);
|
62 | for(var f in data.assets) {
|
63 | var asset = data.assets[f];
|
64 | console.log('compiled %s to %s', f, asset);
|
65 | }
|
66 | } else {
|
67 | console.error('Target application does not have a mincer asset pipeline');
|
68 | }
|
69 | } else {
|
70 | console.error('Target application '+target+' does not exists');
|
71 | }
|
72 |
|
73 |
|