phenomic
Version:
Modern website generator based on the React and Webpack ecosystem.
84 lines (58 loc) • 2.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cacheDir = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _path = require("path");
var _webpack = require("webpack");
var _findCacheDir = require("find-cache-dir");
var _findCacheDir2 = _interopRequireDefault(_findCacheDir);
var _configCommon = require("./config.common.js");
var _configCommon2 = _interopRequireDefault(_configCommon);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var UglifyJsPlugin = _webpack.optimize.UglifyJsPlugin;
var chunkNameNode = "phenomic.node";
var cacheDir = exports.cacheDir = (0, _findCacheDir2.default)({ name: "phenomic/webpack-node-build" });
var defaultExternals = [
// we could consider node_modules as externals deps
// and so use something like
// /^[A-Za-z0-9-_]/
// to not bundle all deps in the static build (for perf)
// the problem is that if people rely on node_modules for stuff
// like css, this breaks their build.
// Glamor integration
"glamor", "glamor/server",
// Aprodite integration
"aphrodite"];
var sourceMapSupport = require.resolve("source-map-support/register")
// windows support
.replace(/\\/g, "/");
var requireSourceMapSupport = "require('" + sourceMapSupport + "');";
exports.default = function (config) {
var webpackConfig = (0, _configCommon2.default)(config);
return _extends({}, webpackConfig, {
entry: _defineProperty({}, chunkNameNode, (0, _path.join)(config.cwd, config.scriptNode)),
output: _extends({}, webpackConfig.output, {
path: cacheDir,
libraryTarget: "commonjs2",
filename: (0, _path.basename)(config.scriptNode, ".js") + ".bundle.js"
}),
target: "node",
// externals for package/relative name
externals: [].concat(_toConsumableArray(webpackConfig.externals || defaultExternals), [
// keep the loader plugin cache in memory
"phenomic/lib/loader/index", "phenomic/lib/loader/plugin"]),
// sourcemaps
devtool: "#source-map",
plugins: [].concat(_toConsumableArray(webpackConfig.plugins.filter(function (plugin) {
return !(plugin instanceof UglifyJsPlugin);
}) || []), [new _webpack.BannerPlugin({
banner: requireSourceMapSupport,
raw: true,
entryOnly: false
})])
});
};