• Vue(yarn)npm run serve 提升构建速度


    目录

    Vue 开发环境构建优化

    1、背景

    2、简介

    3、实现 


    Vue 开发环境构建优化

    1、背景

        在项目实现的过程中,想在代码更改的同时,查看效果的改变,

    而这个时候长时间的编译等待,造成了额外的时间浪费。


    2、简介

    HardSourceWebpackPlugin 是 webpack 的插件,为模块提供 中间缓存 步骤。

    为了查看结果,需要使用此插件运行 webpack 两次:

    第一次构建将花费正常的时间。第二次构建将显着加快(大概提升90%的构建速度)。

    使用 vue-cli 默认打包配置时,开发环境往往构建很慢

    这是默认配置构建速度,整整花了 50s

    这是优化后构建速度,可以看到快了十倍多。

    这里使用了缓存进行构建,即使关机重启后也可以加快构建速度。

    大大的减少了我们等待的时间。


    3、实现 

    安装:yarn add --dev hard-source-webpack-plugin(或者使用npm)。

    npm i -D hard-source-webpack-plugin

    并在 webpack 的插件配置中添加此插件:

    接下来我们来看下如何配置的:

    在vue.config.js中加上:

    1. const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
    2. const devPlugins = [
    3. new HardSourceWebpackPlugin(),
    4. new HardSourceWebpackPlugin.ExcludeModulePlugin([
    5. {
    6. test: /mini-css-extract-plugin[\\/]dist[\\/]loader/
    7. }
    8. ])
    9. ];
    10. module.exports = {
    11. ... //其它打包配置
    12. configureWebpack: {
    13. plugins: process.env.NODE_ENV === "production" ? [] : [...devPlugins]
    14. },
    15. }
    1. const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
    2. ...
    3. module.exports = merge(baseWebpackConfig, {
    4. module: {
    5. rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
    6. },
    7. // cheap-module-eval-source-map is faster for development
    8. devtool: '#cheap-module-eval-source-map',
    9. plugins: [
    10. ...
    11. // 缓存 加速二次构建速度
    12. new HardSourceWebpackPlugin({
    13. // Either an absolute path or relative to webpack's options.context.
    14. // cacheDirectory是在高速缓存写入 ,设置缓存在磁盘中存放的路径
    15. cacheDirectory: './../disk/.cache/hard-source/[confighash]',
    16. // Either a string of object hash function given a webpack config.
    17. recordsPath: './../disk/.cache/hard-source/[confighash]/records.json',
    18. //configHash在启动webpack实例时转换webpack配置,并用于cacheDirectory为不同的webpack配置构建不同的缓存
    19. configHash: function (webpackConfig) {
    20. // node-object-hash on npm can be used to build this.
    21. return require('node-object-hash')({ sort: false }).hash(webpackConfig);
    22. },
    23. // Either false, a string, an object, or a project hashing function.
    24. environmentHash: {
    25. root: process.cwd(),
    26. directories: [],
    27. files: ['./../package-lock.json', './../yarn.lock'],
    28. },
    29. // An object.
    30. info: {
    31. // 'none' or 'test'.
    32. mode: 'none',
    33. // 'debug', 'log', 'info', 'warn', or 'error'.
    34. level: 'debug',
    35. },
    36. // Clean up large, old caches automatically.
    37. cachePrune: {
    38. // Caches younger than `maxAge` are not considered for deletion. They must
    39. // be at least this (default: 2 days) old in milliseconds.
    40. maxAge: 2 * 24 * 60 * 60 * 1000,
    41. // All caches together must be larger than `sizeThreshold` before any
    42. // caches will be deleted. Together they must be at least this
    43. // (default: 50 MB) big in bytes.
    44. sizeThreshold: 100 * 1024 * 1024
    45. },
    46. }),
    47. ]
    48. })


    优化小技巧 :

    一个 template 只能编译成一个 render 函数

     

  • 相关阅读:
    老系统如何重构之最全总结
    设计模式-抽象工厂模式
    Golang | Leetcode Golang题解之第148题排序链表
    程序员面试金典16.20: T9键盘
    外包干了3个月,技术退步明显。。。。。
    ConcurrentHashMap 成员、方法分析
    贪心算法: 奶牛做题
    表格与表单
    Java + Selenium + Appium自动化测试
    游戏工作中用到的一些第3方软件和作用
  • 原文地址:https://blog.csdn.net/weixin_58099903/article/details/126289288