多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 生产坏境构建 > 开发环境(development)和生产环境(production)的构建目标差异很大。在开发环境中,我们需要具有强大的、具有实时重新加载(live reloading)或热模块替换(hot module replacement)能力的 source map 和 localhost server。而在生产环境中,我们的目标则转向于关注更小的 bundle,更轻量的 source map,以及更优化的资源,以改善加载时间。由于要遵循逻辑分离,我们通常建议为每个环境编写彼此独立的 webpack 配置。 > 文档看[这里](https://doc.webpack-china.org/guides/production) 首先先创建一个生产环境的配置文件: `touch webpack.config.js` 在`webpack.dev.config.js`的基础上先做以下几个修改~ 1. 先删除`webpack-dev-server`相关的东西~ 2. `devtool`的值改成`cheap-module-source-map` 3. 刚才说的`hash`改成`chunkhash` ~~~ 'use strict' const path = require('path') const webpack = require('webpack') const HtmlWebpackPlugin = require('html-webpack-plugin') function resolve (dir) { return path.join(__dirname, dir) } module.exports = { entry: { app: [ path.join(__dirname, 'src/index.js') ], // 把react等库生成打包到vendor.hash.js里面去。 vendor: ['react', 'react-router-dom', 'redux', 'react-dom', 'react-redux'] }, // 输出到dist文件夹,输出文件名bundle.js output: { path: path.join(__dirname, './dist'), filename: '[name].[chunkhash].js', chunkFilename: '[name].[chunkhash].js' }, // 开发工具 devtool: 'cheap-module-source-map', // 路径别名配置 resolve: { alias: { '@': resolve('src'), pages: resolve('src/pages'), components: resolve('src/components'), router: resolve('src/router'), actions: resolve('src/redux/actions'), reducers: resolve('src/redux/reducers'), } }, /*src文件夹下面的以.js结尾的文件,要使用babel解析*/ /*cacheDirectory是用来缓存编译结果,下次编译加速*/ module: { rules: [{ test: /\.js$/, use: ['babel-loader?cacheDirectory=true'], include: path.join(__dirname, 'src') }, { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.(png|jpg|gif)$/, use: [{ loader: 'url-loader', options: { limit: 8192 } }] }] }, // 定义webpack插件 plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', template: path.join(__dirname, 'src/index.html') }), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor' }) ] } ~~~ 然后在`package.json`增加打包脚本 ~~~ "build": "webpack --config webpack.config.js" ~~~ 然后执行`npm run build` ,看看`dist`文件夹是不是生成了我们发布要用的所有文件? 简单的正式环境部署脚本就是这样,接下来优化正式环境的配置文件。