Node.js 在Linux下安裝和環境搭建/編譯項目
安裝nodejs:
1.下載nodejs源碼包
wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz #wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v10.5.0/node-v10.5.0-linux-x64.tar.xz
2.解壓
xz -d node-v14.16.0-liunx-x64.tar.xz / tar -xzvf node-v14.16.0-liunx-x64.tar.gz
tar -xvf node-v6.10.3-liunx-x64.tar
3.創建軟連接
mv node-v14.16.0-liunx-x64 /usr/local/nodejs ln -s /usr/local/nodejs/bin/node /usr/local/bin/node ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
4.查看nodejs環境是否安裝成功
node -v
npm -v
5.安裝cnpm 使用淘寶源
npm install -g cnpm --registry=https://registry.npm.taobao.org rm -rf /usr/local/bin/cnpm ln -s /usr/local/nodejs/lib/node_modules/cnpm/bin/cnpm /usr/local/bin/cnpm cnpm -v
編譯項目:
需要先下載前端項目源代碼/ 然后進入項目代碼目錄
# 例如: git clone http://192.168.16.20/tiptop-statement/web-client.git cd web-clent
安裝項目所需依賴
cnpm install
項目打包
# fef test cnpm run build
如果打包過程中,fef命令無法使用,做如下操作:
注: 這里打包項目 需要fef命令,因為手動安裝容易失敗,所以上傳我編譯好的nodejs目錄文件包。
解壓到/root/家目錄下 並且設置軟連接:
find / -name feflow ln -s /root/.npm-global/lib/node_modules/@feflow/cli/bin/feflow /usr/local/bin/fef
# 生效變量
source /root/.bashrc
項目打包完成后,會額外生成一個文件夾 dist 。 主要將文件夾中的內容拷貝到nginx或者httpd的發布目錄下即可。
例如是nginx
# 先備份原來的項目代碼 tar czf web.tar.gz /usr/local/nginx/html/* /data/backup/ # 拷貝打包好的項目代碼到nginx發布目錄 cp -r dist/* /usr/local/nginx/html/
Jenkins配合shell腳本案例
case $Status in Deploy) { echo "Status:$Status" echo "version:$BUILD_NUMBER" NPM_PATH="/usr/local/bin/cnpm" FEF_PATH="/usr/local/fef_test/bin/fef" BACKUP_PATH="/backup/batar-entrance-guard/entrance-guard-web" PROJECT_FILE="/project/batar-entrance-guard/entrance-guard-web/dist" cd $WORKSPACE source /home/batar-exam/.bashrc sudo $NPM_PATH install /usr/local/fef_test/bin/fef test if [[ -d ${PROJECT_FILE} ]];then rm -rf $PROJECT_FILE fi cp -rf $WORKSPACE/dist $PROJECT_FILE #備份項目文件 cp -rf $WORKSPACE/dist $BACKUP_PATH/$BUILD_NUMBER-dist } ;; Rollback) { echo "Status:$Status" echo "version:$Version" BACKUP_PATH="/backup/batar-entrance-guard/entrance-guard-web" PROJECT_FILE="/project/batar-entrance-guard/entrance-guard-web/dist" if [[ -d ${PROJECT_FILE} ]];then rm -rf $PROJECT_FILE fi cp -rf $BACKUP_PATH/$Version-dist $PROJECT_FILE } ;; *) exit ;; esac