有没有一种方法可以在package.json中自动建立依赖关系?

时间:2019-04-12 14:26:25

标签: javascript npm package.json firebaseui

我使用firebaseui,并且我需要to build it进行法语本地化,因为本地化版本未发布到npm。我当前的package.json如下所示:

"dependencies": {
    "firebaseui": "^3.5.2"
}

是否可以更改它,以便在firebaseui上使用build-js-fr参数构建npm install

2 个答案:

答案 0 :(得分:1)

我们在this Github issue中可以找到:

  

[本地化]稍后可能会出现。

我不建议您使用自己的构建使用本地fork,因为您将与主存储库分离,从而失去升级等功能。但是,对此问题的评论建议使用patch-package,这是一个npm模块,可让您制作“创可贴”。对我来说似乎很好。

所以我建议以下计划:

  • 您可以直接在firebaseui文件夹内更新node_modules的构建方式。
  • 然后npx patch-package firebaseui,将创建一个paches/firebaseui-3.5.2.patch
  • 将此文件夹添加到您的源代码管理中,每个团队成员都将在npm i上获得补丁。
  • firebaseui库一旦正确使用,就放弃补丁。

答案 1 :(得分:1)

这是一个更直接的解决方案,我不建议这样做,它只是一个概念证明,可以帮助您入门,但是您可以在postinstall中使用package.json脚本来执行{ {1}}。

您会遇到这样的事情:

npm i

创建"script": { "postinstall": "./postinstall.sh", } 脚本并使其可执行:

postinstall.sh

然后,您可以克隆存储库并直接构建它,下面是一个示例touch postinstall.sh chmod u+x postinstall.sh

postinstall.sh

但是这将花费很多时间。 Marcel Falliere's solution听起来更好。我尝试从#!/usr/bin/env bash git clone https://github.com/firebase/firebaseui-web.git cd firebaseui-web git checkout v3.5.2 npm i for language in fr en es do npm run build build-js-$language done 的{​​{1}}文件夹运行build命令。您需要firebaseui,但由于缺少node_modules而会遇到错误。

我测试了上面在github上发布的解决方案:
https://github.com/GabLeRoux/npm-build-firebaseui-postinstall-example

请注意,这可能会在Windows上失败。这只是概念证明