UNPKG

electron-webpack

Version:

> Because setting up `webpack` in the `electron` environment shouldn't be difficult.

164 lines (145 loc) 6.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseTarget = undefined; var _bluebirdLst; function _load_bluebirdLst() { return _bluebirdLst = require("bluebird-lst"); } exports.configureFileLoader = configureFileLoader; var _path = _interopRequireWildcard(require("path")); var _webpack; function _load_webpack() { return _webpack = require("webpack"); } var _dll; function _load_dll() { return _dll = require("../configurators/dll"); } var _eslint; function _load_eslint() { return _eslint = require("../configurators/eslint"); } var _js; function _load_js() { return _js = require("../configurators/js"); } var _WatchMatchPlugin; function _load_WatchMatchPlugin() { return _WatchMatchPlugin = require("../plugins/WatchMatchPlugin"); } var _WebpackRemoveOldAssetsPlugin; function _load_WebpackRemoveOldAssetsPlugin() { return _WebpackRemoveOldAssetsPlugin = require("../plugins/WebpackRemoveOldAssetsPlugin"); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } class BaseTarget { configureRules(configurator) { const rules = configurator.rules; const babelLoader = (0, (_js || _load_js()).createBabelLoader)(configurator); if (configurator.type !== "main" && configurator.hasDependency("iview")) { rules.push({ test: /iview.src.*?js$/, use: babelLoader }); } rules.push({ test: /\.js$/, exclude: /(node_modules|bower_components)/, use: babelLoader }, { test: /\.node$/, use: "node-loader" }); if (configurator.hasDevDependency("nunjucks-loader")) { rules.push({ test: /\.(njk|nunjucks)$/, loader: "nunjucks-loader" }); } (0, (_eslint || _load_eslint()).configureEslint)(configurator); } configurePlugins(configurator) { return (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () { const plugins = configurator.plugins; const dllManifest = yield (0, (_dll || _load_dll()).configureDll)(configurator); if (configurator.isProduction) { if (configurator.env.minify !== false) { const BabiliWebpackPlugin = require("babel-minify-webpack-plugin"); plugins.push(new BabiliWebpackPlugin({ removeDebugger: true })); } plugins.push(new (_webpack || _load_webpack()).DefinePlugin({ "process.env.NODE_ENV": "\"production\"" })); plugins.push(new (_webpack || _load_webpack()).LoaderOptionsPlugin({ minimize: true })); // do not use ModuleConcatenationPlugin for HMR // https://github.com/webpack/webpack-dev-server/issues/949 plugins.push(new (_webpack || _load_webpack()).optimize.ModuleConcatenationPlugin()); } else { configureDevelopmentPlugins(configurator); } if (configurator.env.autoClean !== false) { plugins.push(new (_WebpackRemoveOldAssetsPlugin || _load_WebpackRemoveOldAssetsPlugin()).WebpackRemoveOldAssetsPlugin(dllManifest)); } plugins.push(new (_webpack || _load_webpack()).NoEmitOnErrorsPlugin()); const additionalEnvironmentVariables = Object.keys(process.env).filter(function (it) { return it.startsWith("ELECTRON_WEBPACK_"); }); if (additionalEnvironmentVariables.length > 0) { plugins.push(new (_webpack || _load_webpack()).EnvironmentPlugin(additionalEnvironmentVariables)); } })(); } } exports.BaseTarget = BaseTarget; function configureFileLoader(prefix, limit = 10 * 1024) { return { limit, name: `${prefix}/[name]--[folder].[ext]` }; } function isAncestor(file, dir) { return file.length > dir.length && file[dir.length] === _path.sep && file.startsWith(dir); } function configureDevelopmentPlugins(configurator) { const plugins = configurator.plugins; const debug = configurator.debug; plugins.push(new (_webpack || _load_webpack()).NamedModulesPlugin()); plugins.push(new (_webpack || _load_webpack()).DefinePlugin({ __static: `"${_path.join(configurator.projectDir, "static").replace(/\\/g, "\\\\")}"` })); plugins.push(new (_webpack || _load_webpack()).HotModuleReplacementPlugin()); if (configurator.hasDevDependency("webpack-build-notifier")) { const WebpackNotifierPlugin = require("webpack-build-notifier"); plugins.push(new WebpackNotifierPlugin({ title: `Webpack - ${configurator.type}`, suppressSuccess: "initial", sound: false })); } if (configurator.hasDevDependency("webpack-notifier")) { const WebpackNotifierPlugin = require("webpack-notifier"); plugins.push(new WebpackNotifierPlugin({ title: `Webpack - ${configurator.type}` })); } const watchIgnore = [configurator.commonDistDirectory, _path.join(configurator.projectDir, "build"), _path.join(configurator.projectDir, "dist"), _path.join(configurator.projectDir, "node_modules"), _path.join(configurator.projectDir, "static"), _path.join(configurator.projectDir, ".idea"), _path.join(configurator.projectDir, ".vscode"), configurator.getSourceDirectory(configurator.type === "main" ? "renderer" : "main")]; if (configurator.type !== "test") { watchIgnore.push(_path.join(configurator.projectDir, "test")); } if (debug.enabled) { debug(`Watch ignore: ${watchIgnore.join(", ")}`); } // watch common code let commonSourceDir = configurator.electronWebpackConfiguration.commonSourceDirectory; if (commonSourceDir == null) { // not src/common, because it is convenient to just put some code into src to use it commonSourceDir = _path.join(configurator.projectDir, "src"); } const alienSourceDir = configurator.getSourceDirectory(configurator.type === "main" ? "renderer" : "main"); configurator.plugins.push(new (_WatchMatchPlugin || _load_WatchMatchPlugin()).WatchFilterPlugin(file => { return file === commonSourceDir || isAncestor(file, commonSourceDir) && alienSourceDir != null && !file.startsWith(alienSourceDir); }, require("debug")(`electron-webpack:watch-${configurator.type}`))); } //# sourceMappingURL=BaseTarget.js.map