返回介绍

imports-loader

发布于 2019-05-27 04:54:25 字数 4104 浏览 1403 评论 0 收藏 0

The imports loader allows you to use modules that depend on specific global variables.

This is useful for third-party modules that rely on global variables like $ or this being the window object. The imports loader can add the necessary require('whatever') calls, so those modules work with webpack.

安装

npm install imports-loader

用法

假设你有 example.js 这个文件

$("img").doSomeAwesomeJqueryPluginStuff();

然后你可以像下面这样通过配置 imports-loader 插入 $ 变量到模块中:

require("imports-loader?$=jquery!./example.js");

这将简单的把 var $ = require("jquery"); 前置插入到 example.js 中。

loader 查询值含义
angularvar angular = require("angular");
$=jqueryvar $ = require("jquery");
define=>falsevar define = false;
config=>{size:50}var config = {size:50};
this=>window(function () { ... }).call(window);

多个值

使用逗号 , 来分隔和使用多个值:

require("imports-loader?$=jquery,angular,config=>{size:50}!./file.js");

webpack.config.js

同样的,在你的 webpack.config.js 配置文件中进行配置会更好:

// ./webpack.config.js

module.exports = {
    ...
    module: {
        rules: [
            {
                test: require.resolve("some-module"),
                use: "imports-loader?this=>window"
            }
        ]
    }
};

典型的使用场景

jQuery 插件

imports-loader?$=jquery

自定义的 Angular 模块

imports-loader?angular

禁用 AMD

有很多模块在使用 CommonJS 前会进行 define 函数的检查。自从 webpack 两种格式都可以使用后,在这种场景下默认使用了 AMD 可能会造成某些问题(如果接口的实现比较古怪)。

你可以像下面这样轻松的禁用 AMD

imports-loader?define=>false

关于兼容性问题的更多提示,可以参考官方的文档 Shimming Modules

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文