vue - webpack.prod.conf.js

描述:webpack打包项目时的配置文件.

命令:yarn run buildnpm run build

打包后,生成的文件在dist文件夹下

打包后,要在服务器环境下运行!!!

关于怎样运行,请查看:https://www.cnblogs.com/cisum/p/9370163.html ,

  1 ‘use strict‘
  2
  3 // 路径
  4 const path = require(‘path‘)
  5 // utils
  6 const utils = require(‘./utils‘)
  7 // webpack打包
  8 const webpack = require(‘webpack‘)
  9 // 来自cofig/index.js
 10 const config = require(‘../config‘)
 11 // 对象合并
 12 const merge = require(‘webpack-merge‘)
 13 // webpack基本配置
 14 const baseWebpackConfig = require(‘./webpack.base.conf‘)
 15
 16 const CopyWebpackPlugin = require(‘copy-webpack-plugin‘)
 17 const HtmlWebpackPlugin = require(‘html-webpack-plugin‘)
 18 const ExtractTextPlugin = require(‘extract-text-webpack-plugin‘)
 19 const OptimizeCSSPlugin = require(‘optimize-css-assets-webpack-plugin‘)
 20 const UglifyJsPlugin = require(‘uglifyjs-webpack-plugin‘)
 21
 22
 23 const env = require(‘../config/prod.env‘)
 24
 25 const webpackConfig = merge(baseWebpackConfig, {
 26   module: {
 27     rules: utils.styleLoaders({
 28       sourceMap: config.build.productionSourceMap,
 29       extract: true,
 30       usePostCSS: true
 31     })
 32   },
 33   devtool: config.build.productionSourceMap ? config.build.devtool : false,
 34   output: {
 35     path: config.build.assetsRoot,
 36     filename: utils.assetsPath(‘js/[name].[chunkhash].js‘),
 37     chunkFilename: utils.assetsPath(‘js/[id].[chunkhash].js‘)
 38   },
 39   plugins: [
 40     // http://vuejs.github.io/vue-loader/en/workflow/production.html
 41     new webpack.DefinePlugin({
 42       ‘process.env‘: env
 43     }),
 44     // 混淆加密JavaScript
 45     new UglifyJsPlugin({
 46       uglifyOptions: {
 47         compress: {
 48           warnings: false
 49         }
 50       },
 51       sourceMap: config.build.productionSourceMap,
 52       parallel: true
 53     }),
 54     // 将css提取到自己的文件中
 55     new ExtractTextPlugin({
 56       filename: utils.assetsPath(‘css/[name].[contenthash].css‘),
 57       //将以下选项设置为“false”将不会从codesplit块中提取CSS。
 58       //当webpack加载了codesplit块时,他们的CSS将使用style-loader动态插入。
 59       //它当前设置为“true”,因为我们看到源代码包含在codesplit包中,当它是“false”时,
 60       //增加文件大小:https://github.com/vuejs-templates/webpack/issues/1110
 61       allChunks: true,
 62     }),
 63     //压缩提取的CSS。 我们正在使用这个插件,以便可能
 64     //可以删除来自不同组件的重复CSS。
 65     new OptimizeCSSPlugin({
 66       cssProcessorOptions: config.build.productionSourceMap
 67         ? { safe: true, map: { inline: false } }
 68         : { safe: true }
 69     }),
 70     //使用正确的资产哈希生成dist index.html以进行缓存。
 71     //您可以通过编辑/index.html来自定义输出
 72     new HtmlWebpackPlugin({
 73       filename: config.build.index,
 74       template: ‘index.html‘,
 75       inject: true,
 76       minify: {
 77         removeComments: true,
 78         collapseWhitespace: true,
 79         removeAttributeQuotes: true
 80         // 更多选项:
 81         // https://github.com/kangax/html-minifier#options-quick-reference
 82       },
 83       // 通过CommonsChunkPlugin持续使用多个块的必要条件
 84       chunksSortMode: ‘dependency‘
 85     }),
 86     // 原本模块没有改变时,保持module.id稳定
 87     new webpack.HashedModuleIdsPlugin(),
 88     // enable scope hoisting
 89     new webpack.optimize.ModuleConcatenationPlugin(),
 90     // 将原本模块js拆分为自己的文件
 91     new webpack.optimize.CommonsChunkPlugin({
 92       name: ‘vendor‘,
 93       minChunks(module) {
 94         // node_modules中的任何必需模块都将解压缩到原模块
 95         return (
 96           module.resource &&
 97           /\.js$/.test(module.resource) &&
 98           module.resource.indexOf(
 99             path.join(__dirname, ‘../node_modules‘)
100           ) === 0
101         )
102       }
103     }),
104
105     //将webpack运行时和模块清单提取到自己的文件中
106     //每当应用程序包更新时,都会阻止更新供应商哈希
107     new webpack.optimize.CommonsChunkPlugin({
108       name: ‘manifest‘,
109       minChunks: Infinity
110     }),
111
112     //此实例从代码拆分块中提取共享块并捆绑它们
113     //在一个单独的块中,类似于供应商块
114     // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
115     new webpack.optimize.CommonsChunkPlugin({
116       name: ‘app‘,
117       async: ‘vendor-async‘,
118       children: true,
119       minChunks: 3
120     }),
121
122     // 复制自定义静态目录
123     new CopyWebpackPlugin([
124       {
125         from: path.resolve(__dirname, ‘../static‘),
126         to: config.build.assetsSubDirectory,
127         ignore: [‘.*‘]
128       }
129     ])
130   ]
131 })
132
133
134 // 配置Gzip压缩
135 if (config.build.productionGzip) {
136   const CompressionWebpackPlugin = require(‘compression-webpack-plugin‘)
137
138   webpackConfig.plugins.push(
139     new CompressionWebpackPlugin({
140       asset: ‘[path].gz[query]‘,
141       algorithm: ‘gzip‘,
142       test: new RegExp(
143         ‘\\.(‘ +
144         config.build.productionGzipExtensions.join(‘|‘) +
145         ‘)$‘
146       ),
147       threshold: 10240,
148       minRatio: 0.8
149     })
150   )
151 }
152
153 // 使用交互式可缩放树形图可视化webpack输出文件的大小
154 if (config.build.bundleAnalyzerReport) {
155   const BundleAnalyzerPlugin = require(‘webpack-bundle-analyzer‘).BundleAnalyzerPlugin
156   webpackConfig.plugins.push(new BundleAnalyzerPlugin())
157 }
158
159 module.exports = webpackConfig

11

原文地址:https://www.cnblogs.com/cisum/p/9612553.html

时间: 2024-10-03 04:54:24

vue - webpack.prod.conf.js的相关文章

vue-cli脚手架之webpack.prod.conf.js

webpack.prod.conf.js 生产环境配置文件: 'use strict'//js严格模式执行 const path = require('path')//这个模块是发布到NPM注册中心的NodeJS"路径"模块的精确副本 const utils = require('./utils')//utils.js文件 const webpack = require('webpack')//webpack模块 const config = require('../config')/

vue - webpack.base.conf.js

描述:webapck基本配置文件. 为了给开发文件和打包文件(webpack.dev.conf.js|| webpack.prod.conf.js) 提供方便. 1 'use strict' 2 // 路径 3 const path = require('path') 4 // build/utils.js 5 const utils = require('./utils') 6 // config/index.js 7 const config = require('../config') 8

vue-cli脚手架npm相关文件说明-2、webpack.prod.conf.js

下面介绍webpack.prod.conf.js中相关配置代码和配置的说明,建议先查阅build/webpack.prod.conf.js /* * Webpack 生产环境配置文件,用于生产环境执行Build * 执行Build 主要是用Webpack执行这里的配置 * 建议先查阅webapck.base.conf.js ../config/index.js */ var path = require('path') var utils = require('./utils') // 下面是u

vue-cli脚手架build目录中的webpack.prod.conf.js配置文件

// 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = require('./utils') // 下面引入webpack,来使用webpack内置插件 var webpack = require('webpack') // 下面是config目录下的index.js配置文件,主要用来定义了生产和开发环境的相关基础配置 var config = require

vue - webpack.dev.conf.js

1 'use strict' 2 3 // build/util.js 4 const utils = require('./utils') 5 // node_modules里面的webpack 6 const webpack = require('webpack') 7 // config/index.js 8 const config = require('../config') 9 // 对象合并 10 const merge = require('webpack-merge') 11

webpack.prod.conf.js

var path = require('path')var utils = require('./utils')var webpack = require('webpack')var config = require('../config')var merge = require('webpack-merge')var baseWebpackConfig = require('./webpack.base.conf')var HtmlWebpackPlugin = require('html-w

vue - webpack.dev.conf.js for merge

webpack-merge提供了一个merge连接数组并合并创建新对象的对象的函数.如果遇到函数,它将执行它们,通过算法运行结果,然后再次将返回的值包装在函数中. 这种行为在配置webpack时特别有用,尽管它有超出它的用途.无论何时需要合并配置对象,webpack-merge都可以派上用场. 栗子: 1 const devWebpackConfig = merge(baseWebpackConfig, { 2 module: { 3 rules: utils.styleLoaders({ so

vue - webpack.dev.conf.js for HtmlWebpackPlugin

描述: 这是一个webpack插件,可以简化HTML文件的创建,为您的webpack捆绑服务提供服务. 这对于webpack包含文件名中包含哈希值的bundle 来说尤其有用,它会更改每个编译. 您可以让插件为您生成HTML文件,使用lodash模板提供您自己的模板或使用您自己的加载器. 官网:https://www.npmjs.com/package/html-webpack-plugin 原文地址:https://www.cnblogs.com/cisum/p/9612459.html

vue - webpack.dev.conf.js for FriendlyErrorsPlugin

描述:webpack网页端友好的报错信息就来自它 官网:https://www.npmjs.com/package/friendly-errors-webpack-plugin 1 new FriendlyErrorsPlugin({ 2 // 运行成功 3 compilationSuccessInfo:{ 4 message:['你的应用程序在这里运行http:// localhost:3000'], 5 notes:['有些附加说明要在成功编辑时显示'] 6 }, 7 // 运行错误 8 o