-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Description
Current Behavior:
When I use a git repository via an HTTP link NPM "takes liberties" with it, which breaks my build:
$ npm init -y
Wrote to /Users/eugene.lazutkin/Work/temp/package.json:
{
"name": "temp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
$ npm i --save https://github.com/uhop/stream-chain.git
added 1 package, and audited 2 packages in 3s
found 0 vulnerabilities
It produces package-lock.json
:
{
"name": "temp",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"stream-chain": "github:uhop/stream-chain"
}
},
"node_modules/stream-chain": {
"version": "2.2.4",
"resolved": "git+ssh://git@github.com/uhop/stream-chain.git#459f5a1708c138b6e0abaae4cf103c3488e1e78e",
"license": "BSD-3-Clause"
}
},
"dependencies": {
"stream-chain": {
"version": "git+ssh://git@github.com/uhop/stream-chain.git#459f5a1708c138b6e0abaae4cf103c3488e1e78e",
"from": "stream-chain@github:uhop/stream-chain"
}
}
}
Note that https://github.com/uhop/stream-chain.git
was replaced with github:uhop/stream-chain
, which is probably OK in this case. But other two links (?) are rewritten from https://github.com/uhop/stream-chain.git
to git+ssh://git@github.com/uhop/stream-chain.git
, which is clearly bad.
The problem is that a build bot we use in similar situations can access private git repositories using HTTP, but not SSH for security reasons. It fails on an authentication. Rewriting https://github.com/uhop/stream-chain.git
to git+ssh://git@github.com/uhop/stream-chain.git
is not acceptable for that reasons.
The fix is relatively minor yet unpleasant: we have to replace npm ci
with npm i
, which takes more time and introduced instabilities with other dependencies.
Expected Behavior:
When running npm ci
it should use the original URL with the HTTP authentication instead of SSH.
Steps To Reproduce:
See the description and do the same steps using git repositories (github only?) as dependencies.
Environment:
OS: Mac
Node: 15.7.0
NPM: 7.4.3