非常教程

Webpack参考手册

装载 | Loaders

imports-loader

导入加载器允许您使用依赖于特定全局变量的模块。

这对于依赖全局变量$this作为window对象的第三方模块非常有用。导入加载程序可以添加必要的require('whatever')调用,因此这些模块可以与webpack一起使用。

安装

npm install imports-loader

用法

假设你有 example.js 这个文件

$("img").doSomeAwesomeJqueryPluginStuff();

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

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

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

loader查询值

含义

angular

var angular = require("angular");

$=jquery

var $ = require("jquery");

define=>false

var 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

自定义角模块

imports-loader?angular

禁用 AMD

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

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

imports-loader?define=>false

有关兼容性问题的更多提示,请查看官方文档的 Shimming 模块。