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-webpack-plugin‘)

// 用于从webpack生成的bundle中提取文本到特定文件中的插件
// 可以抽取出css,js文件将其与webpack输出的bundle分离

var ExtractTextPlugin = require(‘extract-text-webpack-plugin‘)

var env = process.env.NODE_ENV === ‘testing‘
? require(‘../config/test.env‘)
: config.build.env

// 合并基础的webpack配置
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},

devtool: config.build.productionSourceMap ? ‘#source-map‘ : false,
// 配置webpack的输出
output: {
// 编译输出目录
path: config.build.assetsRoot,
// 编译输出文件名格式
filename: utils.assetsPath(‘js/[name].[chunkhash].js‘),
// 没有指定输出名的文件输出的文件名格式
chunkFilename: utils.assetsPath(‘js/[id].[chunkhash].js‘)
},

// 配置webpack插件

plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
‘process.env‘: env
}),

// 丑化压缩代码
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),

// 抽离css文件
new ExtractTextPlugin({
filename: utils.assetsPath(‘css/[name].[contenthash].css‘)
}),

// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === ‘testing‘

? ‘index.html‘
: config.build.index,
template: ‘index.html‘,
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},

// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: ‘dependency‘
}),

// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: ‘vendor‘,
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor

return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, ‘../node_modules‘)
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated

new webpack.optimize.CommonsChunkPlugin({
name: ‘manifest‘,
chunks: [‘vendor‘]
})
]
})

// gzip模式下需要引入compression插件进行压缩
if (config.build.productionGzip) {
var CompressionWebpackPlugin = require(‘compression-webpack-plugin‘)
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: ‘[path].gz[query]‘,
algorithm: ‘gzip‘,
test: new RegExp(
‘\\.(‘ +
config.build.productionGzipExtensions.join(‘|‘) +
‘)$‘
),

threshold: 10240,
minRatio: 0.8
})
)
}

if (config.build.bundleAnalyzerReport) {
var BundleAnalyzerPlugin = require(‘webpack-bundle-analyzer‘).BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}

module.exports = webpackConfig

时间: 2024-11-10 20:02:23

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

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脚手架之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-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.prod.conf.js

描述:webpack打包项目时的配置文件. 命令:yarn run build 或 npm 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

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模拟后台数据,请求本地数据的配置(旧版本dev-server.js,新版本webpack.dev.conf.js)

最近学习一个vue-cli的项目,需要与后台进行数据交互,这里使用本地json数据来模仿后台数据交互流程.然而发现build文件夹下没有dev-server.js文件了,因为新版本的vue-webpack-template 中已经去掉了dev-server.js,取而代之的是webpack.dev.conf.js文件,所以可以在webpack.dev.conf.js里配置本地访问. 对比旧版本的build文件夹,新版本的build下少了dev-server.js和dev-client.js 旧版

vue2.0配置webpack.dev.conf.js加载本地json数据

打开webpack.dev.conf.js 在const portfinder = require('portfinder')后加入以下配置 1 const express = require('express') 2 const app = express() // 请求server 3 var appData = require('../data.json') //加载本地数据 4 var seller = appData.seller //获取对应的数据 5 var goods = app

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

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

此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件 此配置文件是vue开发环境的wepack相关配置文件,主要用来处理各种文件的配置 关于注释 当涉及到较复杂的解释我将通过标识的方式(如(1))将解释写到单独的注释模块,请自行查看 上代码 // 引入nodejs路径模块 var path = require('path') // 引入utils工具模块,具体查看我的博客关于utils的解释,utils主要用来处理css-loader和vue-st