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