Webpack5项目级CLI配置

246 阅读2分钟

Webpack5项目级CLI配置

从0搭建Webpack配置,从1月21到2月1,如果你希望看整个项目的构建过程建议看 commit记录,每次完成一个功能都有对应的commit

自定义搭建的 REACT CLI

为什么不用 Create-React-App

  • 不好深度定制化,需要 拓展的话需要
    • 重新使用 script 包,而且这些包更新不及时,对新版本webpack支持不友好
    • npm run eject 多出很多文件夹,开发体验不好,而且config代码难以修改(需要你通读源码,内部封装的过于紧密)
  • 去除无用配置,能加快webpack启动的速度
  • 虽然是叫REACT CLI,但是只需要添加一些配置,立马能跑Vue的代码

todo

  • 集成stylelint

成功

  • 实测 在生产环境下 初次打包速度略快于 Create-React-App,在有缓存下更快

  • 性能:

    • 生产环境下开启source-map需要设置 GENERATE_SOURCEMAP
    • HOME_PAGE 为 publicPath
  • css

    • 实测 css-loader module 模式生成 代码一致
    • post-css 确切有效,postcss 外部 可以通过 .browserslistrc文件 | package.json 的 browserslist 修改
    • 集成less和sass预处理器
    • 环境变量 PORT、HOST、BUILD_PATH(输出路径)
  • 路径别名

    • webpack alias 已经生效,内置 @ 代表 'appPath'/src
    • tsconfig 已经配置对应的 path,能够自动提示
  • plugins

    • 实测 DefinePlugin 提供环境变量成功
    • 添加 webpackbar 进度条插件
    • 添加 webpack-bundle-analyzer 分析代码,执行npm run analyze,打包并分析
    • CopyWebpackPlugin 将 public 代码复制到 打包目录下, html-loader 无需集成
    • HtmlWebpackPlugin 自动压缩 html代码
  • polyfill

    • 接入 @babel/preset-env + core-js@3 + regenerator-runtime 设置 按需加载 polyfill
    • postcss 使用 预设 postcss-preset-env 并且内置 autoprefixer
  • asset

    • image,通过 asset 类型资源处理,小于 IMAGE_INLINE_SIZE_LIMIT 就生成 inline
    • svg,通过 file-loader + @svgr/webpack 处理,可直接转换成 ReactComponent
    • fonts,通过 asset/resource 直接导出
  • 工程化

    • dotenv 方式配置环境变量文件
    • eslint:,eslint 可以通过 外部 eslintrc 和 package.json 的 eslintConfig,如果你希望在build的时候关闭内部的eslint检查,需要设置环境变量 DISABLE_ESLINT_PLUGIN
    • typescript
    • git、.gitignore
    • editorconfig
    • husky, pre-commit => npm run lint
    • mock,'热更新' mock,请求的时候 API 携带 /mock/xxx 路径,你需要在 mock 文件夹下,创建 xxx.js文件