zoukankan      html  css  js  c++  java
  • webpack vue热加载编译速度慢

    问题描述: vue2.x + iview项目随着文件越来越多打包速度越来越慢

    76% basic chunk optimization RemoveParentModulesPlugin
    

    解决方法:

    安装babel-plugin-dynamic-import-node插件

    npm install babel-plugin-dynamic-import-node --save-dev
    
    

    配置 .babelrc 文件

    {
        presets: [
            '@vue/app'
        ],
        env: {
            development: {
              plugins: ['dynamic-import-node']
            }
        }
    }
    

    衍生问题:

    问题1 安装了插件后,打包速度提高了,但是打dist包测试的时候发现漏了好多包,造成了无法发版。

    解决发版问题

    打版时候把 .babelrc文件中下面的代码注释掉即可,打完包在恢复过来,这样打包也可以,热更新又快。

        env: {
            development: {
              plugins: ['dynamic-import-node']
            }
        }
    

    问题2 安装了插件后,打包报错 Critical dependency: the request of a dependency is an expression

    根据提示可以找到主要造成这个问题的代码是以下这段:

    export const loadView = (view) => { // 路由懒加载
        return () => import(`@/views/${view}`)
    }
    

    全局搜索node_modules我们可以看到这个问题是由webpack 的 lib/dependencies/ContextDependencyHelpers.js 第224行报出的警告;
    然后在官方的issues中也能找到相关问题;

    不过官方似乎并没有给出解决方案(也可能是我没有找到),也许是官方并不赞同import(@/views/${view})这种引入方式;

    我们也可以想办法换个方式引入,例如:

    export const loadView = (view) => { // 路由懒加载
        return () => Promise.resolve(require(`@/views/${view}`).default)
    }
    

    这样既能保证组件的异步载入,也不会被webpack报异常,terminal看起来舒服多了;

    webpack 版本问题,webpack4中动态import不支持变量方式,

    该修改对于生产环境无影响,只在开发环境有问题

    备注

    http://zhihesj.com/?id=771

  • 相关阅读:
    [KB] Office序列号移除器
    收音机的记忆
    EnCase v7 正式版预览
    关于Ex01和EnCase 6.19的小道消息
    EnCase V7 正式发布 新特性
    [EnCase v7专题] EX01证据文件获取设置释疑
    智能手机应用取证系列之三:腾讯微博Android手机客户端取证分析
    [EnCase v7] EnCase v7零售版改用CodeMeter加密狗
    Http Server的一个示例
    一个简单的加解密算法
  • 原文地址:https://www.cnblogs.com/codebook/p/13605271.html
Copyright © 2011-2022 走看看