npm установка и сборка разветвленного РЕПО github



Это не совсем новый вопрос, но я уже давно ищу вокруг, и у меня возникли проблемы с поиском решения.



я использую модуль для моего углового приложения под названием angular-translate. Однако мне пришлось внести несколько небольших изменений в исходный код, чтобы все работало так, как мне хотелось бы, и теперь я хочу сохранить эти изменения на npm install. Коллега предложил мне разветвить РЕПО исходного кода и указать на мое разветвленное РЕПО как зависимость, который я пробовал таким образом, например



npm install https://github.com/myRepo/angular-translate
npm install https://github.com/myRepo/angular-translate/archive/master.tar.gz


первый дает мне каталог, как это без сборки. Просто посылка.формат JSON. ,npmignore, и некоторые файлы markdown



-angular-translate
.npmignore
.nvmrc
CHANGELOG.md
package.json
etc


второй npm install дает мне полное РЕПО, Но опять же я не получаю сборки, как при использовании команды npm install angular-translate. Я видел некоторую дикцию запуска сценария prepublish, но я не уверен, как это сделать при установке всех модулей. Я также попытался опубликовать вилку как свой собственный модуль, чтобы реестр npm, но опять же я не получаю сборки, и я не уверен, что это правильно...



Я извиняюсь за свое невежество по этой теме. У меня нет большого опыта работы с npm. Хотелось бы получить некоторые отзывы по этому вопросу. Похоже, что это может быть достаточно распространенной проблемой, когда необходимо внести изменения в исходный код пакета? Может быть, есть лучшее решение? Заранее спасибо за вашу помощь.

719   3  

3 ответов:

попробовать npm install <ghusername>/<repoName>, где <ghUsername> - это ваше имя пользователя на GitHub (без @) и <repoName> - имя репозитория. Это должно правильно установить его. Вы, скорее всего, захотите использовать --save или --save-dev флаг с командой install сохранить зависимость в package.json.

если это не работает правильно, проверьте содержимое .

не паникуйте, если команда установки занимает много времени; установка из репозитория Git медленнее, чем установка из реестра npm.


Edit:

ваша проблема в том, что в вашем случае, dist/ не привязан к РЕПО (так как он находится в .gitignore). Вот где живет фактический код. dist/ строится из файлов в src/ перед публикацией пакета в реестре npm, но dist/ никогда не стремится к РЕПО.

это некрасиво, но в данном случае вам придется удалить dist/ С .gitignore и затем беги:

npm run build
git add .
git commit
git push

(убедитесь, что вы запустите npm install первая)

вы тогда должны быть в состоянии установить из github.

там может быть другой способ сделать это с помощью postinstall сценарий, но я не уверен, что это возможно; я никогда не пробовал.

обновление для тех, кто использует npm 5:

по состоянию на npm@5, скрипты.

использовать prepare для шагов сборки и prepublishOnly только для загрузки.

Я нашел добавление "prepare": "npm run build" чтобы скрипты исправили все мои проблемы.

чтобы отбросить отличный ответ @RyanZim,postinstall определенно является допустимым вариантом для этого.

либо выполните одно из следующих действий:

  1. обновить пакет.json в вашем разветвленном РЕПО для добавления элемента postinstall в Скрипты. Здесь запустите все, что вам нужно, чтобы получить скомпилированный вывод (предпочтительно).
  2. обновить пакет.json и добавьте postinstall, который обновляет необходимый каталог в node_modules.

Если вы раскошелились другой репозиторий persons, тогда может быть стоит поднять вопрос, чтобы проиллюстрировать проблему, что установка их пакета через GitHub не работает, поскольку он не предоставляет необходимых средств для создания скрипта. Оттуда они могут либо принять PR, чтобы решить это с помощью postinstall, либо они могут отклонить его, и вы можете сделать #2.

Comments

    Ничего не найдено.