tj / node-prune

Remove unnecessary files from node_modules (.md, .ts, ...)
MIT License
4.4k stars 130 forks source link

Incorrect removal of symbolic links #48

Open tai2 opened 6 years ago

tai2 commented 6 years ago

How to reproduce

{
  "name": "prune-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "eslint": "^4.13.1"
  }
}
$ npm i
...
added 137 packages in 2.892s
$ ls -l node_modules/.bin/eslint
lrwxr-xr-x  1 tai2  staff  23 Dec 15 16:16 node_modules/.bin/eslint@ -> ../eslint/bin/eslint.js
$ node-prune

         files total 2,836
       files removed 520
        size removed 1.4 MB
            duration 76ms

$ ls -l node_modules/.bin/eslint
ls: node_modules/.bin/eslint: No such file or directory
duniul commented 3 years ago

Seems to be because it's specifically excluding the eslint file because of this line: https://github.com/tj/node-prune/blob/master/internal/prune/prune.go#L28