zoukankan      html  css  js  c++  java
  • 工程优化暨babel升级小记

    小记背景

    随着业务代码的增多,项目代码的编译时长也在增多,遂针对这个痛点在dev下做些优化

    第一部分:优化dev编译时间

    这里优化的主要思路是在dev环境下,单独出来一个dll配置文件,将项目中的部分依赖包写入配置文件,最终生成一个在dev环境下专用的dll文件,这样处理的目的是减少开发时的编译时间(ps:经测试可以提升50%左右的编译效率),具体修改如下:

    • 独立dev的dll配置

    拷贝一份当前的dll.config.js文件,并重命名为开发环境专用dll-dev.config.js,并进行如下修改:

    // dll-dev.config.js module.exports = { entry: { vendor: [ 'moment', 'nprogress', 'cookie_js', 'echarts', 'jsbarcode', 'lodash', 'lodash-decorators', 'isomorphic-fetch', 'antd', 'react', 'react-dom', 'react-router', 'react-router-redux', 'redux', 'redux-fetch-elegant', 'redux-logger', 'redux-thunk' ... ] } }
    • 修改开发环境配置文件webpack.dev.config.js

    • 增加一条package.json命令,用于单独生成dev环境下的dll文件
    "scripts": { "dll-dev": "./node_modules/.bin/webpack --config dll-dev.config.js", }

    dev环境下执行这条新的命令行生成dll文件以及对应的json映射文件,以便省去dev下一些import进来的包文件编译,从而减少工程的整体编译时长

    npm run dll-dev

    第二部分:工程升级到babel@7+

    升级package依赖包 & 去除冗余

    and

    这里删除了'babel-preset-stage-2',因为为了避免概念模糊不清以及防止出现由于提案的删除或变更而导致不可预见问题,故而babel@7+中删除了阶段预设。

    其他依赖包从v@6+升级到v@7+,并采用babel@7+中的最新官方包名称。 用于antd按需加载的babel-plugin-import也需要跟着babel进行升级到1.11.0,因为配置语法和资源的目录名称都改变了(详见babel.config.js)。

    修改babel配置文件

    在babel@7+中,增加了一个新的配置文件babel.config.js,这样可以让配置文件变得更加灵活,更适合babel所采用的monorepo管理,比如可以将配置集中在所有包中、也可以为每一个包单独创建配置,我们这里采用这个配置文件,因为需要在config里写一些判断逻辑,以实现dev和pro的更深层次隔离

    ps:详细的配置官方说明详见6.x vs 7.x

    新的babel配置文件如下:

    // babel.config.js module.exports = function (api) { api.cache(true) const presets = [ '@babel/preset-env', '@babel/react' ] const plugins = [ ['@babel/plugin-transform-runtime', { 'helpers': false, 'regenerator': true }], ['@babel/plugin-proposal-class-properties', { 'loose': true }], ['import', { 'libraryName': 'antd', 'libraryDirectory': 'lib', 'style': 'css' }, 'ant'] ] return { presets, plugins } }

    编译测试对比

    使用同一台电脑及开发环境进行测试比较

    升级前执行编译耗时如下:

    升级后执行编译耗时如下:

    升级前进行修改保存耗时如下:

    升级后进行修改保存耗时如下:

  • 相关阅读:
    2018年左其盛读过评过的书(持续更新中)
    2星|《用场景营销引爆你的生意》:总共4个推荐案例,3个已经失败
    2018左其盛经管新书差评榜(持续更新中)
    3星|《十大全球CEO亲授企业高速成长的关键战略》:作为CEO,我也非常坦率地表明过家庭优先于工作
    2018左其盛好书榜(持续更新中)
    3星|《你的品牌需要一个讲故事的人》:有理论没案例
    《思考快与慢》前传,两位天才犹太心理学家的传奇人生与学术故事:4星|《思维的发现》
    C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
    在XML里的XSD和DTD以及standalone的使用
    数据库操作之简单带参操作
  • 原文地址:https://www.cnblogs.com/xudengwei/p/10402748.html
Copyright © 2011-2022 走看看