[Vue CLI 3] 配置解析之 css.extract

大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件

核心是使用了插件 extract-text-webpack-plugin,方式如下:

第一步都是加载插件


const ExtractTextPlugin = require('extract-text-webpack-plugin')

这个插件的描述如下:

Extract text from a bundle, or bundles, into a separate file.

然后配置如下:(省去了 rules 相关的配置)

一般配置 filename 来保证最终生成的 css 文件名


plugins: [
  new ExtractTextPlugin({
      filename: utils.assetsPath('css/[name].[contenthash].css')
  })
]

我们可以预先用 vue inspect --plugin extract-css 看看最终生成的配置:


/* config.plugin('extract-css') */
new MiniCssExtractPlugin(
  {
    filename: 'css/[name].[contenthash:8].css',
    chunkFilename: 'css/[name].[contenthash:8].css'
  }
)

在文件 @vue/cli-service/lib/config/css.js 中:

最开始需要获取 vue.config.js 里面配置的 css.extract


const isProd = process.env.NODE_ENV === 'production'

const {
  extract = isProd
} = options.css || {}

设置一个变量 shouldExtract


const shadowMode = !!process.env.VUE_CLI_CSS_SHADOW_MODE
const shouldExtract = extract !== false && !shadowMode

如果变量 shouldExtract 为 true,调用 plugin 方法来生成一个插件配置:

这里依赖的插件为 mini-css-extract-plugin


if (shouldExtract) {
      webpackConfig
        .plugin('extract-css')
          .use(require('mini-css-extract-plugin'), [extractOptions])
}

filename 内部也有一个判断过程,如果设置了 filenameHashing,它默认是 true:


filenameHashing: true

类型为 boolean:


filenameHashing: joi.boolean()

const filename = getAssetPath(
      options,
      `css/[name]${options.filenameHashing ? '.[contenthash:8]' : ''}.css`
    )

处理 filename 之后,插件还有一个配置项:chunkFilename

下面就是通过 Object.assign 来生成 extractOptions


const extractOptions = Object.assign({
      filename,
      chunkFilename: filename
    }, extract && typeof extract === 'object' ? extract : {})

来源:https://segmentfault.com/a/1190000016390112

Vue 2中,可以使用vue.config.js文件来配置Vue项目。以下是一些常见的配置选项: 1. 创建vue.config.js文件:在项目根目录下,创建一个名为vue.config.js的文件。 2. 导出配置对象:在vue.config.js文件中,导出一个包含配置选项的JavaScript对象。例如: ```javascript module.exports = { // 配置选项 } ``` 3. 配置选项:根据你的需求,添加或修改适当的配置选项。一些常见的选项包括: - publicPath: 设置公共路径,用于部署到静态服务器或CDN上。 - outputDir: 设置输出目录,默认为dist。 - assetsDir: 设置静态资源的目录(相对于outputDir)。 - devServer: 配置开发服务器选项,例如代理、端口号等。 - productionSourceMap: 是否生成生产环境的源映射文件。 - css: 配置CSS相关选项,例如提取CSSCSS预处理器等。 以下是一个示例配置文件的例子: ```javascript module.exports = { publicPath: '/', outputDir: 'dist', assetsDir: 'static', devServer: { port: 8080, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api': '' } } } }, productionSourceMap: false, css: { extract: true, sourceMap: false } } ``` 请根据你的项目需求,自行添加或修改其他配置选项。配置完成后,重新启动开发服务器或运行打包命令,配置将会生效。 注意:以上是一些常见的配置选项,更详细的配置项可以参考Vue CLI官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值