Есть ли способ автоматически построить зависимость в package.json? - PullRequest
3 голосов
/ 12 апреля 2019

Я использую firebaseui, и мне нужно , чтобы собрать его с французской локализацией, потому что локализованные версии не публикуются в npm. Мой текущий package.json выглядит так:

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

Есть ли способ изменить его так, чтобы firebaseui строился с параметром build-js-fr на npm install?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Вот более прямое решение, я не рекомендую его, и это всего лишь подтверждение концепции для начала, но вы можете использовать сценарий postinstall в package.json для выполнения сценария после npm i.

У вас будет что-то вроде этого:

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

Создайте сценарий postinstall.sh и сделайте его исполняемым:

touch postinstall.sh
chmod u+x postinstall.sh

Затем вы можете клонировать репо и собрать егонепосредственно, вот пример 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

Но это займет много времени для запуска. Решение Марселя Фальера звучит лучше.Я попытался запустить команду сборки из папки firebaseui в node_modules.Вам понадобится gulp, но вы получите ошибку из-за отсутствия gulpfile.js.

Я протестировал решение, опубликованное здесь, на github:
https://github.com/GabLeRoux/npm-build-firebaseui-postinstall-example

Обратите внимание, что это может произойти сбой в Windows.Это только подтверждение концепции ?

1 голос
/ 12 апреля 2019

Как мы можем найти в этом выпуске Github :

[Локализация] Может случиться позже в будущем.

Я бы не рекомендовалиметь локальный форк со своей собственной сборкой, потому что вы будете отклоняться от основного репо, теряя при этом обновления и тому подобное.Тем не менее, в комментарии к этой проблеме предлагается использовать patch-package, модуль npm, который позволит вам сделать «пластырь».Кажется, хорошо.

Поэтому я бы предложил следующий план:

  • Вы обновляете способ построения firebaseui прямо внутри вашей папки node_modules.
  • Затем npx patch-package firebaseui, что создаст paches/firebaseui-3.5.2.patch.
  • Добавьте эту папку в систему контроля версий, и каждый член команды получит патч на npm i.
  • Как только firebaseui lib получит i18n правильно, вы откажетесь от патча.
...