首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack:每个入口点不同的(定义插件)设置

Webpack:每个入口点不同的(定义插件)设置
EN

Stack Overflow用户
提问于 2017-08-28 20:06:58
回答 2查看 2.5K关注 0票数 18

对于我的一些包文件,我想构建不同的版本(例如,一个有管理功能,一个没有)。

似乎DefinePlugin通常用于这类事情,但也有像if-loaderifdef-loader这样的加载器可用。

现在的问题是,它们似乎都在所有入口点之间共享一个配置。我需要一种方法来为不同的入口点设置不同的配置(如{with_admin_mode: true}{with_admin_mode: false})。

我想把配置放在实际入口点JS文件的顶部,但我不知道如何正确地跨所有模块创建一个全局变量,这些模块将被检测为true == false并被删除。

EN

回答 2

Stack Overflow用户

发布于 2017-09-07 03:57:29

对不起,我想写的是providePlugin,不是definePlugin。DefinePlugin将直接替换代码中的变量,并且不会创建全局变量。

您可以使用providePlugin从您创建的模块文件中设置全局配置变量:

在您的webpack配置中:

代码语言:javascript
复制
plugins: [
  new webpack.ProvidePlugin({
    'config': 'config'
  })
  ...
],
resolve: {
  alias: { 'config':  path.resolve(__dirname, './config') },
  extensions: ['.js']
}

config将被设置为导出config.js文件的全局变量。

然后,您可以在不同的入口点中访问和修改此全局变量。例如,您可以在entry1.js中执行config.with_admin_mode = true;,在entry2.js中执行config.with_admin_mode = false;

另一种解决方案是直接从您的模块在窗口上设置全局变量,例如window.with_admin_mode = true;

票数 1
EN

Stack Overflow用户

发布于 2017-09-05 03:58:14

试着看看webpack-merge -智能合并应该能帮你解决这个问题。

它可以帮助动态配置特定的入口点,插件,以及任何你想要的东西,这取决于环境上的一些变量。

将配置拆分到不同文件中的良好做法。您可以通过所有入口点使用相同的内容进行一些通用配置,例如,加载程序,然后为with_admin_modewithout_admin_node模式进行自定义配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45918611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档