运行 npm script 命令时覆盖 package.json 键

Posted

技术标签:

【中文标题】运行 npm script 命令时覆盖 package.json 键【英文标题】:Overriding package.json keys while running npm script command 【发布时间】:2018-08-18 06:53:27 【问题描述】:

我有一个电子应用程序。

我的 package.json 有一些特定于应用程序的设置,例如 serverUrltype_of_application 等。我在应用程序中使用这些设置。

使用electron-builder 构建应用程序时,我想用不同的值覆盖这些配置键值。

我将为不同的type_of_application 构建具有不同serverUrl 的相同应用程序。也有可能这些将安装在同一台机器上,所以我还想为不同的构建更改包 nameproductName 键值。

所以我的目标是使用包含所有这些设置的单独配置文件来构建具有不同设置的应用程序。在构建时,我将使用其中一个配置文件,它应该覆盖 package.json 文件中的默认配置。

一种可能性是为不同类型的构建提供完整的 package.json,但在这种情况下,dependencies 等键也将被复制,当添加新的依赖项时这将难以管理。

有什么方法可以实现吗?

【问题讨论】:

一个选项可能是使用extraMetadata electron-builder 选项在构建过程中插入易失性元数据。如果您以编程方式(javascript)而不是使用命令行开始构建,您可以使用不同的配置动态地工作。 【参考方案1】:

一种策略是将所有应用特定的配置保存在一个或多个单独的配置文件中,您的应用会在启动时加载这些配置文件。

我倾向于将此类文件保存在 APP_HOMEDIR/etc(向我的 Unix 根源致敬)下,根据您需要的每个应用环境命名。

更新

对于使用 electron-builder 的 Electron 应用程序开发,存在一个配置键 extraMetadata,它允许您在每次构建时注入在 package.json 中设置的值。

请参阅electron-builder configuration 了解更多信息。

(感谢 OP Harshveer Singh 建议此更新。)

【讨论】:

这将在安装应用程序后应用,对吗?我需要使用其中之一进行不同的配置和应用程序。这样我就可以使用不同的设置快速构建(无需手动更新package.json),使用类似:npm build use-config1.json 那么您可能希望使用诸如 Gulp 之类的构建工具来管理不同运行时配置的构建。 是的,我认为是这样。对于 Electron 应用程序构建,我找到了一个构建配置键 extraMetadata,它覆盖了 package.json 中定义的键,所以对于我来说,我正在使用它。如果您可以修改您的响应以回答构建时间配置,我会接受。 @HarshveerSingh extraMetadata 是如何工作的?文档根本没有解释。

以上是关于运行 npm script 命令时覆盖 package.json 键的主要内容,如果未能解决你的问题,请参考以下文章

运行 npm 命令时 -- 做啥?

当运行npm install 命令的时候带上ignore-scripts,会发生什么?

npm并行&串行执行多个scripts命令

sh: react-scripts: 运行 npm start 后找不到命令

NPM Scripts 的使用

当我运行“npm run start”时,为啥 npm react-scripts 会产生语法错误? [复制]