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
Current Behavior:
When I use a git repository via an HTTP link NPM "takes liberties" with it, which breaks my build:
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.gitwas replaced withgithub:uhop/stream-chain, which is probably OK in this case. But other two links (?) are rewritten fromhttps://github.com/uhop/stream-chain.gittogit+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.gittogit+ssh://git@github.com/uhop/stream-chain.gitis not acceptable for that reasons.The fix is relatively minor yet unpleasant: we have to replace
npm ciwithnpm i, which takes more time and introduced instabilities with other dependencies.Expected Behavior:
When running
npm ciit 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