-
Notifications
You must be signed in to change notification settings - Fork 20
/
urequireCmd.js
87 lines (65 loc) · 6.28 KB
/
urequireCmd.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env node
/*!
* urequire - version 0.3.0alpha22
* Compiled on 2013-04-04
* git://github.com/anodynos/urequire
* Copyright(c) 2013 Agelos Pikoulas (agelos.pikoulas@gmail.com )
* Licensed MIT http://www.opensource.org/licenses/mit-license.php
*/
// Generated by CoffeeScript 1.4.0
var Build, CMDOPTIONS, Logger, bb, config, l, tmplt, toArray, upath, urequireCmd, _, _B, _fn, _fs, _i, _len, _ref, _wrench;
_ = require('lodash');
_B = require('uberscore');
_fs = require('fs');
_wrench = require("wrench");
urequireCmd = require('commander');
upath = require('./paths/upath');
Build = require('./process/Build');
Logger = require('./utils/Logger');
l = new Logger('urequireCMD');
toArray = function(val) {
return val.split(',');
};
config = {};
urequireCmd.version(l.VERSION).option('-o, --outputPath <outputPath>', 'Output converted files onto this directory').option('-f, --forceOverwriteSources', 'Overwrite *source* files (-o not needed & ignored)', void 0).option('-v, --verbose', 'Print module processing information', void 0).option('-d, --debugLevel <debugLevel>', 'Pring debug information (0-100)', void 0).option('-n, --noExports', 'Ignore all web `rootExports` in module definitions', void 0).option('-r, --webRootMap <webRootMap>', "Where to map `/` when running in node. On RequireJS its http-server's root. Can be absolute or relative to bundle. Defaults to bundle.", void 0).option('-s, --scanAllow', "By default, ALL require('') deps appear on []. to prevent RequireJS to scan @ runtime. With --s you can allow `require('')` scan @ runtime, for source modules that have no [] deps (eg nodejs source modules).", void 0).option('-a, --allNodeRequires', 'Pre-require all deps on node, even if they arent mapped to parameters, just like in AMD deps []. Preserves same loading order, but a possible slower starting up. They are cached nevertheless, so you might gain speed later.', void 0).option('-t, --template <template>', 'Template (AMD, UMD, nodejs), to override a `configFile` setting. Should use ONLY with `config`', void 0).option('-C, --continue', 'NOT IMPLEMENTED Dont bail out while processing (mainly on module processing errors)', void 0).option('-u, --uglify', 'NOT IMPLEMENTED. Pass through uglify before saving.', void 0).option('-w, --watch', 'NOT IMPLEMENTED. Watch for changes in bundle files and reprocess those changed files.', void 0).option('-i, --include', "NOT IMPLEMENTED. Process only modules/files in filters - comma seprated list/Array of Strings or Regexp's", toArray).option('-j, --jsonOnly', 'NOT IMPLEMENTED. Output everything on stdout using json only. Usefull if you are building build tools', void 0).option('-e, --verifyExternals', 'NOT IMPLEMENTED. Verify external dependencies exist on file system.', void 0);
_ref = Build.templates;
_fn = function(tmplt) {
return urequireCmd.command("" + tmplt + " <bundlePath>").description("Converts all modules in <bundlePath> using '" + tmplt + "' template.").action(function(bundlePath) {
config.template = tmplt;
return config.bundlePath = bundlePath;
});
};
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
tmplt = _ref[_i];
_fn(tmplt);
}
urequireCmd.command('config <configFiles...>').action(function(cfgFiles) {
return config.configFiles = toArray(cfgFiles);
});
urequireCmd.on('--help', function() {
return l.log("Examples:\n \u001b[32m\n $ urequire UMD path/to/amd/moduleBundle -o umd/moduleBundle \u001b[0m\n or \u001b[32m\n $ urequire AMD path/to/moduleBundle -f \u001b[0m\n or \u001b[32m\n $ urequire config path/to/configFile.json,anotherConfig.js \u001b[0m\n\n*Note: Command line values have precedence over configFiles; values on configFiles on the left have precedence over those on the right (deeply traversing).*\n\nModule files in your bundle can conform to the *standard AMD* format: \u001b[36m\n // standard AMD module format - unnamed or named (not recommended by AMD)\n define(['dep1', 'dep2'], function(dep1, dep2) {...}); \u001b[0m\n\nAlternativelly modules can use the *standard nodejs/CommonJs* format: \u001b[36m\n var dep1 = require('dep1');\n var dep2 = require('dep2');\n ...\n module.exports = {my: 'module'} \u001b[0m\n\nFinally, a 'relaxed' format can be used (combination of AMD+commonJs), along with asynch requires, requirejs plugins, rootExports + noConflict boilerplate, bundleExports and much more - see the docs. \u001b[36m\n // uRequire 'relaxed' modules format\n - define(['dep1', 'dep2'], function(dep1, dep2) {\n ...\n // nodejs-style requires, with no side effects\n dep3 = require('dep3');\n ....\n // asynchronous AMD-style requires work in nodejs\n require(['someDep', 'another/dep'], function(someDep, anotherDep){...});\n\n // RequireJS plugins work on web + nodejs\n myJson = require('json!ican/load/requirejs/plugins/myJson.json');\n ....\n return {my: 'module'};\n }); \u001b[0m\n\nNotes:\n --forceOverwriteSources (-f) is useful if your sources are not `real sources` eg. you use coffeescript :-).\n WARNING: -f ignores --outputPath\n\n - Your source can be coffeescript (more will follow) - .coffee files are internally translated to js.\n\n - configFiles can be written as a .js module, .coffee module, json and much more - see 'butter-require'\n\n uRequire version " + l.VERSION);
});
urequireCmd.parse(process.argv);
CMDOPTIONS = _.map(urequireCmd.options, function(o) {
return o.long.slice(2);
});
_.extend(config, _.pick(urequireCmd, CMDOPTIONS));
delete config.version;
if (_.isEmpty(config)) {
l.err("No CMD options or config file specified.\nNot looking for any default config file in this uRequire version.\nType -h if U R after help!\"");
l.log("uRequire version " + l.VERSION);
} else {
if (config.verbose) {
l.verbose('uRequireCmd called with cmdConfig=\n', config);
}
config.done = function(doneValue) {
if ((doneValue === true) || (doneValue === void 0)) {
return l.verbose("uRequireCmd done() successfully!");
} else {
l.err("uRequireCmd done(), with errors!");
return process.exit(1);
}
};
bb = new (require('./urequire')).BundleBuilder(config);
bb.buildBundle();
}