就像这样,使用 DefinePluginECZN
为我的应用程序定义全局变量webpack runtimeValue
。
并且... WebpackModuleInfo 实际上来自我引用的文件ECZN
,但我只是获取模块文件路径,而不是Entry
...
那么,我可以获取 runtimeValue 上下文的条目信息,以便var value
为我的多 html 页面应用程序设置不同的值吗?
文字代码:
new Webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(WEBPACK_NODE_ENV),
development: JSON.stringify(WEBPACK_NODE_ENV_DEV),
production: JSON.stringify(WEBPACK_NODE_ENV_PROD),
ECZN: Webpack.DefinePlugin.runtimeValue((ctx) => {
console.log('WebpackModuleInfo :: ', ctx.module);
// @ts-ignore webpack.d.ts doesn't define resource, but it exists on ctx.module acutally
const moduleResource: unknown = ctx.module.resource;
if (typeof moduleResource === 'string' && moduleResource.length) {
const absPathFromCwd = path.relative(cwdResolve('.'), moduleResource);
return JSON.stringify(absPathFromCwd);
}
// throw error if not found
throw new Error('dynamic');
}),
})
我找到了一些解决方案:
- 使应用程序具有多个 webpack 配置以创建多个实例,如下所示:https ://github.com/webpack/webpack/issues/5546 (性能警告)
- 只需使用
moduleResource
as 参考来定义var Eczn
(并不精确)