让它与全局exports-loader
配置一起工作
我有这个使用以下设置:
src/deps.js // 这个文件只是声明了一个全局file
变量
const file = 'this is the file';
src/app.js // webpack 包的入口点。它import
是deps.js
(即使deps.js
没有export
声明,感谢export-loader
):
import file from './deps.js'
console.log(file);
webpack.config.js // webpack 配置文件
module.exports = {
entry: __dirname + '/src/app.js',
mode: 'development',
module: {
rules: [
{
test: /deps.js/,
use: 'exports-loader?file',
}
]
}
}
package.json // 这样我们就可以在项目本地运行 webpack
{
"name": "exports-loader-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"webpack": "node_modules/webpack/bin/webpack.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"exports-loader": "^0.7.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.2.3"
}
}
webpack.config.js
使用此设置,假设package.json
和src/
位于项目的根目录中,请执行以下操作:
$ npm run webpack
要捆绑脚本,然后:
$ node dist/main.js
检查file
变量是否正在加载(在浏览器中加载它也会这样做)。
让它与import
特定配置一起工作。
(这来自另一个答案)。
为此,您use
只需将exports-loader
, 加载到 中时无需任何进一步配置webpack.config.js
:
use: 'exports-loader',
export
然后在每个语句中指定要包装在子句中的变量import
:
import file from 'exports-loader?file!./deps.js'
为什么require.resolve()
语法不起作用?
我真的不知道。test
据我所知,该子句需要一个正则表达式(这就是实际上调用它的test
原因,因为test
javascript 中的正则表达式的方法),而且我不习惯其他类型的有效语法。我在您的代码段中看到了这一点:
module.exports = {
module: {
rules: [
{
test: require.resolve('globals.js'),
use: exports-loader?file,parse=helpers.parse
}
]
}
}
该use
值没有字符串引号。我想知道这是否破坏了配置,然后您会收到误导性错误,我不知道。我实际上相信您只是在复制和粘贴到堆栈溢出时没有粘贴引号。