我看到script-loader
有一行写
"require(" + JSON.stringify("!!" + path.join(__dirname, "addScript.js")) + ")"
谁能告诉我为什么在这里使用!!
?提前谢谢。
答案 0 :(得分:2)
我真的不想发布"答案"因为我不确定...但是,!
是一个标准的webpack加载器分隔符,该调用将返回如下内容:
"!!/var/www/project/addScript.js"
它没有出现在项目的初始提交中,因此可以理解这是一个解决方法,它被添加为与更新版本的webpack兼容(确切地说是0.9)。您可以看到第一个感叹号已添加here for webpack 0.9 compatibility。第二个是without much explanation (commit "Don't crash in environments without window")
答案 1 :(得分:1)
它只会将path.join()
返回的任何内容转换为bool。
答案 2 :(得分:0)
我在NormalModuleFactory.js
文件夹的webpack
中找到了答案。
第70行:
var noPrePostAutoLoaders = /^!!/.test(request);
当我使用require('./file')
时,preLoader对文件有效,当我使用require('!!./file')
时,preLoader对文件没有影响。所以我认为!!
前缀可以防止preLoader影响文件或让webpack忽略preLoader。
我在webpack 1.x网站https://webpack.github.io/docs/loaders.html#loader-order
中找到了该文档答案 3 :(得分:0)
一个!
将忽略所有后加载程序。
两个!!
将忽略前后装入程序。
因此,如果您没有!
或只有1个!
前缀,
加载程序的输入可能
不是实际的文件,因为可能是
由另一个装载机处理
从您的配置。