Залежити від гілки або тегу, використовуючи git URL-адресу в package.json?


399

Скажіть, що я розігнав модуль вузла з виправленням, і я хочу використовувати свою фіксовану версію, на гілці функції, доки помилка не буде об'єднана та випущена.

Як я можу посилатися на свою фіксовану версію в dependenciesмоїй package.json?

Відповіді:


569

З документів npm :

git://github.com/<user>/<project>.git#<branch>

git://github.com/<user>/<project>.git#feature\/<branch>

З версією NPM 1.1.65 ви можете це зробити:

<user>/<project>#<branch>

130
Станом на npm 1.1.65, URL Github може бути більш стислим user/project. npmjs.org/doc/files/package.json.html Ви можете прикріпити гілку типуuser/project#branch
— dantheta

2
git://github.com/<user>/<project>.git#feature/blahпрацювали, але <user>/<project>.git#feature/blahне ... можливо, їх регекс потрібно вдосконалити, щоб врахувати feature/blah. Це був npmv1.4.28
— pulkitsinghal

5
Як ви включаєте номер версії?
— Річард

1
@hurrymaplelad чи можу я зробити те ж саме для запиту на тягу? Якщо так, то як команда?
— круглий кролик

3
Оновлено посилання на документи NPM docs.npmjs.com/files/package.json#github-urls
— kellen

136

коментар @ @ dantheta:

Станом на npm 1.1.65, URL Github може бути більш стислим користувачем / проектом. npmjs.org/doc/files/package.json.html Ви можете приєднати гілку, як користувач / проект # гілка

Тому

"babel-eslint": "babel/babel-eslint",

Або для тегу v1.12.0 на jscs:

"jscs": "jscs-dev/node-jscs#v1.12.0",

Зауважте, якщо ви будете використовувати npm -save, ви отримаєте довший git

З https://docs.npmjs.com/files/package.json#git-urls-as-dependitions

Git URL-адреси як залежності

URL-адреси Git можуть мати форму:

git: //github.com/user/project.git#commit-ish git + ssh: // user @ hostname: project.git # commit-ish git + ssh: //user@hostname/project.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish

Команда-ish може бути будь-яким тегом, sha або гілкою, які можуть бути подані як аргумент для git checkout. За замовчуванням - головний.

URL-адреси GitHub

З версії 1.1.65 ви можете посилатися на URL-адреси GitHub як просто "foo": "user / foo-project". Так само, як і в URL-адресах git, може бути включений суфікс на виконання комісії. Наприклад:

{"name": "foo",
"version": "0.0.0",
"залежності": {"express": "visionmedia / express", "mocha": "visionmedia / mocha # 4727d357ea"}}


2
Залежно від фіксації, ша1 повинен бути кращим варіантом, особливо якщо ви залежите від репо, який не є під вашим контролем. Гілки Git та теги не є незмінними (їх можна видалити / змінити, зловмисно / випадково), хоча створити ша1 зіткнення (майже) неможливо.
— jakub.g

1
Чи можу я мати філію І зобов’язання для здійснення іш?
— мансардне крісло

45

Якщо ви хочете використовувати develабо featureвідділення, або ви не опублікували певний пакет до реєстру NPM, чи не можете, оскільки це приватний модуль, ви можете вказати на git://URI замість номера версії у вашому package.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

#refЧастина НЕ є обов'язковим, і це може бути гілка (наприклад master), тег (наприклад 0.0.1) або часткової або повної фіксації ідентифікатор.


26

В останній версії NPM ви можете просто зробити:

npm install gitAuthor/gitRepo#tag

Якщо РЕПО є дійсним пакетом NPM, він буде автоматично псевдонім у package.json як:

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

Якщо ви можете додати це до відповіді @justingordon, зараз немає необхідності в ручному згладжуванні!


4
ні, це не так. Він встановлений неправильно. Так чи інакше вона не включає всю структуру каталогів із сховища, лише деякі файли, такі як package.json, yarn.lock, readme та ліцензія. Папок src та dist немає.
— StalkAlex

@StalkAlex docs.npmjs.com/cli/publish та перевірте сценарії складання репо, які ви встановлюєте. Можливо, вони позначені тегами, або пост-інсталяція не працює для вас, це проблема для цього конкретного пакету, все одно сподіваюся, що це допоможе!
— вихор

@vortex дякую, що ти маєш на увазі саме під тегом? Як це робить таку проблему?
— StalkAlex

0

Якщо це комусь допомагає, я спробував усе вище (https w / token mode) - і все одно нічого не вийшло. У мене немає помилок, але нічого не буде встановлено в node_modules або package_lock.json. Якби я змінив маркер або будь-яку літеру у назві репо або ім'я користувача тощо - я отримав би помилку. Тож я знав, що маю право маркер і ім’я репо.

Я нарешті зрозумів, що це тому, що назва залежності, яку я мав у своєму пакеті.json, не збігалася з ім'ям у package.json репо, яке я намагався витягнути. Навіть npm install --verbose не говорить про те, що немає проблем. Це, здається, ігнорує залежність без помилки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.