前端構建之npm包管理

用過npm的都知道node

npm install 默認安裝到本地

    npm install -g 安裝到全局。

但npm install -g是否能夠把package.json中的依賴安裝到全局呢?linux

趕忙去試一下。npm

。。。。。。。。。。。json

不行。服務器

這裏交代下爲何會考慮到把全部依賴都安裝到全局,由於咱們在項目構建時,jekins拉下代碼後,默認都要先npm install安裝依賴到當前目錄,而後npm run build作構建,構建完的dist壓縮打包拷貝到發佈目錄,而後把jekins目錄下的代碼刪除,也就意味着會把對應的node_modules刪除。這樣每次構建都要執行一次install,npm官方倉庫確定是不行了,ui

npm config set registry http://registry.npm.taobao.org/url

設置到淘寶鏡像。code

有人就說了既然能夠全局安裝,爲何不全局安裝,這樣就不用每次下載了。好注意!ci

回到上文,npm install -g 並不能把依賴直接安裝到全局,所以本身寫了一個prebuild.js,get

遍歷package.json中的依賴,並用npm i -g XXX逐個安裝。

安裝成功了,可是去buid時,依然報找到不到...........xxx npm包,

看到網上有人說設置下NODE_PATH ,找到npm包安裝的全局路徑:

export NODE_PATH=/usr/local/node-v6.11.2-linux-x64/lib/node_modules

設置完後,ok了。能夠啊。那之後就用每次刪除再下載了。

這裏NPM的全局路徑能夠npm root -g 查看,並經過npm config set prefix '目標目錄' 修改。(查看npm config get prefix 或者用npm root -g命令也可 )

成功了嗎?

一個項目是ok的,若是多個項目呢? 若是不一樣項目引用到同一個包的不一樣版本,此時依賴版本的管理就沒法依賴npm了,就須要本身寫代碼來管理了。

固然這裏面也有一個以前使用過的方法:

就是在構建服務器上,建一個公共目錄,再在下面按照各項目目錄,預先安裝好各項目的依賴包。

在jekinks構建腳本中,在執行npm install前,看公共目錄是否存在該項目命令的目錄,存在直接拷貝過來就能夠。若是沒有,那就切換到那個目錄下,去安裝,而後在切換回來,再拷貝,再構建。

這樣依賴包的本地管理,也能解決必定的問題。

附npm包管理一些命令

npm update moduleName:更新node模塊

npm rebuild moduleName

npm view moudleName dependencies:查看包的依賴關係

npm view moduleName repository.url:查看包的源文件地址

npm view moduleName engines:查看包所依賴的Node的版本

npm outdated:檢查包是否已通過時,此命令會列出全部已通過時的包,能夠及時進行包的更新

不管你在哪一個文件夾 執行 npm link xxx , 若是沒有xxx模塊, 那麼xxx就會先安裝在全局, 而後再從全局link過來

相關文章
相關標籤/搜索