1 imports-loader
1.1 作用
通过 imports-loader 能够给匹配文件自动导入配置模块。比如,对于某个依赖 jquery 的 a.js,通过 imports-loader 导入 a.js 时,webpack 会自动在 a.js 文件中添加 import jquery 语句,而省去了手动导入 jquery 的过程。
1.2 安装
1
| npm install imports-loader --save-dev
|
1.3 使用
1.3.1 inline 方式
index.js
1 2 3 4 5
| import "imports-loader?imports=default|jquery|$!./lib.js";
|
1.3.2 配置文件方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| const path = require("path");
module.exports = { entry: "./src/index.js", output: { path: path.resolve(__dirname, "dist"), }, mode: "development", module: { rules: [ { test: require.resolve("./src/index.js"), use: { loader: "imports-loader", options: { imports: ["default jquery $"], }, }, }, ], }, };
|
index.js 中会添加如下语句:
2 exports-loader
2.1 作用
通过 exports-loader 可以在源码中添加 exports 语句。适用于源码中没有 exports 语句的旧库。
2.2 安装
1
| npm install exports-loader --save-dev
|
2.3 使用
2.3.1 inline 方式
1 2 3 4
| import { myFunction } from 'exports-loader?exports=myFunction!./file.js';
|
2.3.2 配置文件方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| module.exports = { module: { rules: [ { test: require.resolve('./path/to/vendor.js'), loader: 'exports-loader', options: { type: 'module', exports: 'Foo', }, }, ], }, };
|
3 expose-loader
3.1 作用
expose-loader 可以将模块添加到全局对象,并使模块参与打包。
3.2 安装
1
| npm install expose-loader --save-dev
|
3.2.1 inline 方式
1 2
| import $ from 'expose-loader?exposes[]=$&exposes[]=jQuery!jquery';
|
3.2.2 配置文件方式
1 2 3 4 5 6 7 8 9 10 11 12 13
| module.exports = { module: { rules: [ { test: require.resolve("jquery"), loader: "expose-loader", options: { exposes: ["$zz", "jQuery"], }, }, ], }, };
|
1 2 3 4 5 6
|
import $zz from "jquery"; import "./test.js";
$zz("#test1").text("hello");
|
1 2 3
| $zz("#test2").text("world");
|