-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Closed
Labels
Bugthing that needs fixingthing that needs fixingRelease 6.xwork is associated with a specific npm 6 releasework is associated with a specific npm 6 release
Description
What / Why
When installing a package by referring to a git URL (e.g. git+https://github.com/hakimel/reveal.js.git#semver:^4.0.2) its dependencies won't be installed. It appears that this applies to various cases:
- if the package dependencies are defined as
devDependencies
npm
behaves differently depending on where the URL is defined (CLI parameter vspackage.json
)- whether the URL ends with a
#$COMMIT_HASH
or#semver:$VERSION
For more details, please see the section Steps to Reproduce
When
- n/a
Where
npm install
How
Current Behavior
- please see below
Steps to Reproduce
(1) devDependencies
vs. dependencies
# does not install dependencies, only places repository content under `./node_modules/reveal.js` as is
npm install 'git+https://github.com/hakimel/reveal.js.git#semver:^4.0.2'
# does install dependencies (see [diff](https://github.com/hakimel/reveal.js/compare/4.0.2...lucendio:4.0.3))
npm install 'git+https://github.com/lucendio/reveal.js.git#semver:^4.0.3'
(2) CLI vs package.json
{
"dependencies": {
"reveal.js": "git+https://github.com/lucendio/reveal.js.git#semver:^4.0.3"
}
}
# does not install dependencies
npm install
# does install dependencies
npm install 'git+https://github.com/lucendio/reveal.js.git#semver:^4.0.3'
(3) $GIT_URL#semver:$VERSION
vs $GIT_URL#$COMMIT_HASH
in package.son
{
"dependencies": {
"reveal.js": "git+https://github.com/lucendiio/reveal.js.git#semver:^4.0.3"
}
}
# does not install dependencies and does not even place repository content under `./node_modules/reveal.js`
npm install
{
"dependencies": {
"reveal.js": "git+https://github.com/lucendiio/reveal.js.git#93b22ec67753506f55bc7cb8fed6a62d07c89141"
}
}
# does install dependencies
npm install
Remarks
$GIT_URL#semver:$VERSION
inpackage.json
has worked until[email protected]
- git URL +
devDependencies
inpackage.json
never seem to have worked (tested v5.0.0 and multiple v6.x.0) reveal.js
solely functions as an example and seems to have nothing to do with the behaviour described above- the existence of a
^
does not change anything in the behaviour described above - used
[email protected]
and[email protected]
Expected Behavior
- dependencies - regardless of where defined:
*dependencies
- are being installed when package is installed via git URL - both version specifications - commit ID and tag - are supported
- npm consolidates/optimizes dependency tree installed under
node_modules
as expected compared to when installing from npmjs.org
Who
- n/a
References
- possibly related to [BUG] Installing dependencies from git+ssh is broken in 6.14.0 #948
Metadata
Metadata
Assignees
Labels
Bugthing that needs fixingthing that needs fixingRelease 6.xwork is associated with a specific npm 6 releasework is associated with a specific npm 6 release