#!/usr/bin/env node var path = require('path'); var fs = require('fs'); var program = require('commander'); var _ = require("lodash"); var ems = require('..'); var pkg = require('../package.json'); program .version(pkg.version) .usage('') .option('-s, --source-maps', 'write sourcemap files') .option('-e, --embed-mapping-comments', 'embed sourcemap url into created files') .option('-c, --compress', 'create gzipped files') .on('--help', function(){ console.log(' Examples:'); console.log(''); console.log(' $ ems precompile'); console.log(' $ ems precompile my-spa-application'); console.log(' $ ems precompile /path/to/my-spa-application'); console.log(''); }) .parse(process.argv); // Setup NODE ENV to production process.env.NODE_ENV = 'production'; var target = program.args[0] || process.cwd(); var targetPath = path.resolve(process.cwd(), target); if(fs.existsSync(targetPath)) { var app = require(targetPath); app.bootstrap({ assets: { production: false }, precompile: { options: { sourceMaps: program.sourceMaps, embedMappingComments: program.embedMappingComments, compress: program.compress } } }); if(_.has(app, 'assetPipeline')) { var manifest = new app.assetPipeline.Mincer.Manifest( app.assetPipeline.environment, app.config.precompile.target ); var files = app.config.precompile.files || []; if(app.config.precompile.fonts) { files = _.concat(files, ems.getPrecompileFonts()); } if(app.config.precompile.images) { files = _.concat(files, ems.getPrecompileImages()); } var data = manifest.compile(files, app.config.precompile.options); for(var f in data.assets) { var asset = data.assets[f]; console.log('compiled %s to %s', f, asset); } } else { console.error('Target application does not have a mincer asset pipeline'); } } else { console.error('Target application '+target+' does not exists'); }