Closed
Description
When I use workspaces, and on the root level I need a previous version of a package (package was defined in workspaces), I get current (local) version of the package.
Steps To Reproduce:
There is a file structure:
root/
│
├── packages/
│ │
│ ├── foo/
│ │ │
│ │ └── package.json
│ │
│ └── bar/
│ │
│ └── package.json
│
└── package.json
Where:
-
root/package.json
:{ "name": "@scope/root", "wokspaces": [ "packages/*" ], "dependencies": { "@scope/foo": "1.0.0-dev.0" } }
-
root/packages/foo/package.json
:{ "name": "@scope/foo", "version": "1.0.0-dev.1" }
-
root/packages/bar/package.json
:{ "name": "@scope/bar", "version": "1.0.0-dev.1", "dependencies": { "@scope/foo": "1.0.0-dev.0" } }
And version 1.0.0-dev.0
of package @scope/foo
is already published in a private registry.
Current Behavior:
Command npm install
makes next node_modules
structure:
root/
│
├── node_modules/
│ │
│ └── @scope/
│ │
│ └── foo/ -> root/packages/foo (symlink to 1.0.0-dev.1)
│
└── packages/
│
└── bar/
│
└── node_modules/
│
└── @scope/
│
└── foo/ (installed 1.0.0-dev.0 from registry)
So when I require @scope/foo
package on the root level, I get version 1.0.0-dev.1
although dependency for @scope/root
was defined as 1.0.0-dev.0
.
Expected Behavior:
Command npm install
makes next node_modules
structure:
root/
│
└── node_modules/
│
└── @scope/
│
└── foo/ (installed 1.0.0-dev.0 from registry)
So when I require @scope/foo
package on the root level, I get version 1.0.0-dev.0
as expected.
Environment:
- OS: Linux Mint 20.1
- Node: 15.4.0
- npm: 7.5.3