原创翻译,转载请注明出处。
原文地址:https://webpack.js.org/guides/shimming/
Webpack作为一个模块打包工具,能识别由ES2015模块,CommonJS或AMD编写的模块。但是有时候,使用第三方库的时候,它们期望有些依赖是全局可用的,给jquery定义别名$。它们也可能会创建用来导出的全局变量。这里我们会看到几种帮助webpack识别这些零碎模块的方式。
#相对于被打包的dist版本,更喜欢未压缩的CommonJS/AMD文件
很多模块在package.json的main字段里指定dist版本的链接。虽然这可能对大多数的开发者有利,但是对于webpack最好指定到src版本,因为这样的话,webpack能更好的优化依赖。不管怎样多数情况下dist版本也工作的很好。
// webpack.config.js module.exports ={ ... resolve:{ alias:{ jquery:"jquery/src/jquery" } } };
ProvidePlugin
ProvidePlugin插件可以把一个模块像一个变量一样,提供给webapck请求的所有模块。只有当你使用这个变量的时候,这个模块才会被请求。一些既有的模块使用一些已经存在的特定的全局变量,像jQuery插件使用$或jQuery。这种情境下,你可以通过配置webpack,每一个使用全局$标识符的地方,都会先执行var $ = require(“jquery”)。
module.exports ={ plugins:[ newwebpack.ProvidePlugin({ $:'jquery', jQuery:'jquery' }) ] };
这个插件还可以通过配置一个格式为[module, child, ...children?]的路径数组,导出特定的模块。下面的配置就可以从TypeScript的tslib包里引入__assign函数,不管在哪里都可以使用它。
module.exports ={ plugins:[ newwebpack.ProvidePlugin({ __assign:['tslib','__assign'], __extends:['tslib','__extends'], }) ] };
imports-loader
imports-loader可以在请求的既存模块里插入必要的全局变量,一些既存的模块把this作为window对象。当这种模块在CommonJS上下文环境里执行的时候会发生问题,this等同于module.exports。这种情况下可以使用imports-loader来复写this。
webpack.config.js
module.exports ={ module:{ rules:[{ test: require.resolve("some-module"), use:'imports-loader?this=>window' }] } };
一些模块支持不同的模块类型,像AMD,CommonJS和既存默认的。多数情况下他们先检查define,然后用一些复杂的代码导出变量。在这种情况下,可以设定define=false来强制设定CommonJS路径。
webpack.config.js
module.exports ={ module:{ rules:[{ test: require.resolve("some-module"), use:'imports-loader?define=>false' }] } };
exports-loader
一个库创建了一些它认为用户会使用的全局变量,这种情况下,我们可以使用exports-loader,在CommonJS格式下导出全局变量。例如为了以file导出file,以parse导出helpers.parse:
webpack.config.js
module.exports ={ module:{ rules:[{ test: require.resolve("some-module"), use:'exports-loader?file,parse=helpers.parse' // adds below code the file's source: // exports["file"] = file; // exports["parse"] = helpers.parse; }] } };
script-loader
Script-loader在全局上下文里提供代码,就像你把代码加到script标签里一样。这种模式下,每一个普通的库应该都适用。require,module等还不确定。
假设你有一个legacy.js文件,包含:
GLOBAL_CONFIG ={};
使用script-loader…
require('script-loader!legacy.js');
基本用法:
eval("GLOBAL_CONFIG = {};");
noParse选项
当没有AMD或者CommonSJ版本的模块的前提下,你还想引入dist,你可以把模块标记成noParse。这样webpack就只是引入模块而不解析它,这样可以提高编译时间。
module.exports ={ module:{ noParse:/jquery|backbone/ } };
-- End --
相关推荐
【描述】:这个压缩包可能包含了一系列关于Laravel Jos项目的源代码、教程文档、示例应用和其他辅助材料。"Laravel Jos"可能是项目的名字,或者是特定功能或模块的简称。用户可以通过解压并学习这些内容来深入了解...
它们提供了代码高亮、代码提示、断点调试等辅助功能,帮助提高开发效率。此外,快速启动软件、DEBUG工具、终端或命令提示符以及包管理工具也是提高开发效率的关键工具。 环境搭建对于全栈工程师来说同样重要。这...
"maptalks-build-helpers" 是Maptalks项目的一部分,包含了构建和开发Maptalks库时所需的辅助工具和脚本。 在Maptalks的构建过程中,"build-helpers" 文件夹通常包含以下关键组成部分: 1. **配置文件**:如`...
4. **代码压缩**:为了减少网络传输时间和提高加载速度,开发中会使用工具如UglifyJS、Terser或Webpack等对JavaScript和CSS进行压缩,去除空格、换行和不必要的字符,甚至进行变量名混淆。 5. **代码查看和调试**:...
1. `README.md`:项目说明文档,通常包括安装指南、使用示例和贡献规则等。 2. `src`:源代码目录,包含Vue组件、样式和逻辑代码。 - `components`:存放自定义的UI组件。 - `styles`:CSS或Sass/LESS等样式文件,...
4. **文档**:可能包含README文件,提供项目介绍、安装指南、API参考以及使用示例,帮助开发者快速上手。 5. **资源**:可能包含图片、音频、视频等素材,这些都是创建JClic活动时可能用到的多媒体资源。 6. **构建...
2. **配置文件**:配置文件可能包含项目构建和打包的相关设置,如webpack.config.js或package.json。这些文件定义了项目如何被编译、打包以及依赖项的管理。 3. **示例和测试**:示例代码(通常在examples或samples...
前端开发,又称客户端开发,指的是创建和维护网站或应用程序的用户界面和用户体验的过程。它侧重于可视化的部分,即用户可以直接看到并与之互动的部分。前端开发的核心在于提供直观、友好且高效的用户体验。 #### ...
3. **文档**:项目文档可能包括`README.md`,其中会详述如何安装、初始化、配置和自定义`Flicking`组件。此外,还可能有API参考和指南,帮助开发者深入理解和使用这个库。 4. **样式**:`css`文件可能包含必要的...
除了核心功能,ef.js可能还具备了一些辅助开发的特性,如自动化任务运行器(例如Gulp或Webpack)、代码检查和格式化工具(如ESLint和Prettier)、以及测试框架(如Jest或Mocha)。这些工具能够优化开发流程,提高...
9. **文档和教程**: 可能包含了一份详细的用户指南或教程,解释了如何使用这些辅助工具和最佳实践,以帮助开发者快速上手。 10. **持续集成与自动化测试**: 高质量的项目通常会采用持续集成(CI)和自动化测试。...
6. **README**:项目简介、安装指南、贡献指南等信息,帮助开发者了解项目背景和参与方式。 Solid库的一些关键特性包括: 1. **响应式系统**:Solid使用其自定义的响应式系统,能够在数据变化时高效地追踪依赖关系...
10. **docs**:这个目录可能包含了项目相关的文档,如API参考、用户指南等,便于开发者和用户理解项目。 总的来说,`vue-templates/webpack` 提供了一套完整的Vue.js开发环境,包含了Webpack的配置、项目管理和自动...
3. **文档**:可能包括README文件,解释了项目的用途、安装指南、API参考和使用示例。这对于开发者理解和使用该项目至关重要。 4. **资源文件**:如图片、字体或其他媒体文件,可能被用作可视化的一部分或者作为...
9. **文档**:README.md或其他形式的项目文档,解释如何安装、运行和使用项目。 10. **许可证文件**:LICENSE文件,说明项目使用的开源协议。 11. **静态资源**:如 favicon.ico(浏览器标签页图标)和robots.txt...
该软件包提供了Webpack配置和相关辅助方法的可重用片段,否则这些片段将需要在许多项目组件之间重复。 访问以查看完整的项目文档,包括每个包含的模块的指南和入门说明。 访问文件夹以查看或修改用于生成此文档...
8. **文档**:README文件或其他文档可以提供项目背景、安装指南、使用示例等信息。 9. **许可证**:开源项目通常会有LICENSE文件,说明代码的使用权限和条件。 10. **问题追踪**:可能包含一个ISSUE_TEMPLATE,用于...
为了方便用户理解和使用,`A-Plugin`通常会提供详尽的文档和教程,包括安装指南、API参考、示例代码等,帮助开发者快速上手并发挥其最大价值。 总结,`A-Plugin`是前端开发者的得力助手,它通过整合各种工具和插件...
因此,下载并解压"SIMURAN-源码.zip"后,开发者可以期待找到README文件、安装指南、API文档和其他辅助材料。 由于没有提供具体的标签,我们无法得知SIMURAN的用途或技术栈。不过,通常来说,一个开源项目可能会涉及...
7. **文档**:可能有README文件或其他形式的文档,解释项目的目的、如何安装和使用,以及开发者指南。 8. **测试**:源代码中可能包含测试用例,使用Jest、Mocha或其他测试框架确保代码质量。 9. **模块化**:如果...