×

如何通过NPM安装私有模块

96
goddyzhao
2016.07.16 21:21* 字数 815

问题背景
NPM安装公有模块自然就不必说了直接npm install 模块名字就可以了,而之所以可以直接这样安装,原因就是模块是直接发布在npm的公有仓库中的(npm publish),npm直接从仓库通过网络获取到就好了。但是,有的时候我们不希望把代码直接发布到公有仓库中,对于企业来说,内部的非开源模块肯定是不需要发布到公有仓库中的。所以呢,我们就要寻找一种可以让npm安装私有模块的办法,这里所谓的私有模块,就是模块内容(代码)不能被公开访问(下载)到。那么怎么办呢?

解决方案一:购买npm付费账号
这是最简单的办法,根据npm的价格方案,只要是付费用户(不论是哪一种),都可以下载和发布不限量的私有模块。所有的操作都一样,只是npm校验的账号的时候发现你是付费的,那么就允许你发布私有模块,对你来说所有操作都一样。花钱买时间嘛,而且也不贵,最便宜是7美金/月

解决方案二:自建npm仓库
这个方案的意思就是:连仓库都是私有的,模块自然是私有的。这个方案好处就是仓库可以建在自己公司内部,访问速度自然杠杠的,而且想怎么定制就怎么定制。不过呢,构建成本也是有的,而且需要机器。具体可以自行google方法,一般稍微大规模的团队/公司会采取这种办法。

解决方案三:利用npm安装机制和git仓库
这个方案最经济实惠,因为最好的情况下是免费的(是的,你没有听错)。怎么做呢?
首先,npm install 支持 npm install <git remote url>,其中git remote url的格式是<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:/]<path>[#<commit-ish>]。换句话说,假设你的代码托管在bitbucket(可以免费托管无限多的私有项目)中,那么你就可以通过npm install git+ssh://git@bitbucket.org/用户名/项目名.git#版本号。这种方式唯一的不足的地方就是,你必须要确保安装这个私有模块的机器有访问这个私有模块git仓库的权限,换句话说就是:这台机器的公钥必须添加到git仓库/账户中。如果你嫌添加公钥麻烦,也可以通过git+https://username:password@bitbucket.org/用户名/项目名.git#版本号这种方式,但是缺点就是用户名和密码都暴露出来了。

好了,以上就是三种用npm安装私有模块的方法。没有绝对的哪种方式更好的说法,选择适合你的才是最好的!

Node.js
Web note ad 1