The minification change the class name so constructor.name not give back the correct class name. Introduced getName() method in KeyAction and MacroAction Abstract class
472 lines
16 KiB
JavaScript
472 lines
16 KiB
JavaScript
const AOT_BUILD = process.env.AOT_BUILD;
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
|
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
const autoprefixer = require('autoprefixer');
|
|
const postcssUrl = require('postcss-url');
|
|
const cssnano = require('cssnano');
|
|
|
|
const { NoEmitOnErrorsPlugin, SourceMapDevToolPlugin, NamedModulesPlugin } = require('webpack');
|
|
const { GlobCopyWebpackPlugin, BaseHrefWebpackPlugin } = require('@angular/cli/plugins/webpack');
|
|
const { CommonsChunkPlugin } = require('webpack').optimize;
|
|
const { AotPlugin } = require('@ngtools/webpack');
|
|
|
|
const nodeModules = path.join(process.cwd(), 'node_modules');
|
|
const realNodeModules = fs.realpathSync(nodeModules);
|
|
const genDirNodeModules = path.join(process.cwd(), 'src', '$$_gendir', 'node_modules');
|
|
const entryPoints = ["inline","polyfills","sw-register","scripts","styles","vendor","main"];
|
|
const minimizeCss = AOT_BUILD;
|
|
const baseHref = "";
|
|
const deployUrl = "";
|
|
const postcssPlugins = function () {
|
|
// safe settings based on: https://github.com/ben-eb/cssnano/issues/358#issuecomment-283696193
|
|
const importantCommentRe = /@preserve|@license|[@#]\s*source(?:Mapping)?URL|^!/i;
|
|
const minimizeOptions = {
|
|
autoprefixer: false,
|
|
safe: true,
|
|
mergeLonghand: false,
|
|
discardComments: { remove: (comment) => !importantCommentRe.test(comment) }
|
|
};
|
|
return [
|
|
postcssUrl({
|
|
url: (URL) => {
|
|
// Only convert root relative URLs, which CSS-Loader won't process into require().
|
|
if (!URL.startsWith('/') || URL.startsWith('//')) {
|
|
return URL;
|
|
}
|
|
if (deployUrl.match(/:\/\//)) {
|
|
// If deployUrl contains a scheme, ignore baseHref use deployUrl as is.
|
|
return `${deployUrl.replace(/\/$/, '')}${URL}`;
|
|
}
|
|
else if (baseHref.match(/:\/\//)) {
|
|
// If baseHref contains a scheme, include it as is.
|
|
return baseHref.replace(/\/$/, '') +
|
|
`/${deployUrl}/${URL}`.replace(/\/\/+/g, '/');
|
|
}
|
|
else {
|
|
// Join together base-href, deploy-url and the original URL.
|
|
// Also dedupe multiple slashes into single ones.
|
|
return `/${baseHref}/${deployUrl}/${URL}`.replace(/\/\/+/g, '/');
|
|
}
|
|
}
|
|
}),
|
|
autoprefixer(),
|
|
].concat(minimizeCss ? [cssnano(minimizeOptions)] : []);
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
"target": "electron-renderer",
|
|
"resolve": {
|
|
"extensions": [
|
|
".ts",
|
|
".js"
|
|
],
|
|
"modules": [
|
|
"./node_modules",
|
|
"./node_modules"
|
|
],
|
|
"symlinks": true
|
|
},
|
|
"resolveLoader": {
|
|
"modules": [
|
|
"./node_modules",
|
|
"./node_modules"
|
|
]
|
|
},
|
|
"entry": {
|
|
"main": [
|
|
"./src/main-renderer.ts"
|
|
],
|
|
"polyfills": [
|
|
"./src/polyfills.ts"
|
|
],
|
|
"scripts": [
|
|
"script-loader!./node_modules/bootstrap/dist/js/bootstrap.js",
|
|
"script-loader!./node_modules/select2/dist/js/select2.full.js"
|
|
],
|
|
"styles": [
|
|
"./node_modules/bootstrap/dist/css/bootstrap.min.css",
|
|
"./src/styles.scss"
|
|
]
|
|
},
|
|
"output": {
|
|
"path": path.join(__dirname, "../uhk-agent/dist/renderer"),
|
|
"filename": "[name].bundle.js",
|
|
"chunkFilename": "[id].chunk.js"
|
|
},
|
|
"module": {
|
|
"rules": [
|
|
{
|
|
"enforce": "pre",
|
|
"test": /\.js$/,
|
|
"loader": "source-map-loader",
|
|
"exclude": [
|
|
/\/node_modules\//
|
|
]
|
|
},
|
|
{
|
|
"test": /\.json$/,
|
|
"loader": "json-loader"
|
|
},
|
|
{
|
|
"test": /\.html$/,
|
|
"loader": "raw-loader"
|
|
},
|
|
{
|
|
"test": /\.(eot|svg)$/,
|
|
"loader": "file-loader?name=[name].[hash:20].[ext]"
|
|
},
|
|
{
|
|
"test": /\.(jpg|png|webp|gif|otf|ttf|woff|woff2|cur|ani)$/,
|
|
"loader": "url-loader?name=[name].[hash:20].[ext]&limit=10000"
|
|
},
|
|
{
|
|
"exclude": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.css$/,
|
|
"use": [
|
|
"exports-loader?module.exports.toString()",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"exclude": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.scss$|\.sass$/,
|
|
"use": [
|
|
"exports-loader?module.exports.toString()",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "sass-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"precision": 8,
|
|
"includePaths": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"exclude": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.less$/,
|
|
"use": [
|
|
"exports-loader?module.exports.toString()",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "less-loader",
|
|
"options": {
|
|
"sourceMap": false
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"exclude": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.styl$/,
|
|
"use": [
|
|
"exports-loader?module.exports.toString()",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "stylus-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"paths": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.css$/,
|
|
"use": [
|
|
"style-loader",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.scss$|\.sass$/,
|
|
"use": [
|
|
"style-loader",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "sass-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"precision": 8,
|
|
"includePaths": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.less$/,
|
|
"use": [
|
|
"style-loader",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "less-loader",
|
|
"options": {
|
|
"sourceMap": false
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": [
|
|
path.join(process.cwd(), "node_modules/bootstrap/dist/css/bootstrap.min.css"),
|
|
path.join(process.cwd(), "src/styles.scss")
|
|
],
|
|
"test": /\.styl$/,
|
|
"use": [
|
|
"style-loader",
|
|
{
|
|
"loader": "css-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"importLoaders": 1
|
|
}
|
|
},
|
|
{
|
|
"loader": "postcss-loader",
|
|
"options": {
|
|
"ident": "postcss",
|
|
"plugins": postcssPlugins
|
|
}
|
|
},
|
|
{
|
|
"loader": "stylus-loader",
|
|
"options": {
|
|
"sourceMap": false,
|
|
"paths": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"test": /\.ts$/,
|
|
"loader": "@ngtools/webpack"
|
|
}
|
|
]
|
|
},
|
|
"plugins": [
|
|
new NoEmitOnErrorsPlugin(),
|
|
new GlobCopyWebpackPlugin({
|
|
"patterns": [
|
|
"assets",
|
|
"favicon.ico"
|
|
],
|
|
"globOptions": {
|
|
"cwd": path.join(process.cwd(), "src"),
|
|
"dot": true,
|
|
"ignore": "**/.gitkeep"
|
|
}
|
|
}),
|
|
new ProgressPlugin(),
|
|
new HtmlWebpackPlugin({
|
|
"template": "./src/index.html",
|
|
"filename": "./index.html",
|
|
"hash": false,
|
|
"inject": true,
|
|
"compile": true,
|
|
"favicon": false,
|
|
"minify": !AOT_BUILD ? false : {
|
|
removeAttributeQuotes: true,
|
|
collapseWhitespace: true,
|
|
html5: true,
|
|
minifyCSS: true,
|
|
removeComments: true,
|
|
removeEmptyAttributes: true,
|
|
},
|
|
"cache": true,
|
|
"showErrors": true,
|
|
"chunks": "all",
|
|
"excludeChunks": [],
|
|
"title": "Webpack App",
|
|
"xhtml": true,
|
|
"chunksSortMode": function sort(left, right) {
|
|
let leftIndex = entryPoints.indexOf(left.names[0]);
|
|
let rightindex = entryPoints.indexOf(right.names[0]);
|
|
if (leftIndex > rightindex) {
|
|
return 1;
|
|
}
|
|
else if (leftIndex < rightindex) {
|
|
return -1;
|
|
}
|
|
else {
|
|
return 0;
|
|
}
|
|
}
|
|
}),
|
|
new BaseHrefWebpackPlugin({ baseHref: '' }),
|
|
new CommonsChunkPlugin({
|
|
"minChunks": 2,
|
|
"async": "common"
|
|
}),
|
|
new CommonsChunkPlugin({
|
|
"name": [
|
|
"inline"
|
|
],
|
|
"minChunks": null
|
|
}),
|
|
new CommonsChunkPlugin({
|
|
"name": [
|
|
"vendor"
|
|
],
|
|
"minChunks": (module) => {
|
|
return module.resource
|
|
&& (module.resource.startsWith(nodeModules)
|
|
|| module.resource.startsWith(genDirNodeModules)
|
|
|| module.resource.startsWith(realNodeModules));
|
|
},
|
|
"chunks": [
|
|
"main"
|
|
]
|
|
}),
|
|
new SourceMapDevToolPlugin({
|
|
"filename": "[file].map[query]",
|
|
"moduleFilenameTemplate": "[resource-path]",
|
|
"fallbackModuleFilenameTemplate": "[resource-path]?[hash]",
|
|
"sourceRoot": "webpack:///"
|
|
}),
|
|
new NamedModulesPlugin({}),
|
|
new AotPlugin({
|
|
"mainPath": "main-renderer.ts",
|
|
"hostReplacementPaths": {
|
|
"environments/environment.ts": "environments/environment.ts"
|
|
},
|
|
"exclude": [],
|
|
"tsConfigPath": "src/tsconfig.renderer.json",
|
|
"skipCodeGeneration": !process.env.AOT_BUILD
|
|
})
|
|
],
|
|
"node": {
|
|
"fs": true,
|
|
"global": true,
|
|
"crypto": "empty",
|
|
"tls": "empty",
|
|
"net": "empty",
|
|
"process": true,
|
|
"module": false,
|
|
"clearImmediate": false,
|
|
"setImmediate": false
|
|
},
|
|
"devServer": {
|
|
"historyApiFallback": true
|
|
}
|
|
};
|