使用Webpack基于环境进行条件构建

2024-01-12

我有一些需要开发的东西 - 例如模拟,我不想用它来膨胀我的分布式构建文件。

在 RequireJS 中,您可以在插件文件中传递配置,并基于该配置有条件地要求内容。

对于 webpack 似乎没有办法做到这一点。首先为我使用的环境创建运行时配置解析别名 http://webpack.github.io/docs/configuration.html#resolve-alias根据环境重新指向需求,例如:

// All settings.
var all = {
    fish: 'salmon'
};

// `envsettings` is an alias resolved at build time.
module.exports = Object.assign(all, require('envsettings'));

然后在创建 webpack 配置时我可以动态分配哪个文件envsettings指向(即webpackConfig.resolve.alias.envsettings = './' + env).

不过我想做一些类似的事情:

if (settings.mock) {
    // Short-circuit ajax calls.
    // Require in all the mock modules.
}

但显然,如果环境不是模拟的,我不想构建这些模拟文件。

我可以再次使用resolve.alias手动将所有这些需求重新指向存根文件 - 但有没有一种方法感觉不那么hacky?

我有什么想法可以做到这一点吗?谢谢。


您可以使用定义插件 https://github.com/webpack/docs/wiki/list-of-plugins#defineplugin.

我通过在你的 webpack 构建文件中做一些简单的事情来使用它,其中env是导出设置对象的文件的路径:

// Webpack build config
plugins: [
    new webpack.DefinePlugin({
        ENV: require(path.join(__dirname, './path-to-env-files/', env))
    })
]

// Settings file located at `path-to-env-files/dev.js`
module.exports = { debug: true };

然后在你的代码中

if (ENV.debug) {
    console.log('Yo!');
}

如果条件为假,它将从构建文件中删除此代码。你可以看到一个正在运行的Webpack 构建示例在这里 https://github.com/mderrick/webpack-react-boilerplate/blob/master/webpack.default.config.js#L74.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Webpack基于环境进行条件构建 的相关文章

随机推荐

  • R中读取文件时出错

    我是 R 社区的新人 在编写我的第一个程序时 我遇到了一个愚蠢的问题 当尝试使用以下代码读取 RDS 文件时 tweets lt readRDS RDataMining Tweets 20160212 rds 会出现以下错误 Error i
  • 使用全文搜索来搜索mysql中不完整的单词

    我正在制作一个图书馆管理系统 我在从 mysql 数据库搜索书籍时遇到问题 为了在 mysql 中搜索数据 我们使用全文搜索 但只有给出完整的单词时它才有效 如果用户输入不完整的单词而不是实际单词 是否有任何功能可以搜索 例如 如果书名是微
  • 一个异常处理程序用于处理一类的所有异常

    我有一个包含多种方法的类 并且希望为所有方法提供一个异常处理程序 这些方法有很多 而且它们有不同的参数 为每个方法都编写 try catch 会很丑陋 您是否知道一种方法 我可以通过在类异常处理程序中使用一个来处理所有这些异常处理程序 UP
  • 检查MySql列之一中是否存在表单发布的变量[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个 html 表单 其中发布了类编号值 Ex 150701 003 在我的 php 操作文件中 我想检查变量 class number
  • “设备的 ioctl 不合适”

    我有一个在 AIX 机器中运行的 Perl 脚本 该脚本尝试从某个目录打开文件 但无法读取该文件 因为文件没有读取权限 但我收到不同的错误消息inappropriate ioctl for device 难道不应该说类似的话吗no read
  • WebDriverException:服务 U:/Scraping/chromedriver.exe 意外退出。使用 Chrome 和 Python 时状态代码为:1

    我一直在尝试让网络驱动程序在 Chrome 中与 Python 一起工作 但我一生都无法找出问题所在 尽管我花了一天的大部分时间进行故障排除 我已将 chromedriver 解压缩到我正在使用的文件夹中 我尝试使用executable p
  • javascript 的 'this' 关键字与 java 的 'this' 关键字有何不同?

    javascript 的 this 关键字与 java 的 this 关键字有何不同 任何实际示例将不胜感激 var counter val 0 increment function this val 1 counter increment
  • 如何处理使用套接字连接到服务器的多个客户端?

    我有一个 Android 应用程序需要让多个设备连接 一台设备应充当组所有者并向所有客户端发出指令以执行特定操作 我认为它类似于一款无线手持游戏 其中一名玩家是主机 我有几个问题 所以我会尽量保持简洁 即使只回答第一个问题也会有帮助 首先
  • R ffdfdply 分割问题

    我对 R 的 ffdfdply 函数有疑问 a as ffdf data frame b 11 20 c c 4 4 4 4 4 5 5 5 5 5 d c 1 1 1 0 0 0 1 0 1 1 ffdfdply a split a c
  • 标准化 URI 以仅提取域名的最佳方法是什么?

    例如 http www google co uk www google co uk google co uk 将全部转换为 google co uk 我本来想使用 System Uri 类 但这似乎只接受带有方案的 url 提取域名很简单
  • Swift:将一组字典扁平化为一个字典

    在 Swift 中 我试图将一组字典扁平化为一个字典 IE let arrayOfDictionaries key1 value1 key2 value2 key3 value3 key4 value4 the end result wil
  • 为什么 Angular Google 地图中的 元素需要 ng-non-bindable?

    我有一个关于的元素角度谷歌地图 http angular ui github io angular google maps api插入 Windows 元素文档中的示例源代码使用ng non bindable属性为 div 里面的 div
  • 突出显示表格行

    我有以下表结构 table tbody tr td Lorem td td Ipsum td td Fierent td tr tr td Lorem ipsum td td pro ut tale erant td td mnesarch
  • 通过发送意图来启动 Android WiFi 管理器?

    我正在开发一个应用程序 我想要一个按钮 打开Android内置的WiFi菜单 我真的不想自己实现扫描和连接代码 我可以发送任何打开此菜单的意图吗 你应该使用ACTION PICK WIFI NETWORK http developer an
  • Nutch 爬取文档的 Elasticsearch 映射面临问题

    使用 nutch 和 elasticsearch 进行爬行时面临一些严重的问题 我们的应用程序中有两个数据存储引擎 MySql 弹性搜索 假设我有 10 个 url 存储在 mysql 数据库的 urls 表中 现在我想在运行时从表中获取这
  • chain(*iterable) 与 chain.from_iterable(iterable) 之间的区别

    我对所有有趣的迭代器着迷itertools 但我遇到的一个困惑是这两个函数之间的区别以及为什么chain from iterable exists from itertools import chain def foo n for i in
  • Chrome 中的 Tab 悬停事件

    chrome 扩展 api 是否提供将鼠标悬停在选项卡上的事件 我无法在文档中找到它 或者也许有一种未记录的方法 目前似乎没有办法做到这一点 我希望他们添加它
  • 单击系统托盘图标 Python Win32

    环境 我在 Windows 7 64 位上使用 Python 2 7 32 位 我正在使用 win32 Api 来制作一个 Windows 自动化工具 我知道有一些工具存在 但我正在制作自己的工具 Problem 我被困在窗户边系统托盘 通
  • 无法将 com.facebook.share.widget.Sharebutton 添加到布局 XML

    我正在尝试在 Android 中使用 Facebook SDK分享内容 https developers facebook com docs sharing android来自我的应用程序的方向 我从这里开始使用以下代码脸书文档 https
  • 使用Webpack基于环境进行条件构建

    我有一些需要开发的东西 例如模拟 我不想用它来膨胀我的分布式构建文件 在 RequireJS 中 您可以在插件文件中传递配置 并基于该配置有条件地要求内容 对于 webpack 似乎没有办法做到这一点 首先为我使用的环境创建运行时配置解析别