Based on my answer for a similar question:
As of npm v6.9.0, npm now supports package aliases. It implements the same syntax as Yarn uses:
npm install my-sdk-legacy@npm:my-sdk@1
npm install my-sdk
This adds the following to package.json
:
"dependencies": {
"my-sdk-legacy": "npm:my-sdk@^1.0.0",
"my-sdk": "2.0.0"
}
This seems to me the most elegant solution available, and is compatible with the Yarn solution proposed by @Aivus.