[Vue CLI 3] 源码之 webpack-chain

news/2024/9/8 20:04:57

我们看一下 webpack-chain 到底做什么?

Use a chaining API to generate and simplify the modification of Webpack version 2-4 configurations.

熟悉 cli-plugin-babelcli-plugin-eslint 源码的话,你会时常看到它。

如何使用呢?

1、加载它

const Config = require('webpack-chain');

2、调用 new

const config = new Config();

后面就是一个一个的方法介绍和使用了:

第一个:entry 设置

config
.entry('index11').add('src/index11.js').end().entry('index22').add('src/index22.js').end()

我们调用如下方法看看:

config.toString()

打印一下:

{entry: {index11: ['src/index11.js'],index22: ['src/index22.js']}
}

第二个:plugin 设置

参考: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 设置

这里方法比较多,用到了

  • rule 对应 rules: []
  • test(/.js$/) 对应 test: /\.js$/
  • include.add('src') 对应 include: ['src']
  • use('eslint') 对应 use: []
  • loader('eslint-loader') 对应 loader: 'eslint-loader'

测试地址: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}
}

http://lihuaxi.xjx100.cn/news/246144.html

相关文章

白话经典算法系列之七 堆与堆排序

堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大…

MyBatis动态SQL之 set 和 trim标记的使用示例

2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样&#xff0c;set和trim也是智能标记 在之前的user.xml中添加 <update id"updateUserSet" parameterType"User">update User<set><if test"userName ! null&q…

HTTP 缓存

通过网络获取内容既速度缓慢又开销巨大。较大的响应需要在客户端与服务器之间进行多次往返通信&#xff0c;这会延迟浏览器获得和处理内容的时间&#xff0c;还会增加访问者的流量费用。因此&#xff0c;缓存并重复利用之前获取的资源的能力成为性能优化的一个关键方面。 好在每…

org.apache.hadoop.fs-ChecksumException

当ChecksumFileSystem出现问题时抛出 1 package org.apache.hadoop.fs;2 3 import java.io.IOException;4 5 /** Thrown for checksum errors. */6 public class ChecksumException extends IOException {7 private long pos;8 public ChecksumException(String descriptio…

C# 驱动连接 MongoDB ReplSet

前言 接上一篇&#xff1a;MongoDB 复制集&#xff08;Replica Set&#xff09; 配置&#xff08;Windows 版&#xff09; 当配置好 MongoDB 的复制集&#xff08;Replica Set&#xff09;之后&#xff0c;肯定要做的就是应用程序连接 MongoDB Replica Set 进行数据存储等相关操…

错误:You can't specify target table 'xxx' for update in FROM clause的解决

今天在MySQL数据库删除重复数据的时候遇到了一个问题。如下脚本&#xff1a; DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age ) 会出现报错信息&#xff1a; You cant specify target table tempA for update in FROM clause 大致意思…

《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字

&#xfeff;&#xfeff;Swift 2.0学习笔记&#xff08;Day5&#xff09;——我所知道的标识符和关键字 原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客 好多计算机语言都有标识符和关键字&#xff0c;一直没有好好的总结&#xff0c;就是这样的用着&…

Xbox One 游戏欣赏: Xbox Fitness 太极拳游戏

早就听说Xbox One中带有太极拳&#xff0c;这是我一直想练的&#xff0c;终于找到“死人定制”的师傅了。因为看书很难练&#xff0c;找不到联系场所&#xff0c;要么就要花价格不菲的学费。Xbox 360中的型可塑2012游戏中&#xff0c;包含了一个游戏章节就是Taiji&#xff0c;但…