Предполагается, что я написал модуль для Node.js, который я хотел бы сохранить в тайне. Я знаю, что могу (должен) добавить строку:
"private": "true"
к package.json
файлу, и я также знаю, что я могу npm install
этот модуль, используя путь файловой системы или ссылку на репозиторий git, включая GitHub.
Я также знаю, что могу поместить такой путь файловой системы или ссылку на git-репозиторий package.json
, чтобы эта dependencies
часть могла выглядеть примерно так:
"dependencies": {
"myprivatemodule": "git@github.com:..."
}
Теперь я хочу не ссылаться на последнюю версию, а на конкретную. Единственная возможность, о которой я знаю, - это ссылка на конкретный коммит, используя его ID. Но это менее читабельно и хуже в обслуживании, чем использование номера версии, такого как 0.3.1
.
Итак, мой вопрос: возможно ли в любом случае указать такой номер версии и заставить npm искать в репозитории git последнюю версию коммита, включающую эту версию?
Если нет, как вы решаете эту проблему в своих проектах? Вы живете с идентификаторами коммитов или есть лучшее решение для этого?
git tag -a "1.0.0"
и нажалgit push --tags
, а затем добавил#v1.0.0
в концеgit+ssh
зависимости. Ноnpm update
ничего не происходит.v
было необходимо. После того , как#
, то фрагмент должен соответствовать полному имени тега (или другому commitsh ) - в вашем случае#1.0.0
.npm i {owner}/{project}#{tag}
или добавлять"{library}": "github:{owner}/{project}#{tag}"
в package.json вместо использованияgit@github.com
илиgit://github.com
Принятый ответ не работал для меня. Вот что я делаю, чтобы вытащить пакет из github:
Или добавив его вручную в package.json:
источник
"package": "git+https://github.com/username/package.git#commit"
#tag
который обычно указывает на номер версииgit tag -a v1.0.1 && git push --tag && git push
как @Jonathan Lonowski также сказал в комментарии.Если под версией вы подразумеваете тег или релиз, то github предоставляет ссылки для скачивания для них. Например, если я хочу , чтобы установить выборки версии 0.3.2 (она не доступна на НОМ), а затем добавить к моему
package.json
Underdependencies
:Единственный недостаток по сравнению с подходом фиксации хэша состоит в том, что хеш гарантированно не представляет измененный код, тогда как тег можно заменить. К счастью, это случается редко.
Обновить:
В настоящее время я использую компактную нотацию для обслуживаемой зависимости GitHub:
Где коммит может быть чем угодно, например, тегом. В случае с GitHub вы можете даже сбросить исходное,
github:
так как это по умолчанию.источник
Мой пример комментария к @qubyte выше был обрезан , так что вот что легче читать ...
Описанный выше метод @surjikal работает для коммитов веток, но он не работал для коммитов дерева, которые я пытался включить.
Режим архива также работает для коммитов. Например, fetch @ a2fbf83
нпм :
пряжа :
формат :
Вот коммит дерева, который требовал
/archive/
режима:для соответствующего коммита vuex
источник
Эта команда устанавливает пакет npm
username/package
из определенного коммита git:Вот
3d0a21cc
первые 8 символов хеша коммита.источник
Я опишу здесь проблему, с которой я столкнулся при запуске
npm install
- пакет не появляется вnode_modules
.Проблема заключалась в том, что
name
значениеpackage.json
установленного пакета отличалось от имени импортированного пакета (введитеpackage.json
мой проект).Так что, если ваш проект установленного имя является
some-package
(имя значение в ееpackage.json
) , то вpackage.json
вашем проекте пишет:"some-package": "owner/some-repo#tag"
.источник
name
требование не упоминается часто в сети .. (не то, чтобы я мог понести это, по крайней мере).npm install --save git+https://<remote-github-repo-url>
это довольно безопасный способ избежать повторения этой проблемы в будущем.Мне нужно было запустить две версии tfjs-core и обнаружил, что обе должны быть собраны после установки.
package.json:
Затем:
И, наконец, использовать библиотеки:
Это работало отлично, но, безусловно, #hoodrat
источник
Если вы делаете это с более чем одним модулем и хотите иметь больший контроль над версиями, вам следует изучить собственный личный реестр npm.
Таким образом, вы можете npm публиковать свои модули в своем личном реестре npm и использовать записи package.json так же, как и для публичных модулей.
https://docs.npmjs.com/files/package.json#dependencies
источник