标签:安装 war 文章 支持 查看 hunk scss tor comm
说在开头
上个月断断续续的在研究webpack的配置,但是很多网上的文章基本上都是只说了开发环境的配置,而忽略了生产环境的配置。大致研究了一下门路,然后就来写一篇随笔让自己能在以后能有个地方可以做参考。
正文开始
我就假装大家都是装了node的情况下。
"scripts": { "start": "NODE_ENV=dev webpack-dev-server --progress --colors" }
new webpack.DefinePlugin({ __DEV__: JSON.stringify(JSON.parse((process.env.NODE_ENV == ‘dev‘) || ‘false‘)) })
"scripts": { "start": "NODE_ENV=dev webpack-dev-server --progress --colors", "build": "rm -rf ./build && NODE_ENV=production webpack --config ./webpack.production.config.js --progress --colors" },
new webpack.DefinePlugin({ ‘process.env‘:{ ‘NODE_ENV‘: JSON.stringify(process.env.NODE_ENV) } }),
接下来把开发代环境的配置和生产环境的配置贴上
webpack.config.js
var path = require(‘path‘) var webpack = require(‘webpack‘) var HtmlWebpackPlugin = require(‘html-webpack-plugin‘); var OpenBrowserPlugin = require(‘open-browser-webpack-plugin‘); module.exports = { entry: path.resolve(__dirname, ‘app/index.js‘), output: { filename: "bundle.js" }, resolve: { extensions: [‘‘, ‘.js‘, ‘.jsx‘] }, module: { loaders: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, loader: ‘babel‘ }, { test: /\.less$/, exclude: /node_modules/, loader: ‘style!css!postcss!less‘ }, { test: /\.css$/, exclude: /node_modules/, loader: ‘style!css!postcss‘ }, { test:/\.(png|gif|jpg|jpeg|bmp)$/i, loader:‘url-loader?limit=5000‘ }, // 限制大小5kb { test:/\.(png|woff|woff2|svg|ttf|eot)($|\?)/i, loader:‘url-loader?limit=5000‘} // 限制大小小于5k ] }, postcss: [ require(‘autoprefixer‘) //调用autoprefixer插件,例如 display: flex ], plugins: [ // html 模板插件 new HtmlWebpackPlugin({ template: __dirname + ‘/app/index.html‘ }), // 热加载 new webpack.HotModuleReplacementPlugin(), // 打开浏览器 new OpenBrowserPlugin({ url: ‘http://localhost:8080‘ }), // 可在业务js代码中使用 __DEV__ 判断是否是开发环境 (dev模式下可以提示错误、测试报告等, production模式不提示) new webpack.DefinePlugin({ __DEV__: JSON.stringify(JSON.parse((process.env.NODE_ENV == ‘dev‘) || ‘false‘)), }) ], devServer: { proxy: { // 凡是 `/api` 开头的 http 请求,都会被代理到 localhost:3000 上,由 koa 提供 mock 数据。 // koa 代码在 ./mock 目录中,启动命令为 npm run mock ‘/api‘: { target: ‘http://localhost:3000‘, secure: false } }, colors: true, // 终端舒服为彩色 historyApiFallback: true, //不跳转,在开发单页应用时非常有用,它依赖于HTML5 history API,如果设置为true,所有的跳转将指向index.html inline: true, // 实时刷新 hot: true, // 使用热加载插件 HotModuleReplacementPlugin } }
webpack.production.config.js
var pkg = require(‘./package.json‘) var path = require(‘path‘) var webpack = require(‘webpack‘); var HtmlWebpackPlugin = require(‘html-webpack-plugin‘); var ExtractTextPlugin = require(‘extract-text-webpack-plugin‘); module.exports = { entry: { app: path.resolve(__dirname, ‘app/index.js‘), // 将 第三方依赖(node_modules中的) 单独打包 vendor: Object.keys(pkg.dependencies) }, output: { path: __dirname + "/build", filename: "/js/[name].[chunkhash:8].js" }, resolve:{ extensions:[‘‘, ‘.js‘,‘.jsx‘] }, module: { loaders: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, loader: ‘babel‘ }, { test: /\.less$/, exclude: /node_modules/, loader: ExtractTextPlugin.extract(‘style‘, ‘css!postcss!less‘) }, { test: /\.css$/, exclude: /node_modules/, loader: ExtractTextPlugin.extract(‘style‘, ‘css!postcss‘) }, { test:/\.(png|gif|jpg|jpeg|bmp)$/i, loader:‘url-loader?limit=5000&name=img/[name].[chunkhash:8].[ext]‘ }, { test:/\.(png|woff|woff2|svg|ttf|eot)($|\?)/i, loader:‘url-loader?limit=5000&name=fonts/[name].[chunkhash:8].[ext]‘} ] }, postcss: [ require(‘autoprefixer‘) ], plugins: [ // webpack 内置的 banner-plugin new webpack.BannerPlugin("Copyright by Nick930826@github.com."), // html 模板插件 new HtmlWebpackPlugin({ template: __dirname + ‘/app/index.html‘ }), // 定义为生产环境,编译 React 时压缩到最小 new webpack.DefinePlugin({ ‘process.env‘:{ ‘NODE_ENV‘: JSON.stringify(process.env.NODE_ENV) } }), // 为组件分配ID,通过这个插件webpack可以分析和优先考虑使用最多的模块,并为它们分配最小的ID new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { //supresses warnings, usually from module minification warnings: false } }), // 分离CSS和JS文件 new ExtractTextPlugin(‘/css/[name].[chunkhash:8].css‘), // 提供公共代码 new webpack.optimize.CommonsChunkPlugin({ name: ‘vendor‘, filename: ‘/js/[name].[chunkhash:8].js‘ }), // 可在业务 js 代码中使用 __DEV__ 判断是否是dev模式(dev模式下可以提示错误、测试报告等, production模式不提示) new webpack.DefinePlugin({ __DEV__: JSON.stringify(JSON.parse((process.env.NODE_ENV == ‘dev‘) || ‘false‘)) }) ] }
标签:安装 war 文章 支持 查看 hunk scss tor comm
原文地址:http://www.cnblogs.com/Nick-chen/p/6852162.html