zoukankan      html  css  js  c++  java
  • webpack05----webpack5

    # webpack5

    此版本重点关注以下内容:

     - 通过持久缓存提高性能
     - 使用更好的算法和默认值来改善长期缓存
     - 通过更好的树摇和代码生成来改善捆绑包大小
     - 清除处于怪异状态的内部结构,同时在v4中实现功能而不引入任何重大更改
     - 通过引入重大更改来为将来的功能做准备,以使我们能够尽可能长时间地使用v5
      
    ## 下载
     - npm i webpack@next webpack-cli -D
      
    ## 自动删除 Node.js Polyfills
      早期,webpack的目标是允许在浏览器中运行大多数node.js模块,但是模块格局发生了变化,许多模块为了用于前端而编写的。webpack <= 4 附带了许多node.js核心模块的polyfill,一旦模块使用任何核心模块(crypto模块),这些模块就会自动应用。
      尽管这使node.js编写的模块变得容易,但它会将这些巨大的polyfill添加到包中,在许多情况下,这些polyfill是不必要的。
      webpack5会自动停止填充这些核心模块,并专注于与前端兼容的模块。

      迁移:
       - 尽可能尝试使用与前端兼容的模块
       - 可以为node.js核心模块手动添加一个polyfill,错误信息将提示如何实现该目标。

    ## Chunk 和模块 ID
      添加了用于长期缓存的新算法。在生产模式下默认启用这些功能

      `chunkIds: "deterministic", moduleIds: "deterministic"`

    ## Chunk ID
      你可以不使用 `import(/* webpackChunkName: 'name' */ "module")` 在开发环境下为chunk命名,生产环境还是有必要的
      webpack内部有命名规则,不再是以 id(0,1,2) 命名了

    ## Tree Shaking
      1、webpack现在能够处理对嵌套模块的tree shaking

      ``` js
        // inner.js
        export const a = 1
        export const b = 2

        // module.js
        import * as inner from './inner'
        export {inner}

        // user.js
        import * as module from './module'
        console.log(module.inner.a)
      ```
      在生产环境中,inner模块暴露的 `b` 会被删除

      2、webpack现在能够处理多个模块之前的关系
      ```js
        import { something } from './something'
        function usingSomething(){
          return something
        }
        export function test(){
          return usingSomething()
        }
      ```
      当设置了 `"sideEffects": false` 时,一旦发现 `test` 方法没有使用,不但删除 `test` 还会删除 `"./something"`

      3、webpack现在能处理对Commonjs的tree shaking

    ## Output
      webpack4只能输出ES5代码
      webpack5开始新增一个属性 output.ecmaVersion,可以生成 ES5 和 ES6/ES2015 代码
      如 `output.ecmaVersion: 2015`

    ## SplitChunk

      ```js
        // webpack4
        minSize: 30000
      ```
      ```js
        // webpack5
        minSize: {
          javascript: 30000,
          style: 50000
        }
      ```

    ## Caching

      ```js
        // 配置缓存
        cache: {
          // 磁盘存储
          type: "filesystem",
          buildDependencies: {
            config: [__filename] // 当配置修改时,缓存失效
          }
        }
      ```
      缓存将存储到 `node_modules/.cache/webpack`

    ## 监视输出文件
      之前webpack总是在第一次构建时输出全部文件,但是监视重新构建时只会更新修改的文件,
      此次更新在第一次构建时会找到输出文件看是否有变化,从而决定要不要输出全部文件。

    ## 默认值
     - `entry: './src/index.js'`
     - `output.path: path.resolve(__dirname, 'dist')`
     - `output.filename: '[name].js'`

    ## 更多内容
      https://github.com/webpack/changelog-v5
  • 相关阅读:
    关于时间的字词
    Postgresql 存储过程调试 1
    Delphi 调试日子
    Delphi 调试日子
    TList,TObjectList 使用——资源释放
    Lazarus开发环境编译选项配置
    Delphi 递归搜索.SVN文件夹并“处理”
    Delphi 路径相关函数
    如何掌握程序语言(王垠)
    struct/class等内存字节对齐问题详解
  • 原文地址:https://www.cnblogs.com/wuqilang/p/13962196.html
Copyright © 2011-2022 走看看