diff --git a/static.webpack.config.dev.js b/static.webpack.config.dev.js index 9ef8594..f3e4b9e 100644 --- a/static.webpack.config.dev.js +++ b/static.webpack.config.dev.js @@ -1,4 +1,5 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); +const TerserPlugin = require('terser-webpack-plugin'); const webpack = require('webpack'); const path = require('path'); const ROOT_PATH = path.resolve(__dirname); @@ -8,130 +9,106 @@ const NODE_MODULES_PATH = path.resolve(ROOT_PATH, 'node_modules'); const ENTRY_FILE = path.resolve(APP_PATH, 'index'); const TEMPLATE_FILE = path.resolve(APP_PATH, 'index.html'); //html -module.exports = { - mode: 'development', - devtool: 'source-map', - entry: { - app: ENTRY_FILE, - vendor: [ - "angular", - '@uirouter/angularjs' - ] - }, - output: { - path: BUILD_PATH, - filename: 'js/[name].[hash:8].js', - chunkFilename: '[name].[chunkhash:8].js', - publicPath: '/' - }, - module: { - rules: [ - { - test: /\.html$/, - use: { - loader: 'html-loader', - options: { - exportAsEs6Default: true, - minimize: true, - removeComments: true +module.exports = [ + { + mode: 'development', + devtool: 'source-map', + entry: { + app: ENTRY_FILE, + vendor: [ + "angular", + '@uirouter/angularjs' + ] + }, + output: { + path: BUILD_PATH, + filename: 'js/[name].[hash:8].js', + chunkFilename: '[name].[chunkhash:8].js', + publicPath: '/' + }, + devServer: { + hot: true, + contentBase: BUILD_PATH, + port: 3000, + publicPath: '/' + }, + plugins: [ + new HtmlWebpackPlugin({ + filename: path.resolve(BUILD_PATH, 'index.html'), + template: TEMPLATE_FILE, + hash: false, + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin() + ], + optimization: { + splitChunks: { + cacheGroups: { + common: { + chunks: 'all', + minChunks: 2, + maxInitialRequests: 5, + minSize: 0, + name: 'common' + }, + vendor: { + test: /node_modules/, + chunks: 'all', + name: 'vendor', + priority: 10, + enforce: true, + minChunks: 2 } } - }, - { - test: /\.css$/, - exclude: NODE_MODULES_PATH, - use: ['style-loader', 'css-loader', 'postcss-loader'], - include: APP_PATH - }, - { - test: /\.less$/, - use: ['style-loader', 'css-loader', 'postcss-loader', 'less-loader'], - }, - { - test: /\.scss$/, - exclude: NODE_MODULES_PATH, - use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'], - include: APP_PATH - }, - { - test: /\.(eot|woff|ttf|woff2)(\?|$)/, - exclude: NODE_MODULES_PATH, - use: { - loader: 'file-loader', - options: { - name: '[name].[ext]' + } + }, + resolve: { + extensions: ['.js', '.ts', '.less', '.scss', '.css'], + alias: { + '@': APP_PATH, + } + } + }, + { + mode: 'development', + entry: path.resolve(__dirname, 'lib/FrontblockLib.js'), + output: { + path: path.resolve(__dirname, 'static'), + filename: 'FrontblockLib.js', + }, + module: { + rules: [ + { test: /\FrontblockLib.ts/, use: 'ts-loader' } + ] + }, + optimization: { + minimizer: [new TerserPlugin({ + cache: true, + parallel: true, + terserOptions:{ + mangle: false, + keep_classnames: true } - }, - include: APP_PATH - }, - { - test: /\.(png|jpg|gif|svg)$/, - exclude: NODE_MODULES_PATH, - use: { - loader: 'url-loader', - options: { - limit: 8192, - name: 'images/[name].[hash:8].[ext]' - } - }, - include: APP_PATH - }, - { - test: /\.ts$/, - exclude: NODE_MODULES_PATH, - use: [ - 'ts-loader', - { - loader: 'tslint-loader', - options: { - configFile: ROOT_PATH + '/tslint.json' + })], + splitChunks: { + cacheGroups: { + common: { + chunks: 'all', + minChunks: 2, + maxInitialRequests: 5, + minSize: 0, + name: 'common' + }, + vendor: { + test: /node_modules/, + chunks: 'all', + name: 'vendor', + priority: 10, + enforce: true, + minChunks: 2 } } - ], - include: APP_PATH - } - ] - }, - devServer: { - hot: true, - contentBase: BUILD_PATH, - port: 3000, - publicPath: '/' - }, - plugins: [ - new HtmlWebpackPlugin({ - filename: path.resolve(BUILD_PATH, 'index.html'), - template: TEMPLATE_FILE, - hash: false, - }), - new webpack.HotModuleReplacementPlugin(), - new webpack.NamedModulesPlugin() - ], - optimization: { - splitChunks: { - cacheGroups: { - common: { - chunks: 'all', - minChunks: 2, - maxInitialRequests: 5, - minSize: 0, - name: 'common' - }, - vendor: { - test: /node_modules/, - chunks: 'all', - name: 'vendor', - priority: 10, - enforce: true, - minChunks: 2 } } - } - }, - resolve: { - extensions: ['.js', '.ts', '.less', '.scss', '.css'], - alias: { - '@': APP_PATH, - } } -} \ No newline at end of file +]; \ No newline at end of file