使用process.argv 获取命令行使用的参数

// 判断是否带production参数,production会压缩js
var isprod = false;
for (var i in process.argv) {
if (process.argv[i] === "-p" || process.argv[i] === "--production") {
isprod = true;
break;
}
}

url-loader 路径不正确,可通过 publicPath进行配置

output: {
//context: path.resolve(__dirname, 'scripts'),
path: path.resolve(HTML_DIST_PATH, "assets"),
publicPath: '/dist/assets/',//当生成的资源文件和站点不在同一地方时需要配置改地址 e.g.:站点在src,资源生成到/src/static/dist,那么publicPath="/static/dist"
filename: "[name].[hash:6].js",
chunkFilename: "[id].chunk.js",
}

html-webpack-plugin minify: true 报错,请改成

new HtmlWebpackPlugin({
title: '',
template: currentpath,
filename: currentpath.replace("\\html\\", "\\dist\\"),
minify: {
"removeAttributeQuotes": true,
"removeComments": true,
"removeEmptyAttributes": true,
}
//chunks: ['index', 'vendors'], // 配置该html文件要添加的模块
inject: 'body'
}) //extract-text-webpack-plugin 同时使用style-loader和postcss-loader时会报错,将style-loader移除
ExtractTextPlugin.extract(["css-loader", "postcss-loader"])

完整的配置文件

var fs = require('fs');
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin'); // 自动写入将引用写入html
var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); // 提取公共模块
var ExtractTextPlugin = require("extract-text-webpack-plugin");// 默认的webpack 会将require("style.css")文件嵌入js文件中,使用该插件会将css从js中提取出来
var CleanWebpackPlugin = require('clean-webpack-plugin'); // 删除文件
var CopyWebpackPlugin = require('copy-webpack-plugin'); // 拷贝文件
var BomPlugin = require('webpack-utf8-bom');//将文件转成utf-8 bom格式,解决中文乱码的问题
var autoprefixer = require('autoprefixer')
var cssparams = JSON.stringify({ discardComments: { removeAll: false } }); var htmlMinifyOptions = require('./htmlminify.config.js'); //htmlminify的配置参数 //定义了一些文件夹的路径
var ROOT_PATH = path.resolve(__dirname);
var HTML_ROOT_PATH = path.resolve(__dirname, "html");
var HTML_SRC_PATH = path.resolve(ROOT_PATH, 'dev');
var HTML_DIST_PATH = path.resolve(ROOT_PATH, 'dist'); // process.argv 获取命令行使用的参数
// 判断是否带production参数,production会压缩js
var isprod = false;
for (var i in process.argv) {
if (process.argv[i] === "-p" || process.argv[i] === "--production") {
isprod = true;
break;
}
} var config = {
entry: {
index: path.resolve(HTML_SRC_PATH, 'index.js'),
vendors: ['jquery'],
},
output: {
//context: path.resolve(__dirname, 'scripts'),
path: path.resolve(HTML_DIST_PATH, "assets"),
publicPath: '/dist/assets/',//当生成的资源文件和站点不在同一地方时需要配置改地址 e.g.:站点在src,资源生成到/src/static/dist,那么publicPath="/static/dist"
filename: "[name].[hash:6].js",
chunkFilename: "[id].chunk.js",
},
plugins: [
new ExtractTextPlugin("styles/[name].[contenthash:6].css", { allChunks: false /*是否将分散的css文件合并成一个文件*/ }),
new CommonsChunkPlugin('vendors', 'vendors.[hash:6].js'),
new CleanWebpackPlugin(['dist', 'build'], {
root: ROOT_PATH,
verbose: true,
dry: false,
//exclude: ["dist/1.chunk.js"]
}),
//new webpack.optimize.UglifyJsPlugin({
// beautify: true,
// compress: { warnings: false, },
// output: { comments: true }
//}),
//new BomPlugin(true, /\.(cshtml)$/),//解决cshtml中文乱码的问题
],
module: {
// 解决动态js url警告错误
unknownContextRegExp: /$^/,
unknownContextCritical: false, // require(expr)
exprContextRegExp: /$^/,
exprContextCritical: false, // require("prefix" + expr + "surfix")
wrappedContextRegExp: /$^/,
wrappedContextCritical: false,
// end
loaders: [
{ test: require.resolve('jquery'), loader: 'expose?$!expose?jQuery' },// 将jQuery暴露到全局变量中
{
test: /\.css$/,
loader: ExtractTextPlugin.extract(["css-loader", "postcss-loader"]) //同时使用style-loader和postcss-loader时会报错,将style-loader移除
},
{ test: /\.(woff|woff2|eot|ttf|svg)(\?[a-z0-9]+)?$/, loader: 'url-loader?limit=1000&name=styles/fonts/[name].[hash:6].[ext]' }, // 处理图片url
{ test: /\.(png|jpg|gif)(\?[a-z0-9]+)?$/, loader: 'url-loader?limit=1000&name=styles/images/[name].[hash:8].[ext]' }, // 处理图片url limit=1000 小于1kb则生成base64
//{ test: /\.css$/, loaders: ['style-loader', 'css-loader', 'postcss-loader'] },
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel', // 'babel-loader' is also a valid name to reference
query: {
presets: ['es2015']
}
},
{ test: /\.tpl/, loader: 'art-template-loader' },
]
},
postcss: [autoprefixer()],
resolve: {
alias: {
"datepicker": "jquery-ui/ui/widgets/datepicker",
}
}
};
// 遍历所有.html文件,使用HtmlWebpackPlugin将资源文件引入html中
var htmlfiles = fs.readdirSync(HTML_ROOT_PATH);
htmlfiles.forEach(function (item) {
var currentpath = path.join(HTML_ROOT_PATH, item);
//console.log(currentpath);
var extname = path.extname(currentpath);
if (fs.statSync(currentpath).isFile()) {
//console.log("replace", currentpath.replace("\\html\\", "\\dist\\"))
config.plugins.push(new HtmlWebpackPlugin({
title: '',
template: currentpath,
filename: currentpath.replace("\\html\\", "\\dist\\"),
minify: isprod ? htmlMinifyOptions : false, // 生产模式下压缩html文件
//chunks: ['index', 'vendors'], // 配置该html文件要添加的模块
inject: 'body'
}))
}
}); module.exports = config;

最新文章

  1. PHP基础语法
  2. JavaScript子窗口调用父窗口变量和函数的方法
  3. dubbo/dubbox 增加原生thrift及avro支持
  4. 【Beta】Scrum09
  5. Mysql 慢查询和慢查询日志分析
  6. HDU 2222 Keywords Search (AC自动机)
  7. 创建指定日期java Date对象
  8. Android greenDao的简单配置和使用
  9. C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令
  10. 【Linux高频命令专题(8)】五大查询命令
  11. FCKEditor在jsp页面中的配置方法
  12. 树莓派centos安装的基本配置
  13. java_基础_接口和抽象类
  14. spring为什么推荐使用构造器注入
  15. php编程 之 php进阶练习
  16. QT listwiget 控件添加图片
  17. CSS等高布局的7种方式
  18. 【转】JavaScript 的装载和执行
  19. css动效库animate.css和swiper.js
  20. 小米3系统计算器自己定义开关控件-MySwitchView

热门文章

  1. canvas一:基本认识
  2. iOS事件拦截(实现触摸任意位置隐藏指定view)
  3. 初学hadoop,windows下安装
  4. 【linux】Crontab 定时任务 使用实例
  5. Hibernate(1)——数据访问层的架构模式<转>
  6. IIS7的HTTP到HTTPS的重定向
  7. linux 统计文件数量
  8. LinearLayout学习笔记
  9. AngularJs:Directive指令用法
  10. Asp.NET 与 WebApi 共享Session