`

[译]webpack官网文档 :概念 -- 8.模块解析

阅读更多

原创翻译,转载请注明出处。 

原文地址:https://webpack.js.org/concepts/module-resolution/

 

模块解析

解析器是一个库,它能依据模块的绝对路径来找到模块。使用下面的方法,一个模块就可以被另一个模块当作依赖来请求:

import foo from'path/to/module'
// or
require('path/to/module')

 

依赖模块可以是应用代码也可以是第三方的库。在每一个require/import声明的地方,解析器帮助webpack找到模块的代码把它们包含到包里。Webpack在打包模块的时候使用enhance-resolve库。

 

webpack里的解析规则

使用enhance-resolve库,webpack可以解析三种文件路径:

 

绝对路径

import"/home/me/file";
 
import"C:\\Users\\me\\file";

  

因为我们已经有了文件的绝对路径,不需要格外的解析

 

相对路径

import"../src/file1";
import"./file2";

 

在这个例子里,import或者require的资源文件的目录是一个上下文目录。Import/require里指定的相对目录被加到上下文路径里,就声称了模块的绝对路径。

 

模块路径

import"module";
import"module/lib/file";

 

在resolve.modules里指定的所有目录里寻找模块。你可以通过使用配置文件选项resolve.alias来创建别名,用一个替代路径代替源模块路径。

 

一旦路径通过上述规则被解析,解析器就会检查路径指向到文件还是目录。如果指向到文件:

  • 如果文件有后缀名,文件直接被打包。
  • 否则,使用resolve.extensions选项来解析文件的后缀,这个选项告诉解析器哪些后缀(例如:.js,.jsx)是可以接受解析的。

如果指向到文件夹,就会通过下面的步骤来找到正确的文件和正确的后缀:

  • 如果文件夹里有package.json文件,那么在配置文件的resolve.mainFields选项里定义的字段就会被依次查看,第一个在package.json里存在的字段决定了文件路径。
  • 如果没有package.json文件,或者主子段没有返回一个有效的路径,就会顺次查找在resolve.mainFiles这个配置选项里定义的文件名,看看在被引用或者请求的目录里有没有匹配的文件名。
  • 文件后缀将会使用同样的方法,参照resolve.extensions选项解析。

Webpack给你所需要的这些选项提供了合理的默认配置。

 

解析加载器

遵从文件解析指定内容相同的规则。但是resolveLoader配置选项可以被用作拥有独立的解析加载器规则。

 

缓存

每一次文件系统的访问都被缓存,这样的话,对一个文件的多次并行或者顺次请求会提高速度。在观察模式下,只有被修改的文件会被从缓存中剔除。如果关闭观察模式,缓存就会在每次编译前被清空。

 

查阅ResolveAPI,对上面提到的配置选项了解更多。

 

-- End --

 

0
0
分享到:
评论

相关推荐

    compile-node-sass-0.0.3.zip

    5. **自动化工具**:在实际开发中,通常会结合Gulp、Grunt或Webpack等自动化构建工具来自动监控并编译Sass文件,当Sass源文件发生改变时,自动更新CSS输出,确保开发效率。 【标签】"sass" 表示这个压缩包主要关注...

    Webpack4中文手册(4.39.3).pdf

    - resolve: 设置模块如何解析,例如,可以指定模块的查找目录,常用的是__dirname(表示当前文件所在目录)。 - devServer: 配置webpack-dev-server提供开发环境下的服务。 手册中也强调了使用Node.js的path模块,...

    Python库 | cdk-spa-deploy-1.104.1.tar.gz

    3. **构建优化**:CDK-SPA-Deploy支持常见的前端构建工具,如Webpack、Angular CLI等,可以自动执行构建任务,优化生产环境的代码,提高应用性能。 4. **版本控制**:与Git紧密集成,可以自动处理版本更新和回滚,...

    webpack1.x指导文档

    ### Webpack 1.x 指导文档 #### 1.1 概述 Webpack 是一款用于打包前端模块的工具,主要用于处理 JavaScript 文件,并能够转换、捆绑、打包其他类型的静态资源,例如 CSS、图片、字体文件和模板等。在前端项目开发...

    前端开源库-webpack-handle-css-loader

    1. **CSS导入**:Webpack通过`css-loader`解析`.css`文件,将它们转换为JavaScript模块,使得你可以直接在JavaScript中导入CSS。 2. **CSS模块化**:`css-loader`支持CSS模块化,这意味着每个CSS类名都会被转换为...

    若依 cms 博客下载下来的前端代码,启动报错 node版本16.17.0. npm 8.15.0?

    这个错误信息是关于 `webpack` 的模块解析失败,具体指出在 `./node_modules/cherry-markdown/dist/cherry-markdown.esm.js` 文件中遇到了不预期的标记。这通常意味着你的构建工具(这里是 Webpack)无法正确处理...

    03-webpack的loader.rar

    在Web开发中,Webpack 的核心概念是“模块”,它可以处理JavaScript、Vue组件以及静态资源。Loader 是 Webpack 的一个重要组成部分,用于处理不同类型的模块,将它们转换为 Webpack 可以理解的形式。 标题 "03-...

    bpmn-js-develop.zip

    **JavaScript技术栈**:bpmn-js通常基于现代JavaScript技术栈,如ES6模块、TypeScript定义、Webpack打包工具和npm包管理器。开发者可能需要熟悉这些工具来有效地使用和扩展bpmn-js。 **源代码结构**:在解压后的...

    awesome-nodejs-master.rar

    1. **模块库**:包含各种已经封装好的Node.js模块,这些模块可能涵盖网络通信、数据库操作、文件系统管理、数据解析、日志记录、性能监控等多个方面。 2. **框架和脚手架**:如Express、Koa等,它们提供了一种快速...

    前端开源库-feather2-postpackager-loader.zip

    本文将详细解析"前端开源库-feather2-postpackager-loader.zip"这个压缩包中所包含的知识点。 Feather2 是一个前端框架或者库的名称,它可能是一个轻量级、高性能的解决方案,用于构建现代Web应用。Postpackager-...

    sg-exam-master.zip

    8. 成绩查询:考试结束后,学生可以查看成绩和解析。 9. 统计分析:对考试成绩进行统计,生成报表,帮助教师分析学生表现。 为了深入了解 "sg-exam-master",我们需要实际访问代码和文档,查看具体的实现细节和使用...

    前端项目-quasar-framework.zip

    8. **构建工具**:Quasar自带了一套构建工具,包括Webpack和Babel,用于处理模块打包和转换ES6+语法为浏览器兼容的JavaScript。 9. **Quasar CLI**:Quasar命令行工具用于初始化项目、创建组件、运行开发服务器、...

    webpack学习文档

    ### Webpack 学习文档 #### 一、Webpack 概述 Webpack 是一款由德国开发者 Tobias Koppers 开发的开源项目,它最初被设计为一个模块打包器(module bundler)。随着时间的发展,Webpack 已经成为了前端开发领域中最...

    PyPI 官网下载 | angel_web-1.0.5.tar.gz

    《PyPI官网下载 | angel_web-1.0.5.tar.gz——Python前端库解析》 在Python的世界里,PyPI(Python Package Index)是官方的软件仓库,它为开发者提供了无数的第三方模块和库,方便他们进行开发工作。标题中的"PyPI...

    毕业设计--开题报告.docx

    - **Vue项目打包**:使用Webpack等工具压缩代码,提高加载速度。 - **阿里云ECS与CDN**:提供稳定的服务器托管服务,加速静态资源的加载。 - **域名注册与解析**:确保用户可以通过域名访问应用。 - **CentOS+...

    generator-fonts-master.rar

    项目的核心功能可能涉及字体解析、字体转换、字体渲染等方面,可能使用到的技术栈包括JavaScript(ES6+)、TypeScript、React、Vue等前端框架,以及Node.js、Webpack、Babel等后端和构建工具。通过解压并运行这个...

    前端开源库-jsdoc-webpack-plugin

    总结来说,jsdoc-webpack-plugin是前端开发中的一个实用工具,它结合了JSDoc的强大注释解析能力和Webpack的模块打包能力,为前端开发者提供了自动化的文档生成解决方案。在实际开发中,合理利用这样的工具可以提高...

    webpack-demo.zip

    这通常可以通过查看Webpack的错误提示、查阅官方文档、参考社区解决方案等方式来解决。 ### 6. 扩展学习 Webpack的强大力量在于其丰富的生态系统,如Loaders(用于处理不同类型的文件)和Plugins(用于扩展Webpack...

    前端项目-mojio-js.zip

    9. **前端构建工具**:项目可能使用Webpack、Rollup或其他构建工具,将源代码编译、打包成适用于生产环境的格式,同时处理模块化、压缩、混淆等优化。 10. **测试**:对于一个成熟的前端项目,通常会有单元测试和...

Global site tag (gtag.js) - Google Analytics