Webpack Web包加载程序测试中的require.resolve是什么
我在网页上学习这个。我已经通过以下教程构建了几个网页包演示项目 以下是配置导入加载程序的代码:Webpack Web包加载程序测试中的require.resolve是什么,webpack,Webpack,我在网页上学习这个。我已经通过以下教程构建了几个网页包演示项目 以下是配置导入加载程序的代码: // ./webpack.config.js module.exports = { ... module: { loaders: [ { test: require.resolve("some-module"), loader: "imports?this=>window"
// ./webpack.config.js
module.exports = {
...
module: {
loaders: [
{
test: require.resolve("some-module"),
loader: "imports?this=>window"
}
]
};
我的问题:
需要解决什么问题(“某些模块”)
?这是什么意思李>
例如,require.resolve(“”
)
> require.resolve('angular')
/tmp/node_modules/angular/index.js
因此,在您的示例中,属性test
将包含指向模块的路径字符串some module
,默认情况下webpack字符串指向正则表达式,因此加载程序配置的最终版本如下所示:
{
test: /^node_modules\/some-module\/index.js/,
loader: 'imports?this=>window"
}
如您所见,此加载程序将仅应用于一个文件webpack的require.resolve返回模块id-webpack.js.org/api/module methods/#require resolve 模块ID是Web包中的一个数字(与NodeJS不同,NodeJS是一个 字符串——文件名)
使用require.resolve()而不仅仅是传递诸如Loader之类的字符串的确切原因是什么?@EJMason如果只传递像“foo”这样的名称,您永远不知道相对于哪个文件夹,web包将解析此名称。例如,您有一个npm库,它应该由客户端应用程序通过web包构建并通过npm发送。当客户端构建您的库并使用您的webpack.config
pwd
时,将是客户端项目目录,因此“foo”将相对于此文件夹进行解析。这意味着有可能1。web pack只是找不到这样的加载程序2)它解析这样加载程序的客户端版本