代码拉取完成,页面将自动刷新
const webpack = require('webpack');
const ReplaceInFileWebpackPlugin = require('replace-in-file-webpack-plugin');
const path = require('path');
const fs = require('fs');
const md5 = require('md5');
const BabiliPlugin = require('babili-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
function readFileContent(match) {
return fs.readFileSync(match);
}
module.exports = {
devtool: 'source-map',
entry: {
org: [
'babel-polyfill',
'./script/org.app.js',
],
mobile: [
'babel-polyfill',
'./script/mobile.app.js',
],
},
output: {
path: path.resolve(__dirname, 'www'),
filename: '[name].bundle.js',
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(true), // 该插件在2.0版本已经默认启用并且重命名
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production'),
},
}),
new UglifyJsPlugin(),
// new webpack.optimize.UglifyJsPlugin({
// sourceMap: false,
// minimize: true,
// compress: {
// warnings: true,
// },
// }),
new ReplaceInFileWebpackPlugin([{
dir: './',
test: /\.bundle\.js$/,
rules: [{
search: /\/images\/((?!:).){0,30}\.(jpe?g|png|gif|svg)/g,
replace: function (match) {
return match + '?' + md5(readFileContent(__dirname + '/www' + match));
},
}],
}]),
],
module: {
rules: [
{
test: /\.js$/,
use: [{ loader: 'babel-loader' }],
exclude: /node_modules/,
},
{
test: /\.scss$/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' },
{ loader: 'sass-loader', options: { sourceMap: true } },
],
},
{
test: /\.css$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }],
},
],
},
devServer: {
progress: true,
colors: true,
contentBase: './www',
port: 3001,
host: '0.0.0.0',
},
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。