webpackNode.jsWebpack

webpack打包原理解析

2019-02-16  本文已影响0人  沫之

一、什么是 webpack

webpack 是一个模块打包机,将根据文件间的依赖关系对其进行静态分析,然后将这些模块按指定规则生成静态资源

当 webpack 处理程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle

二、安装

三、模块交互 runtime、manifest

四、核心概念:入口 entry

五、核心概念:出口 output

六、核心概念:loader

七、核心概念:plugin

八、核心概念:模式 mode(webpack 4.x)

两种模式的区别
development :会将 process.env.NODE_ENV 的值设为 development启用 NamedChunksPlugin 和 NamedModulesPlugin
production :会将 process.env.NODE_ENV 的值设为 production。 启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin

九、核心概念:target

十、核心概念:source map 定位代码中的错误

*   `cheap-module-eval-source-map`【推荐】

    > 构建速度:0 、重新构建速度:++ 、生产环境:no 、原始源代码(仅限行)


    *   生产环境中 常见的 source map

*   以如下代码为例,运行

    ```
    console.log('js');

    class A extends test {}
    ```

*   `none` 【推荐】

    > 构建速度:+++ 、重新构建速度:+++ 、生产环境:yes 、打包后代码


    *   **总结:** 需要注意的是不同的 devtool 的设置,会导致不同的性能差异。

        *   "eval" 具有最好的性能,但并不能帮助你转译代码。

        *   如果你能接受稍差一些的 mapping 质量,可以使用 cheap-source-map 选项来提高性能

        *   使用 eval-source-map 配置进行增量编译

        *   在大多数情况下,cheap-module-eval-source-map 是最好的选择

原文:https://juejin.im/post/5c62a137f265da2db87b87bb

上一篇 下一篇

猜你喜欢

热点阅读