UNPKG

easysetcookie

Version:

做一个方便查看和设置cookie的项目

152 lines (145 loc) 3.62 kB
/** * webpack.common.js * @authors hblvsjtu (hblvsjtu@163.com) * @date 2019-11-24 15:25:54 * @version 1.0.0 */ const webpack = require('webpack'); const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const config = require('../config/index'); const plugins = [ new webpack.BannerPlugin('版权所有,翻版必究'), new CleanWebpackPlugin('dist'), new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: 'body' }) ]; const optimization = { runtimeChunk: { name: entrypoint => `runtime~${entrypoint.name}` } }; if (config.staticAssertsPath) { plugins.push(new CopyWebpackPlugin(config.staticAssertsPath) ); } if (config.isSplitCSS) { plugins.push(new ExtractTextPlugin('styles.css')); } if (config.isSplitChunks) { optimization.splitChunks = { chunks: 'async', minSize: 30000, maxSize: 0, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: '~', name: true, cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 }, default: { minChunks: 2, priority: -20, reuseExistingChunk: true } } }; } function dir (myPath) { if (myPath) { return path.resolve(__dirname, '../', myPath); } else { return path.resolve(__dirname, '../'); } } module.exports = { entry: { EFEProj: './src/main.js' }, output: { filename: '[name].bundle.js', path: dir('dist') }, module: { rules: [ { enforce: 'pre', test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader', options: { formatter: require('eslint-friendly-formatter'), fix: true } }, { test: /test\.js$/, use: 'mocha-loader', exclude: /node_modules/ }, { test: /\.js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } }, { test: /\.css$/, use: config.isSplitCSS ? ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }) : ['style-loader', 'css-loader'] }, { test: /\.less$/, exclude: /(node_modules|bower_components)/, use: config.isSplitCSS ? ExtractTextPlugin.extract(['css-loader', 'less-loader']) : [ { loader: 'style-loader' // creates style nodes from JS strings }, { loader: 'css-loader' // translates CSS into CommonJS }, { loader: 'less-loader' // compiles Less to CSS }] }, { test: /\.(png|jpg|gif)$/, exclude: /(node_modules|bower_components)/, use: [ { loader: 'file-loader', options: {} } ] } ] }, plugins, optimization, node: { // prevent webpack from injecting useless setImmediate polyfill because Vue // source contains it (although only uses it if it's native). setImmediate: false, // prevent webpack from injecting mocks to Node native modules // that does not make sense for the client dgram: 'empty', fs: 'empty', net: 'empty', tls: 'empty', child_process: 'empty' } };