gpt4 book ai didi

javascript - 避免将 lib 依赖项与 webpack + handlebars loader 捆绑在一起

转载 作者:数据小太阳 更新时间:2023-10-29 05:26:01 26 4
gpt4 key购买 nike

我正在使用 handlebars 模板编写一个库,我想使用 Webpack 来捆绑它。我正在使用 handlebars-loader这样我就可以要求并预编译模板。

但是我不希望 Handlebars (或 Handlebars /运行时)包含在我编译的库中,因此,我想将它们设置为外部。

这是我的配置文件:

module.exports = {
context: __dirname + '/src',
entry: './index.js',
output: {
path: __dirname + '/dist',
filename: 'stuff.js',
libraryTarget: 'umd',
library: 'Stuff'
},
externals: [{
'handlebars/runtime': {
root: 'Handlebars',
amd: 'handlebars.runtime',
commonjs2: 'handlebars/runtime',
commonjs: 'handlebars/runtime'
}
}],
module: {
loaders: [
{ test: /\.handlebars$/, loader: 'handlebars-loader' }
]
}
};

不幸的是,它不起作用,handlebars-loader 仍然使 handlebars/runtime 被捆绑...

我相信这是因为我不直接需要 handlebars/runtime,而是在加载器添加的代码中需要它。

有没有办法将其标记为外部?

编辑:我知道我需要 handlebars/runtime 来编译我的模板。但是当我正在构建一个库时,我希望它由库的用户提供而不是被包含在内。这样,如果我的用户也在使用 Handlebars,则库不会被加载两次。我认为图书馆避免捆绑任何依赖项是一种很好的做法(以我的拙见,这是我们经常看到的事情)。

最佳答案

handlebars-loader 团队 helped me solve this issue .

问题是 handlebars-loader 默认情况下使用绝对路径加载 handlebars 的运行时。但是,可以使用 handlebar 加载器的 runtime 参数为 handlebars 的运行时指定不同的路径。然后可以将此路径设置为外部路径。

这是有效的:

module.exports = {
context: __dirname + '/src',
entry: './index.js',
output: {
path: __dirname + '/dist',
filename: 'stuff.js',
libraryTarget: 'umd',
library: 'Stuff'
},
externals: [{
'handlebars/runtime': {
root: 'Handlebars',
amd: 'handlebars/runtime',
commonjs2: 'handlebars/runtime',
commonjs: 'handlebars/runtime'
}
}],
module: {
loaders: [
{ test: /\.handlebars$/, loader: 'handlebars-loader?runtime=handlebars/runtime' }
]
}
};

关于javascript - 避免将 lib 依赖项与 webpack + handlebars loader 捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29349145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com