Webpack 有没有办法完全忽略网页中的动态需求?
我正在开发一个应用程序,它使用动态需求在运行时加载扩展(节点模块)。该应用程序当前获得一系列已安装的扩展循环,需要它们并保存对它们的引用:Webpack 有没有办法完全忽略网页中的动态需求?,webpack,Webpack,我正在开发一个应用程序,它使用动态需求在运行时加载扩展(节点模块)。该应用程序当前获得一系列已安装的扩展循环,需要它们并保存对它们的引用: getInstalledExtensions() .then(extensions => { extensions.map(extension => require(extension.path)) }) .then(saveExtensions) 我无法让webpack完全忽略第三行的require语句:require(e
getInstalledExtensions()
.then(extensions => {
extensions.map(extension => require(extension.path))
})
.then(saveExtensions)
我无法让webpack完全忽略第三行的require语句:require(extension.path)
已安装扩展的列表在生成时未知。当用户第一次安装应用程序时,阵列为空,随着用户安装/卸载扩展,阵列会增大/缩小
我试过:
module: {
exprContextRegExp: /$^/,
exprContextCritical: false,
}
但它只是将require(extension.path)
替换为
!(function webpackMissingModule() { var e = new Error("Cannot find module \".\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())
我为什么要在电子应用程序中使用webpack?
require
价格昂贵,而且会严重影响我的应用程序的启动时间。例如,require('request')
大约需要800毫秒,这太荒谬了。我想捆绑尽可能多的模块,以减少我的应用程序的启动时间
我也希望有可能使用CSS加载程序。我目前混合使用全局类和内联样式,这并不理想。我在为atom制作yeoman包时遇到了同样的问题。我的解决办法如下:
我在为atom制作一个约曼包时也遇到了同样的问题。我的解决办法如下:
您可以在electron中使用
window.require()
而不是require()
。您可以在electron中使用window.require()
而不是require()
。require(/* webpackIgnore: true */ 'ignored-module')
getInstalledExtensions()
.then(extensions => {
extensions.map(extension => require(/* webpackIgnore:true */ extension.path))
})
.then(saveExtensions)
您还可以尝试另一种选择。检查网页包插件。如果它有非字符串表达式(在中为require(extension.path)),则该插件将忽略require()。网页包在导入和require中不支持完全动态表达式。在这种情况下,我认为网页提供的解决方案非常难看。您可以使用webpack提供的神奇评论。为此,在导入/要求方法中包含一条注释webpackIgnore:true。
require(/* webpackIgnore: true */ 'ignored-module')
getInstalledExtensions()
.then(extensions => {
extensions.map(extension => require(/* webpackIgnore:true */ extension.path))
})
.then(saveExtensions)
您还可以尝试另一种选择。检查webpack插件。如果require()有非字符串表达式(在您的案例中为require(extension.path)),则该插件将忽略该表达式。此解决方案对我很有效。谢谢编辑:我没有使用字符串替换加载程序-我只需要在外部粘贴originalrequire.js就可以了。这个解决方案对我来说很有效。谢谢编辑:我没有使用字符串替换加载程序-我只需要在外部粘贴originalrequire.js就可以了。ravi,请不要只是发布一些工具或库作为答案。拉维,请不要只是发布一些工具或库作为答案。至少要在答案本身上加以证明。