~/.npm 目录是干啥用的?
Posted
技术标签:
【中文标题】~/.npm 目录是干啥用的?【英文标题】:what is ~/.npm dir for?~/.npm 目录是干什么用的? 【发布时间】:2013-01-28 07:53:53 【问题描述】:我已经安装了全局 npm 包jslint
它就在这里
$ ls -la /usr/local/bin/jslint
lrwxr-xr-x 1 lust admin 40 Feb 12 15:31 /usr/local/bin/jslint -> ../lib/node_modules/jslint/bin/jslint.js
$ ls -la /usr/local/lib/node_modules/jslint/bin
total 8
drwxr-xr-x 3 lust staff 102 Apr 16 2012 .
drwxr-xr-x 10 lust staff 340 Feb 12 15:31 ..
-rwxr-xr-x 1 lust staff 2330 Apr 16 2012 jslint.js
$ which jslint
/usr/local/bin/jslint
$ head -3 /usr/local/bin/jslint
#!/usr/bin/env node
var linter = require("../lib/linter");
因此,毫无疑问,jslint
实际上是从这个目录而不是在这里运行的:
$ ls -la .npm/jslint/0.1.9/package/bin/
total 8
drwxr-xr-x 3 lust staff 102 Apr 16 2012 .
drwxr-xr-x 9 lust staff 306 Feb 12 15:31 ..
-rwxr-xr-x 1 lust staff 2330 Apr 16 2012 jslint.js
该包似乎有两份副本,一份在/usr/local/
,一份在~/.npm
。为什么.npm
中有一个,我可以安全地删除它吗?
【问题讨论】:
【参考方案1】:~/.npm
是 npm 用来避免多次重新下载同一个包的缓存。删除它没有坏处。您可以使用以下命令清空它:
npm cache clean
【讨论】:
关于这个的一个问题,我尝试做$npm cache clean
并得到一个错误Error: EACCES, unlink
。它建议以管理员身份进行操作,即使我执行 $sudo npm install 一切都会转到我的 home/.npm 目录?它不应该是......
@alexserver 我会尝试使用chown -r
收回您的~/.npm
主管的所有权,然后再次运行npm cache clean
。
似乎即使我执行 sudo npm install -g 它仍会保存到我的 ~/.npm ...无论如何我在另一篇文章中看到不鼓励使用 sudo npm install。谢谢。
你有这个目录的文档吗?我在任何地方都找不到它,只是引用node_modules
。有没有办法a)将默认位置设置为其他位置(例如$XDG_CACHE_HOME/npm
),或b)在使用后自动禁用/清理它?
因为它是一个缓存,所以我把我的移到了更合适的地方,即:cd && mv .npm .cache && ln -s .cache/.npm
。我的 .cache
树被排除在自动 ZFS 快照之外(这是在 Linux/Ubuntu 上;不确定它是否适用于其他操作系统)以上是关于~/.npm 目录是干啥用的?的主要内容,如果未能解决你的问题,请参考以下文章
jquery easyui下载包中plugins和locale文件夹是干啥用的??