module.exports = {
chainWebpack: config => {
config.entryPoints.clear() // 把默认的入口清空
config.entry('entry1').add('./src/index1.tsx') // 新增入口
config.entry('entry2').add('./src/index2.tsx') // 新增文件
config.output
.path("dist")
.filename("[name].[chunkhash].js")
.chunkFilename("chunks/[name].[chunkhash].js")
.libraryTarget("umd")
}
}
module.exports = {
chainWebpack: config => {
config.resolve.alias
.set('assets',resolve('src/assets'))
.set('components',resolve('src/components'))
.set('static',resolve('src/static'))
.delete('static') // 删掉指定的别名
}
}
module.exports = {
chainWebpack: config => {
config.module
.rule(name)
.use(name)
.loader(loader)
.option(option)
}
}
示例
module.exports = {
chainWebpack: config => {
config.module
.rules('ts')
.test(/\.tsx?/)
.use('ts-loader')
.loader('ts-loader')
.option({
transpileOnly: true
})
.end()
}
}
tap
方法修改loader的参数:module.exports = {
chainWebpack: config => {
config.module
.rule('ts')
.test(/\.tsx?/)
.use('ts-loader')
.loader('ts-loader')
.tap(option => {
// do some ...
return option
})
.end()
}
}
在所有的配置完成之后,可以通过调用config.toConfig()
来拿到最后的配置对象,可以直接作为webpack
的配置。
uses
对象的delete
方法,根据loader
的name
删除module.exports = {
chainwebpack: config => {
config.module
.rule('ts')
.test(/\.tsx?/)
.uses.delete('ts-loader')
}
}
先指定名字
(这个名字是自定义的),然后通过 use 添加插件
数组
,也可以不传。// vue.config.js
module.exports = {
chainWebpack: config => {
config
.plugin(name)
.use(WebpackPlugin, args)
}
}
示例
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
chainWebpack: config => {
config
.plugin('extract')
.use(ExtractTextPlugin, [{
filename: 'build.min.css',
allChunks: true,
}])
}
}
module.exports = {
chainWebpack: config => {
config.plugins.delete('extract')
}
}
例如,现在需要指定 html-webpack-plugin
这个插件在刚刚写的 extract 插件之前
执行,则写法如下:
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
chainWebpack: config => {
config
.plugin('html')
.use(htmlWebpackPlugin)
.before('extract')
}
}
通过 before
方法,传入另一个插件的 name 即可,表示在另一个插件之前执行。
同样,如果需要在 extract 插件之后执行,调用 after
方法
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
chainWebpack: config => {
config
.plugin('html')
.use(htmlWebpackPlugin)
.after('extract')
}
}
tap
方法修改参数module.exports = {
chainWebpack: config => {
config
.plugin(name)
.use(webpackPluginName)
.tap(args => newArgs)
}
}
init
方法,返回一个实例,这将代替原有的实例化过程module.exports = {
chainWebpack: config => {
config
.plugin(name)
.init((Plugin, args) => new Plugin(...args));
}
}