nexus3部署npm hosted私服

a2774206發表於2022-03-10

centos部署nexus3

環境:jdk1.8nexus3

上傳並解壓nexus3,安裝jdk並配置環境變數

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

執行生效環境變數命令 source profile

nexus3啟動:

執行到該目錄下/usr/local/packages/nexus-3.13.0-01/bin

路徑:/usr/local/packages/nexus-3.13.0-01/
執行啟動:路徑/bin下
./nexus run & //有列印日誌啟動
./nexus start //無列印日誌啟動
./nexus stop 或者 kill -9 程式id //命令失效殺程式停止

Nexus部署npm私服

1.blobStores 建立儲存庫:npm-store

2.repositories 建立:npm-hosted倉庫並複製npm源地址

3.本地配置關聯npm源地址
npm config set registry 遠端npm倉庫地址
npm login

4.釋出包到遠端倉庫
到含有package.json(private:false)工程目錄 執行 npm publish (無法處理依賴關係,下載包不完整。)
npm支援直接 publish tgz壓縮包的方式上傳到私有庫。
下載 node-tgz-downloader,用來下載依賴tgz檔案;指令碼會通過 packagelock.json鎖定的依賴包版本下載相關聯的依賴包)

全域性安裝:
npm install node-tgz-downloader -g

npm install 生成 node_modules 資料夾後到工程根目錄執行命令 download-tgz package-lock package-lock.json 網路和境外伺服器原因會失敗且有可能下載0kb的壓縮包,需要多執行幾次。

釋出tgz包到私有庫:

shell指令碼(整合tgz包到一個目錄下)

find . -name '*.tgz' -exec cp -f {} ../tgz \;

該命令會把多目錄下的.tgz壓縮包複製到tgz目錄下。

新建sh指令碼

#!/bin/bash

PACKAGE_PATH=./tgz
REPOSITORY=http://xxxxx:8081/repository/npm-hosted/

# npm login --registry=$REPOSITORY

for file in $PACKAGE_PATH/*.tgz; do
 npm publish $file
done

指令碼會同步的方式依次釋出包,如遇到403可以考慮許可權問題,最好用管理員賬號釋出。

node-sass安裝失敗處理:

在拉取node-sass包時,儘管內網已經有npm全部包,node-sass也會從git上拉xx_binding.node的一個二進位制node檔案,閱讀原始碼後發現這個檔案是識別當前sass版本及電腦系統和電腦32位還是64位來下載該二進位制檔案,getBinaryName方法返回了檔名稱

    binaryName = [
      platform, '-',
      process.arch, '-',
      process.versions.modules
    ].join('');

    return [binaryName, 'binding.node'].join('_');

通過手動cmd輸入可檢視檔名(darwin-x64-83),

node -p "[process.platform,process.arch,process.versions.modules].join('-')"

darwin-x64-83_binding.node 就是最後完整檔名。

然後檢視package.json中node-sass版本,通過 https://registry.npmmirror.co...版本號/檔名 來下載對應檔案。

nexus上新建 raw型別hosted儲存庫(raw-hosted)和raw型別group儲存庫(raw-public)並設定讀取許可權。參考npm源下載地址新建node-sass/v4.14.1/目錄並上傳該二進位制檔案。完整路徑(http://ip:port/repository/raw...)。

使用私服源首次npm install

分別指向私服源和二進位制檔案源目錄,二進位制檔案站點(sass_binary_site)只需要指向到版本前面的分割目錄即可,下載時會自動根據node-sass版本去對應目錄下載對應檔案。

npm config set registry http://ip:port/repository/npm...

npm config set sass_binary_site http://ip:port/repository/raw...

npm install

以上如果安裝報錯可以排查nexus設定的倉庫許可權問題,安裝成功執行報錯時,嘗試清除npm快取 npm cache clean -f

參考相關資料:
https://blog.csdn.net/lihongt...
https://blog.csdn.net/yougoul...
https://segmentfault.com/a/11...

相關文章