Skip to content

Commit

Permalink
feat(node-configurator): add prependFiles, appendFiles options
Browse files Browse the repository at this point in the history
  • Loading branch information
qfox committed Mar 31, 2016
1 parent 30872bb commit 740b3fd
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lib/assets/tmpl-spec.jst
Expand Up @@ -80,7 +80,7 @@ function loadTemplate(file, exportName) {
return { apply: function() { return e.stack; } };
}
}
function reRequire(file, exportName) {
function reRequire(file) {
file = require.resolve(file);
clearRequire(file);
return require(file);
Expand Down
27 changes: 19 additions & 8 deletions lib/node-configurator.js
Expand Up @@ -37,6 +37,8 @@ exports.configure = function (config, options) {
config.nodes(pattern, function (nodeConfig) {
var langs = options.langs,
engines = options.engines,
prependFiles = [].concat(options.prependFiles).filter(Boolean),
appendFiles = [].concat(options.appendFiles).filter(Boolean),
coverageEngines = options.coverage.engines,
engineTargets = [],
specTargets = [],
Expand Down Expand Up @@ -70,17 +72,23 @@ exports.configure = function (config, options) {
[files]
]);

// Add engines' techs
// Provide prepending and appending files if any.
prependFiles.concat(appendFiles)
.forEach(function (filepath) {
nodeConfig.addTech([provide, { target: filepath }]);
});

// Add engines' techs and set needsCoverage flag
engines.forEach(function (engine) {
engine.hasOwnProperty('needsCoverage') || (engine.needsCoverage = _.contains(coverageEngines, engine.name));
nodeConfig.addTech([engine.tech, engine.options]);
});

// For each lang including no-lang (false) and mock-lang (true)
(Array.isArray(langs) ? langs : [langs && 'lang']).forEach(function (lang) {
var suffix = '.' + lang + '.js',
isMock = lang === 'lang',
isReal = lang && !isMock;
(Array.isArray(langs) ? langs : [langs && 'mock']).forEach(function (lang) {
var isMock = lang === 'mock',
isReal = !isMock && typeof lang === 'string',
suffix = '.' + (lang || 'merged') + '.js';

// Keyset and lang file for real langs:
isReal && nodeConfig.addTechs([
Expand All @@ -95,14 +103,17 @@ exports.configure = function (config, options) {

engines.forEach(function (engine) {
var target = engine.target,
destTarget = target;
destTarget = target,
sources = prependFiles.concat(target).concat(appendFiles);

// Skip block for `langs: false`
if (lang) {
// or if we don't need prepending/appending files.
if (lang || sources.length > 1) {
destTarget = target.replace('.js', suffix);
lang && sources.unshift('?.lang' + suffix);

nodeConfig.addTech([mergeFile, {
sources: ['?.lang' + suffix, target],
sources: sources,
target: destTarget,
sourcemap: true
}]);
Expand Down
4 changes: 4 additions & 0 deletions lib/plugin.js
Expand Up @@ -68,6 +68,8 @@ module.exports = function (helper, commonOpts) {
}),
langs: options.langs,
mockI18N: options.mockI18N,
prependFiles: options.prependFiles,
appendFiles: options.appendFiles,
engines: _.map(engines, function (engine, name) {
var techPath = engine.tech,
tech = require(techPath),
Expand Down Expand Up @@ -174,6 +176,8 @@ module.exports = function (helper, commonOpts) {
sourceLevels: options.sourceLevels,
langs: options.langs,
mockI18N: options.mockI18N,
prependFiles: options.prependFiles,
appendFiles: options.appendFiles,
engines: options.engines,
saveHtml: options.saveHtml,
coverage: options.coverage,
Expand Down

0 comments on commit 740b3fd

Please sign in to comment.