簡體   English   中英

有沒有辦法在package.json中自動構建依賴項?

[英]Is there a way to automatically build a dependency in package.json?

我使用firebaseui,我需要使用法語本地化來構建它 ,因為本地化版本不會發布到npm。 我當前的package.json看起來像這樣:

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

有沒有辦法改變它,這樣firebaseui與內置build-js-fr參數上npm install

我們可以在這個Github問題中找到:

[本地化]可能會在以后的路上來。

我不建議你有自己的構建本地分叉,因為你將偏離主回購因此失去升級等。 但是,對這個問題的評論建議使用patch-package ,這是一個允許你制作“創可貼”的npm模塊。 我覺得很好。

所以我建議以下計划:

  • 您更新的方式firebaseui建成后,直接在里面node_modules文件夾。
  • 然后npx patch-package firebaseui paches/firebaseui-3.5.2.patch ,這將創建一個paches/firebaseui-3.5.2.patch
  • 將此文件夾添加到源代碼管理中,每個團隊成員都將在npm i上獲取補丁。
  • 一旦firebaseui lib獲得i18n,你就會拋棄補丁。

這是一個更直接的解決方案,我不推薦它,它只是一個概念證明讓你入門,但你可以使用package.jsonpostinstall腳本在npm i之后執行一個腳本。

你會有這樣的事情:

"script": {
    "postinstall": "./postinstall.sh",
}

創建postinstall.sh腳本並使其可執行:

touch postinstall.sh
chmod u+x postinstall.sh

然后你可以克隆repo並直接構建它,這是一個示例postinstall.sh

#!/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

但這需要花費大量時間才能運行。 Marcel Falliere的解決方案聽起來更好。 我試圖從運行構建命令firebaseui文件夾node_modules 你需要gulp ,但是由於缺少gulpfile.js你會遇到錯誤。

我在github上測試了上面發布的解決方案:
https://github.com/GabLeRoux/npm-build-firebaseui-postinstall-example

請注意,這可能會在Windows上失敗。 這只是概念證明 🍻

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM