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. Хотелось бы получить некоторые отзывы по этому вопросу. Похоже, что это может быть достаточно распространенной проблемой, когда необходимо внести изменения в исходный код пакета? Может быть, есть лучшее решение? Заранее спасибо за вашу помощь.
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определенно является допустимым вариантом для этого.либо выполните одно из следующих действий:
- обновить пакет.json в вашем разветвленном РЕПО для добавления элемента postinstall в Скрипты. Здесь запустите все, что вам нужно, чтобы получить скомпилированный вывод (предпочтительно).
- обновить пакет.json и добавьте postinstall, который обновляет необходимый каталог в node_modules.
Если вы раскошелились другой репозиторий persons, тогда может быть стоит поднять вопрос, чтобы проиллюстрировать проблему, что установка их пакета через GitHub не работает, поскольку он не предоставляет необходимых средств для создания скрипта. Оттуда они могут либо принять PR, чтобы решить это с помощью postinstall, либо они могут отклонить его, и вы можете сделать #2.
Comments