npm 對於前端開發來講是一種必備的工具,對於開源項目來講,徹底沒有任何問題,安裝包的依賴直接依賴於 Npm 便可。
對於公司內網的一些項目就不是太方便了,由於咱們一般會有這樣的項目結構:前端
對於 npm 公用包來講是比較方便的,直接引用便可。而內網的代碼應該怎麼引入呢?大概有如下幾種方式:git
公有包確定是知足不了需求的,由於全部人都能下載包,也就意味着代碼是被泄漏了,首先被排除。npm 私有包是收費的,
而搭建 npm 服務器也是須要必定成本的,因此最好的方案天然是採用 npm 安裝 git 倉庫的方式了。github
下看 npm 對於安裝 git 倉庫的命令:npm
npm install <git remote url>
實際上就是直接 install 一個 URL 而已。對於一些公有倉庫, npm 仍是作了一些集成的,好比 github等(示例所有出自 npm 官方文檔):json
npm install github:mygithubuser/myproject npm install bitbucket:mybitbucketuser/myproject npm install gitlab:myusr/myproj#semver:^5.0
若是咱們直接安裝 github 上,使用網址的方式能夠表示爲:bash
npm install git+https://isaacs@github.com/npm/npm.git
看下 npm 安裝 git 倉庫的協議:服務器
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
<protocol>
is one of git, git+ssh, git+http, git+https, or git+file.ssh
If #
<commit-ish>
is provided, it will be used to clone exactly that commit. If the commit-ish has the format #semver:<semver>
,<semver>
can be any valid semver range or exact version, and npm will look for any tags or refs matching that range in the remote repository, much as it would for a registry dependency. If neither #<commit-ish>
or #semver:<semver>
is specified, then master is used.ide
即 protocol 支持 git, git+ssh, git+http, git+https, git+file,私有倉庫須要用戶名和密碼時須要填寫用戶名和密碼,semver 表示須要使用的版本號, 不過貌似不生效。(npm 中有個包 semver 是專門用於比較包的版本號大小)工具
直接寫 #branch
表示須要安裝的分支號。
因此在開發過程當中咱們能夠這麼寫包:
npm i git+https://username:password@git.example.com/path/reposity#master
或者使用打的 tag
npm i git+https://username:password@git.example.com/path/reposity#1.0.0
可能存在的問題是:
因爲新版的 npm install 在安裝時會使用 package-lock.json, 有時候同一分支不會從 github 上拉取最新的,
可能須要手動再安裝一下(拿本身的倉庫試了下,果真不會更新),因此安裝時儘可能以 tag 爲標籤進行安裝,這樣確保代碼是正確的
此外,因爲私有倉庫都是須要密碼的,這個時候須要提供一個公共帳號和密碼,某種程度上不利於管理吧