Closed
Description
Running npm i
with a lock file that has lockfileVersion: 1
seems to not pull in the bin details for at least some packages, meaning the .bin
folder is not generated.
If I remove both package-lock.json
& node_modules
, npm i
generates the expected lock that has the bin
property, but this results in dependencies being upgraded which means more work for me since that can have all kinds of knock on effects (eslint plugin changes, security, etc).
Current Behavior:
No .bin
folder exists.
package-lock.json:
{
"name": "myfolder",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"typescript": "^4.0.3"
}
},
"node_modules/typescript": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz",
"integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg=="
}
},
"dependencies": {
"typescript": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz",
"integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg=="
}
}
}
Expected Behavior:
The .bin
folder exists, with tsc
in it.
package-lock.json:
{
"name": "myfolder",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"typescript": "^4.0.3"
}
},
"node_modules/typescript": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz",
"integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
}
},
"dependencies": {
"typescript": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz",
"integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg=="
}
}
}
Steps To Reproduce:
Run the following in a new folder:
#!/usr/bin/env bash
npx 'npm@6' init -y
npx 'npm@6' install typescript
stat node_modules/.bin
npm i
npm ci
stat node_modules/.bin
Example:
Users/G-Rath/myfolder
❯ ../script.sh
Wrote to /c/Users/G-Rath/myfolder/package.json:
{
"name": "myfolder",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 1 package from 1 contributor and audited 1 package in 3.3s
found 0 vulnerabilities
File: node_modules/.bin
Size: 512 Blocks: 0 IO Block: 512 directory
Device: eh/14d Inode: 7599824377958213 Links: 1
Access: (0755/drwxr-xr-x) Uid: ( 1000/ g-rath) Gid: ( 1000/ g-rath)
Access: 2020-10-14 14:20:34.154173400 +1300
Modify: 2020-10-14 14:20:34.154173400 +1300
Change: 2020-10-14 14:20:34.154173400 +1300
Birth: -
up to date, audited 1 package in 635ms
found 0 vulnerabilities
added 1 package, and audited 1 package in 3s
found 0 vulnerabilities
stat: cannot stat 'node_modules/.bin': No such file or directory
Environment:
- OS: Ubuntu 18.04 (via WSLv1, Windows 10)
- Node: 14.4.0
- npm: 7.0.0