vue-cli 3.0 引入 vant 打包后样式丢失

一、问题描述

项目技术栈:vue 2.5.17typescriptvant
脚手架:vue-cli 3.0

问题描述: 通过 ts-import-plugin 实现 vant 按需引入组件,在开发环境正常,打包的生产环境后,vant 组件的样式丢失。

vue.config.js 配置:

module.exports = {
  chainWebpack: config => {
    config.module.rule('ts')
      .use('ts-loader')
      .tap(options => {
        options = merge(options, {
          transpileOnly: true,
          getCustomTransformers: () => ({
            before: [
              tsImportPluginFactory({
                libraryName: 'vant',
                libraryDirectory: 'es',
                style: true
              })
            ]
          }),
          compilerOptions: {
            module: 'es2015'
          }
        });
        return options;
      })
  },
}

二、解决方案

vue.config.js 配置中增加对 parallel 的设置。

parallel: false,
vue-cli 配置说明.png

三、查看打包后的文件

结论:对比 parallel 设置后的变化,可以发现少了一个 css 文件

parallel 开启.png
parallel 关闭.png

四、分析原因

  1. vue-cli 3.0 默认开启多线程构建(电脑支持的前提)
    在生产环境下,parallel 默认是开启的,将会使用 thread-loader 加速构建。
    参考资料:vue-cli 配置 parallel

  2. thread-loader 作用

把这个 loader 放置在其他 loader 之前, 放置在这个 loader 之后的 loader 就会在一个单独的 worker 池(worker pool)中运行

在 worker 池(worker pool)中运行的 loader 是受到限制的。例如:

  • 这些 loader 不能产生新的文件。
  • 这些 loader 不能使用定制的 loader API(也就是说,通过插件)。
  • 这些 loader 无法获取 webpack 的选项设置。
  • 每个 worker 都是一个单独的有 600ms 限制的 node.js 进程。同时跨进程的数据交换也会被限制。

参考资料:thread-loader 文档

  1. ts-loader

结论:应该是 ts-loader 在多线程下无法正常工作导致的。

image.png

ts-loader

参考资料:https://medium.com/webpack/typescript-webpack-super-pursuit-mode-83cc568dea79

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、入坑初探 1. 设置项目为私有 我们只需要在package.json文件中配置,因为是私有项目不需要向外部暴露...
    zxhnext阅读 2,063评论 0 15
  • 简介 vue cli 3 是一个类似于 create-react-app 的可以用例命令行快速配置和生成一个 vu...
    VioletJack阅读 9,502评论 3 22
  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,192评论 0 1
  • 源码地址:https://github.com/h2huanghui/WEBPACK-BASE 一、概念 webp...
    smartHui阅读 1,787评论 0 1
  • 我相信每个人都有好朋友不是吗?我也不例外。我的好朋友,她长着一双水灵灵的大眼睛。一对漂亮的眉毛。。小巧玲珑的鼻...
    敏_9017阅读 337评论 0 0