Webpack 概念

一直想深入学学 Webpack,无奈被其他技术的学习一直耽搁了,对于 Webpack 还仅仅停留在会使用的阶段中,以前刚开始时尝试深入过,但因为未曾有过很好的模块开发经验而对很多功能不是理解,强烈建议还是有些项目的开发流程在脑中才有必要去深入 Webpack

现如今个人很喜欢边学边记,一方面是为了保留零碎的知识点,也是为自己创立个在线的 API,然而最近花出了很多的时间在恶补英语,可能每天来学技术的时间并不是很多,也并不基于快速的将其学会,重在积累!

本文只是我学习的个人总结,基本都是从官网以及各种材料上将自己觉得重要又不是很了解的知识点进行记录,以简短精华为核心,想必应该并不会适合新手作为学习的阅读材料,反而应该适合对 Webpack 有过一半以上的了解并作为复习或填补深度

这一篇只是初步的尝鲜,既然决定深入 webpack,那肯定要用多个篇幅来详细分析

一. 入口(Entry)

1. 单个入口

  • entry: string | Array<string>
  • entry: { main: string | Array<string> }
  • entry 为路径数组时也是单个入口,是将所有路径文件打包为一个

2. 对象语法

  • entry: { [entryChunkName: string]: string | Array<string> }

二. 输出(Output)

  • output: {
      filename: string,
      path: string,
    },
    
  • 可以使用以下占位符
    • [name]
    • [hash]

三. 解析器(Loader)

  • module: {
      rules: [
        {
          test: /\.css$/,
          use: [
            { loader: 'style-loader' },
            {
              loader: 'css-loader',
              options: { modules: true },
            },
          ],
        },
        { test: /\.ts$/, use: 'ts-loader' },
      ],
    },
    
  • 可以在 import 或任何等效于 import 的方式中指定 loader,使用 ! 将资源中的 loader 分开
  • Loader 特性
    • loader 支持链式传递,能够对资源使用流水线,一组链式的 loader 将按照先后顺序进行编译,loader 链中的第一个 loader 返回值给下一个 loader,在最后一个 loader ,返回 webpack 所预期的 JavaScript
    • loader 可以是同步的,也可以是异步的
    • loader 运行在 Node.js 中,并且能够执行任何可能的操作
    • loader 接收查询参数,用于对 loader 传递配置
    • 除了使用 package.json 常见的 main 属性,还可以将普通的 npm 模块导出为 loader,需要在 package.json 里定义一个 loader 字段
    • loader 能够产生额外的任意文件
  • loader 模块需要导出为一个函数,并且使用 Node.js 兼容的 JavaScript 编写(如何编写 loader?
  • loader 列表

四. 插件(Plugins)

  • plugins: [ new Plugins(), ]
  • webpack 插件是一个具有 apply 属性的 JavaScript 对象,apply 属性会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问
  • 由于插件可以携带参数或选项,必须在 webpack 中,向 plugins 属性传入 new 实例

五. 模块解析(Module Resolution)

1. 绝对路径

  • 由于已经取得绝对路径,因此不需要进一步再做解析

2. 相对路径

  • 使用 import 或 require 的资源文件所在的目录被认为是上下文目录,以此产生绝对路径

3. 模块路径

  • 模块将在 resolve.modules 中指定的所有目录内搜索,你可以替换初识模块路径,此替换路径通过使用 resolve.alias 配置选项来创建一个别名
  • 一旦根据上述规则解析路径后,解析器将检查路径是否指向文件或目录,如果路径指向一个文件:
    • 如果路径具有文件扩展名,则被直接将文件打包
    • 否则,将使用 resolve.extensions 选项作为文件扩展名来解析,此选项告诉解析器在解析中能够接受哪些扩展名(例如 .js)
  • 如果路径指向一个文件夹,则采取以下步骤找到具有正确扩展名的正确文件:
    • 如果文件夹中包含 package.json 文件,则按照顺序查找 resolve.mainFields 配置选项中指定的字段,并且 package.json 中的第一个这样的字段确定文件路径
    • 如果 package.json 文件不存在或者 package.json 文件中的 main 字段没有返回一个有效路径,则按照顺序查找 resolve.mainFiles 配置选项中指定的文件名,看是否能在 import/require 目录下匹配到一个存在的文件名
    • 文件扩展名通过 resolve.extensions 选项采用类似的方法进行解析

六. 构建目标(Targets)

  • target: string
  • 因为服务器和浏览器代码都可以用 JavaScript 编写,所以 webpack 提供了多种构建目标,可以在 webpack 配置中设置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容