rump-scripts
Version:
Rump piece for building JS with Webpack
91 lines (74 loc) • 11.9 kB
JavaScript
;
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _extend = require('extend');
var _extend2 = _interopRequireDefault(_extend);
var _rump = require('rump');
var _rump2 = _interopRequireDefault(_rump);
var _globule = require('globule');
var _path = require('path');
var _webpack = require('webpack');
var _file = require('./file');
var DescPlugin = _webpack.ResolverPlugin.DirectoryDescriptionFilePlugin;
var protocol = process.platform === 'win32' ? 'file:///' : 'file://';
var configs = _rump2['default'].configs;
var CommonsChunkPlugin = _webpack.optimize.CommonsChunkPlugin;
var DedupePlugin = _webpack.optimize.DedupePlugin;
var UglifyJsPlugin = _webpack.optimize.UglifyJsPlugin;
var OccurrenceOrderPlugin = _webpack.optimize.OccurrenceOrderPlugin;
exports['default'] = function () {
var commonsChunk = 'common';
var source = (0, _path.join)(configs.main.paths.source.root, configs.main.paths.source.scripts),
destination = (0, _path.join)(configs.main.paths.destination.root, configs.main.paths.destination.scripts),
options = {
entry: entries(),
output: { path: destination, filename: '[name].js' },
module: { loaders: configs.main.scripts.loaders },
plugins: _file.plugins.concat([new _webpack.ResolverPlugin(new DescPlugin('package.json', ['webpack', 'browser', 'web', 'browserify', ['jam', 'main'], 'main'])), new _webpack.ResolverPlugin(new DescPlugin('bower.json', ['main'])), new _webpack.DefinePlugin(configs.main.scripts.macros)]),
resolve: {
alias: configs.main.scripts.aliases,
extensions: [''].concat(_file.extensions),
modulesDirectories: ['node_modules', 'bower_components'],
root: (0, _path.resolve)(source)
},
watchOptions: { aggregateTimeout: 200 }
};
if (configs.main.scripts.sourceMap) {
options.debug = true;
options.devtool = 'inline-source-map';
options.output.devtoolModuleFilenameTemplate = filenameTemplate;
}
if (configs.main.scripts.minify) {
options.plugins.push(new UglifyJsPlugin(configs.uglifyjs));
options.plugins.push(new OccurrenceOrderPlugin());
options.plugins.push(new DedupePlugin());
}
if (configs.main.scripts.common) {
if (typeof configs.main.scripts.common === 'string') {
commonsChunk = configs.main.scripts.common;
}
options.plugins.push(new CommonsChunkPlugin(commonsChunk, commonsChunk + '.js'));
}
if (configs.main.scripts.library) {
options.output.library = configs.main.scripts.library;
options.output.libraryTarget = 'umd';
}
return (0, _extend2['default'])(true, options, configs.main.scripts.webpack);
};
function entries() {
var source = (0, _path.join)(configs.main.paths.source.root, configs.main.paths.source.scripts, configs.main.globs.build.scripts);
return (0, _globule.find)([source].concat(_rump2['default'].configs.main.globs.global)).map(function (filename) {
return (0, _path.basename)(filename);
}).reduce(function (obj, filename) {
obj[(0, _path.basename)(filename, (0, _path.extname)(filename))] = filename;
return obj;
}, {});
}
function filenameTemplate(_ref) {
var absoluteResourcePath = _ref.absoluteResourcePath;
return '' + protocol + absoluteResourcePath.split(_path.sep).join('/');
}
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWdzL3dlYnBhY2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7c0JBQW1CLFFBQVE7Ozs7b0JBQ1YsTUFBTTs7Ozt1QkFDSixTQUFTOztvQkFDd0IsTUFBTTs7dUJBQ0wsU0FBUzs7b0JBQzVCLFFBQVE7O0FBRXBDLElBQUEsVUFBVSxHQUFHLHdCQUFlLDhCQUE4QixDQUFBO0FBQzFELElBQUEsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxHQUFHLFVBQVUsR0FBRyxTQUFTLENBQUE7QUFDaEUsSUFBQyxPQUFPLHFCQUFQLE9BQU8sQ0FBUTtJQUNmLGtCQUFrQixxQkFBbEIsa0JBQWtCO0FBQW5CLElBQXFCLFlBQVkscUJBQVosWUFBWSxDQUFZO0lBQzVDLGNBQWMscUJBQWQsY0FBYztJQUFFLHFCQUFxQixxQkFBckIscUJBQXFCOztxQkFFN0IsWUFBVztBQUN4QixNQUFJLFlBQVksR0FBRyxRQUFRLENBQUE7QUFDM0IsTUFBTSxNQUFNLEdBQUcsZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztNQUNoRCxXQUFXLEdBQUcsZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztNQUMxRCxPQUFPLEdBQUc7QUFDUixTQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ2hCLFVBQU0sRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQztBQUNsRCxVQUFNLEVBQUUsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFDO0FBQy9DLFdBQU8sRUFBRSxj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QyxDQUN6RCxHQUFHLENBQUMsVUFBQSxRQUFRO1dBQUksb0JBQVMsUUFBUSxDQUFDO0dBQUEsQ0FBQyxDQUNuQyxNQUFNLENBQUMsVUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFLO0FBQ3pCLE9BQUcsQ0FBQyxvQkFBUyxRQUFRLEVBQUUsbUJBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQTtBQUNyRCxXQUFPLEdBQUcsQ0FBQTtHQUNYLEVBQUUsRUFBRSxDQUFDLENBQUE7Q0FDVDs7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQXNCLEVBQUU7TUFBdkIsb0JBQW9CLEdBQXJCLElBQXNCLENBQXJCLG9CQUFvQjs7QUFDN0MsY0FBVSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxXQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFFO0NBQ2pFIiwiZmlsZSI6IndlYnBhY2suanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXh0ZW5kIGZyb20gJ2V4dGVuZCdcbmltcG9ydCBydW1wIGZyb20gJ3J1bXAnXG5pbXBvcnQge2ZpbmR9IGZyb20gJ2dsb2J1bGUnXG5pbXBvcnQge2Jhc2VuYW1lLCBleHRuYW1lLCBqb2luLCByZXNvbHZlLCBzZXB9IGZyb20gJ3BhdGgnXG5pbXBvcnQge0RlZmluZVBsdWdpbiwgUmVzb2x2ZXJQbHVnaW4sIG9wdGltaXplfSBmcm9tICd3ZWJwYWNrJ1xuaW1wb3J0IHtleHRlbnNpb25zLCBwbHVnaW5zfSBmcm9tICcuL2ZpbGUnXG5cbmNvbnN0IERlc2NQbHVnaW4gPSBSZXNvbHZlclBsdWdpbi5EaXJlY3RvcnlEZXNjcmlwdGlvbkZpbGVQbHVnaW4sXG4gICAgICBwcm90b2NvbCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnZmlsZTovLy8nIDogJ2ZpbGU6Ly8nLFxuICAgICAge2NvbmZpZ3N9ID0gcnVtcCxcbiAgICAgIHtDb21tb25zQ2h1bmtQbHVnaW4sIERlZHVwZVBsdWdpbn0gPSBvcHRpbWl6ZSxcbiAgICAgIHtVZ2xpZnlKc1BsdWdpbiwgT2NjdXJyZW5jZU9yZGVyUGx1Z2lufSA9IG9wdGltaXplXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICBsZXQgY29tbW9uc0NodW5rID0gJ2NvbW1vbidcbiAgY29uc3Qgc291cmNlID0gam9pbihjb25maWdzLm1haW4ucGF0aHMuc291cmNlLnJvb3QsXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlncy5tYWluLnBhdGhzLnNvdXJjZS5zY3JpcHRzKSxcbiAgICAgICAgZGVzdGluYXRpb24gPSBqb2luKGNvbmZpZ3MubWFpbi5wYXRocy5kZXN0aW5hdGlvbi5yb290LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlncy5tYWluLnBhdGhzLmRlc3RpbmF0aW9uLnNjcmlwdHMpLFxuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIGVudHJ5OiBlbnRyaWVzKCksXG4gICAgICAgICAgb3V0cHV0OiB7cGF0aDogZGVzdGluYXRpb24sIGZpbGVuYW1lOiAnW25hbWVdLmpzJ30sXG4gICAgICAgICAgbW9kdWxlOiB7bG9hZGVyczogY29uZmlncy5tYWluLnNjcmlwdHMubG9hZGVyc30sXG4gICAgICAgICAgcGx1Z2luczogcGx1Z2lucy5jb25jYXQoW1xuICAgICAgICAgICAgbmV3IFJlc29sdmVyUGx1Z2luKG5ldyBEZXNjUGx1Z2luKCdwYWNrYWdlLmpzb24nLCBbXG4gICAgICAgICAgICAgICd3ZWJwYWNrJyxcbiAgICAgICAgICAgICAgJ2Jyb3dzZXInLFxuICAgICAgICAgICAgICAnd2ViJyxcbiAgICAgICAgICAgICAgJ2Jyb3dzZXJpZnknLFxuICAgICAgICAgICAgICBbJ2phbScsICdtYWluJ10sXG4gICAgICAgICAgICAgICdtYWluJyxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIG5ldyBSZXNvbHZlclBsdWdpbihuZXcgRGVzY1BsdWdpbignYm93ZXIuanNvbicsIFsnbWFpbiddKSksXG4gICAgICAgICAgICBuZXcgRGVmaW5lUGx1Z2luKGNvbmZpZ3MubWFpbi5zY3JpcHRzLm1hY3JvcyksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgICAgYWxpYXM6IGNvbmZpZ3MubWFpbi5zY3JpcHRzLmFsaWFzZXMsXG4gICAgICAgICAgICBleHRlbnNpb25zOiBbJyddLmNvbmNhdChleHRlbnNpb25zKSxcbiAgICAgICAgICAgIG1vZHVsZXNEaXJlY3RvcmllczogWydub2RlX21vZHVsZXMnLCAnYm93ZXJfY29tcG9uZW50cyddLFxuICAgICAgICAgICAgcm9vdDogcmVzb2x2ZShzb3VyY2UpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgd2F0Y2hPcHRpb25zOiB7YWdncmVnYXRlVGltZW91dDogMjAwfSxcbiAgICAgICAgfVxuXG4gIGlmKGNvbmZpZ3MubWFpbi5zY3JpcHRzLnNvdXJjZU1hcCkge1xuICAgIG9wdGlvbnMuZGVidWcgPSB0cnVlXG4gICAgb3B0aW9ucy5kZXZ0b29sID0gJ2lubGluZS1zb3VyY2UtbWFwJ1xuICAgIG9wdGlvbnMub3V0cHV0LmRldnRvb2xNb2R1bGVGaWxlbmFtZVRlbXBsYXRlID0gZmlsZW5hbWVUZW1wbGF0ZVxuICB9XG4gIGlmKGNvbmZpZ3MubWFpbi5zY3JpcHRzLm1pbmlmeSkge1xuICAgIG9wdGlvbnMucGx1Z2lucy5wdXNoKG5ldyBVZ2xpZnlKc1BsdWdpbihjb25maWdzLnVnbGlmeWpzKSlcbiAgICBvcHRpb25zLnBsdWdpbnMucHVzaChuZXcgT2NjdXJyZW5jZU9yZGVyUGx1Z2luKCkpXG4gICAgb3B0aW9ucy5wbHVnaW5zLnB1c2gobmV3IERlZHVwZVBsdWdpbigpKVxuICB9XG4gIGlmKGNvbmZpZ3MubWFpbi5zY3JpcHRzLmNvbW1vbikge1xuICAgIGlmKHR5cGVvZiBjb25maWdzLm1haW4uc2NyaXB0cy5jb21tb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb21tb25zQ2h1bmsgPSBjb25maWdzLm1haW4uc2NyaXB0cy5jb21tb25cbiAgICB9XG4gICAgb3B0aW9ucy5wbHVnaW5zLnB1c2gobmV3IENvbW1vbnNDaHVua1BsdWdpbihjb21tb25zQ2h1bmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtjb21tb25zQ2h1bmt9LmpzYCkpXG4gIH1cbiAgaWYoY29uZmlncy5tYWluLnNjcmlwdHMubGlicmFyeSkge1xuICAgIG9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSBjb25maWdzLm1haW4uc2NyaXB0cy5saWJyYXJ5XG4gICAgb3B0aW9ucy5vdXRwdXQubGlicmFyeVRhcmdldCA9ICd1bWQnXG4gIH1cbiAgcmV0dXJuIGV4dGVuZCh0cnVlLCBvcHRpb25zLCBjb25maWdzLm1haW4uc2NyaXB0cy53ZWJwYWNrKVxufVxuXG5mdW5jdGlvbiBlbnRyaWVzKCkge1xuICBjb25zdCBzb3VyY2UgPSBqb2luKGNvbmZpZ3MubWFpbi5wYXRocy5zb3VyY2Uucm9vdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWdzLm1haW4ucGF0aHMuc291cmNlLnNjcmlwdHMsXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlncy5tYWluLmdsb2JzLmJ1aWxkLnNjcmlwdHMpXG5cbiAgcmV0dXJuIGZpbmQoW3NvdXJjZV0uY29uY2F0KHJ1bXAuY29uZmlncy5tYWluLmdsb2JzLmdsb2JhbCkpXG4gICAgLm1hcChmaWxlbmFtZSA9PiBiYXNlbmFtZShmaWxlbmFtZSkpXG4gICAgLnJlZHVjZSgob2JqLCBmaWxlbmFtZSkgPT4ge1xuICAgICAgb2JqW2Jhc2VuYW1lKGZpbGVuYW1lLCBleHRuYW1lKGZpbGVuYW1lKSldID0gZmlsZW5hbWVcbiAgICAgIHJldHVybiBvYmpcbiAgICB9LCB7fSlcbn1cblxuZnVuY3Rpb24gZmlsZW5hbWVUZW1wbGF0ZSh7YWJzb2x1dGVSZXNvdXJjZVBhdGh9KSB7XG4gIHJldHVybiBgJHtwcm90b2NvbH0ke2Fic29sdXRlUmVzb3VyY2VQYXRoLnNwbGl0KHNlcCkuam9pbignLycpfWBcbn1cbiJdfQ==