咱們看一下 webpack-chain 到底作什麼?html
Use a chaining API to generate and simplify the modification of Webpack version 2-4 configurations.
熟悉 cli-plugin-babel
、cli-plugin-eslint
源碼的話,你會時常看到它。webpack
如何使用呢?web
一、加載它babel
const Config = require('webpack-chain');
二、調用 newapp
const config = new Config();
後面就是一個一個的方法介紹和使用了:測試
第一個:entry
設置ui
config .entry('index11') .add('src/index11.js') .end() .entry('index22') .add('src/index22.js') .end()
咱們調用以下方法看看:eslint
config.toString()
打印一下:code
{ entry: { index11: [ 'src/index11.js' ], index22: [ 'src/index22.js' ] } }
第二個:plugin
設置htm
參考:cli-service/lib/config/app.js
格式以下:
config .plugin(name) .use(WebpackPlugin, args)
const HTMLPlugin = require('html-webpack-plugin') const htmlOptions = { templateParameters: (compilation, assets, pluginOptions) => {}, template: '/Users/***/public/index.html' } webpackConfig .plugin('html') .use(HTMLPlugin, [htmlOptions])
咱們調用以下方法看看:
config.toString()
打印一下:
plugins: [ /* config.plugin('html') */ new HtmlWebpackPlugin( { templateParameters: function () { /* omitted long function */ }, template: '/Users/***/public/index.html' } ) ]
第三個:module
設置
這裏方法比較多,用到了
測試地址:https://runkit.com/embed/5tiz...
config.module .rule('lint') .test(/\.js$/) .pre() .include .add('src') .end() // Even create named uses (loaders) .use('eslint') .loader('eslint-loader') .options({ rules: { semi: 'off' } });
咱們調用以下方法看看:
config.toString()
打印一下:
{ module: { rules: [ /* config.module.rule('lint') */ { test: /\.js$/, enforce: 'pre', include: [ 'src' ], use: [ /* config.module.rule('lint').use('eslint') */ { loader: 'eslint-loader', options: { rules: { semi: 'off' } } } ] } ] } }
第四個:devServer
設置
config.devServer.set('hot', true); config.devServer.hot(true)
咱們調用以下方法看看:
config.toString()
打印一下:
{ devServer: { hot: true } }