日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Vue/React項(xiàng)目中不可忽視的自動化部署方案

本文主要介紹shell腳本的一些基本用法以及在前端項(xiàng)目中的應(yīng)用。將圍繞以下幾點(diǎn)來展開:

成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)專業(yè)公司,是成都網(wǎng)站制作公司,為會所設(shè)計(jì)提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站營銷推廣熱線:028-86922220

  • shell基本用法(變量,循環(huán),傳參,運(yùn)算符,流程控制等)
  • 使用shell腳本自動將項(xiàng)目打包部署到git服務(wù)器
  • 使用nodeJs編寫命令行工具

一、shell基本介紹及用法

  • Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁,業(yè)界所說的 shell 通常都是指 shell 腳本,Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。Linux 的 Shell 種類眾多,在這里我們介紹一種常用且開源免費(fèi)的shell——bash。

1.Shell 變量

變量聲明如下:

 
 
 
 
  1. time=10

注:變量名和等號之間不能有空格,變量名命名規(guī)則如下:

  • 命名只能使用英文字母,數(shù)字和下劃線,首個字符不能以數(shù)字開頭。
  • 中間不能有空格,可以使用下劃線(_)。
  • 不能使用標(biāo)點(diǎn)符號。
  • 不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)

我們可以通過如下方式使用變量:

 
 
 
 
  1. name="xujiang"
  2. echo $name
  3. # 或者這樣
  4. echo ${name}

我們能使用如下方式刪除變量:

 
 
 
 
  1. unset name

關(guān)于shell變量的更多用法,可以參考linux官網(wǎng),這里就不過多介紹了。

2.Shell 傳遞參數(shù)

  • 我們可以在執(zhí)行 Shell 腳本時,向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為:。代表一個數(shù)字,為執(zhí)行腳本的第一個參數(shù),為執(zhí)行腳本的第二個參數(shù),以此類推其中

n。n代表一個數(shù)字,1為執(zhí)行腳本的第一個參數(shù),2為執(zhí)行腳本的第二個參數(shù),以此類推,其中0 為執(zhí)行的文件名

使用如下:

 
 
 
 
  1. echo "文件名:$0";
  2. echo "參數(shù)一:$1";
  3. echo "參數(shù)二:$2";
  4. echo "參數(shù)三:$3";
  5. # 輸出
  6. 文件名:./test.sh
  7. 參數(shù)一:1
  8. 參數(shù)二:2
  9. 參數(shù)三:3

3.Shell 數(shù)組

Bash Shell 只支持一維數(shù)組,數(shù)組元素的下標(biāo)由0開始。Shell 數(shù)組用括號來表示,元素用"空格"符號分割開,例如:

 
 
 
 
  1. names=(name1 ... namen)

我們可以通過如下方式讀取數(shù)組:

 
 
 
 
  1. ${names[0]}

我們可以使用@ 或 * 可以獲取數(shù)組中的所有元素,例如:

 
 
 
 
  1. echo "數(shù)組的元素為: ${nsmes[*]}"
  2. # 輸出為
  3. 數(shù)組的元素為: A B C D

4.Shell 基本運(yùn)算符

Shell支持多種運(yùn)算符,如下:

  • 算數(shù)運(yùn)算符
  • 關(guān)系運(yùn)算符
  • 布爾運(yùn)算符
  • 字符串運(yùn)算符
  • 文件測試運(yùn)算符

原生bash不支持簡單的數(shù)學(xué)運(yùn)算,但是可以通過其他命令來實(shí)現(xiàn),這里我們使用expr。它是一款表達(dá)式計(jì)算工具,使用它能完成表達(dá)式的求值操作。例如:

 
 
 
 
  1. #!/bin/bash
  2. total=`expr 2 + 2`
  3. echo "兩數(shù)之和為 : $total"

注:這里我們使用反引號``。由于命令行工具這塊用的比較少,如果感興趣,大家可以去官網(wǎng)了解學(xué)習(xí)。

5.Shell echo命令

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字符串的輸出,這里我們著重介紹與用戶交互的輸入輸出。

 
 
 
 
  1. #!/bin/sh
  2. read name 
  3. echo "hello $name"

read 命令從標(biāo)準(zhǔn)輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量。當(dāng)我們執(zhí)行腳本后,輸入一個自定義名稱,按下回車將輸出 'hello xxx',我們是不是想到了vue腳手架中的一些命令呢,是的,我們可以用這個方法去實(shí)現(xiàn)自己的腳手架配置或者自動生成項(xiàng)目模版。

我們也可以用echo將顯示結(jié)果定向至文件:

 
 
 
 
  1. echo "It is mine" > test.js

執(zhí)行 這個文件后將為我們創(chuàng)建一個test.js文件,并將輸出內(nèi)容寫入test.js。

6.Shell test 命令

test 命令用于檢查某個條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個方面的測試。

數(shù)值測試:

  • -eq 等于則為真
  • -ne 不等于則為真
  • -gt 大于則為真
  • -ge 大于等于則為真
  • -lt 小于則為真
  • -le 小于等于則為真

使用方式如下:

 
 
 
 
  1. name1=1
  2. name2=1
  3. if test $[name1] -eq $[name2]
  4. then
  5.     echo '相等!'
  6. else
  7.     echo '不相等!'
  8. fi

運(yùn)行腳本后將輸出'相等!'。

字符串測試:

  • = 等于則為真
  • != 不相等則為真
  • -z 字符串 字符串的長度為零則為真
  • -n 字符串 字符串的長度不為零則為真

例如:

 
 
 
 
  1. name1="xu"
  2. name2="xu"
  3. if test $name1 = $name2
  4. then
  5.     echo '兩個字符串相等!'
  6. else
  7.     echo '兩個字符串不相等!'
  8. fi

7.Shell 流程控制

流程控制我們主要介紹if else, if else-if else和for循環(huán)。

  • if else
 
 
 
 
  1. if 條件1
  2. then
  3.     命令操作1
  4. else
  5.     命令操作2
  6. fi
  • if else-if else
 
 
 
 
  1. a=1000
  2. b=2000
  3. if [ $a == $b ]
  4. then
  5.    echo "a 等于 b"
  6. elif [ $a -gt $b ]
  7. then
  8.    echo "a 大于 b"
  9. elif [ $a -lt $b ]
  10. then
  11.    echo "a 小于 b"
  12. else
  13.    echo "無"
  14. fi
  • for 循環(huán)
 
 
 
 
  1. # 一般格式
  2. for var in a1 a2 ... aN
  3. do
  4.     命令1
  5.     命令2
  6.     ...
  7.     命令N
  8. done

在了解完如上知識點(diǎn)后,我們來看看這些能做些什么。

二、使用shell腳本自動將項(xiàng)目打包部署到git服務(wù)器

1.一個git提交的例子

 
 
 
 
  1. #!/bin/bash
  2. git add .
  3. git commit -m 'xj--'$1
  4. git push
  5. # 提交時只需要執(zhí)行 bash git.sh '參數(shù)內(nèi)容'即可完成提交操作

首先,我們在項(xiàng)目根目錄下新建一個git.sh文件,輸入以上腳本,保存,然后我們后面要提交代碼時,只需要執(zhí)行 bash git.sh '你的注釋',就可以將代碼提交到服務(wù)器上了,是不是簡化了我們提交的步驟呢

2.vue項(xiàng)目部署

我在一張圖教你快速玩轉(zhuǎn)vue-cli3這篇文章中教大家了如何獨(dú)立配置項(xiàng)目,文章末尾有寫到部署的方式,如下:

 
 
 
 
  1. #!/usr/bin/env sh
  2. # 當(dāng)發(fā)生錯誤時中止腳本
  3. set -e
  4. # 構(gòu)建
  5. npm run build
  6. # cd 到構(gòu)建輸出的目錄
  7. cd dist
  8. git init
  9. git add -A
  10. git commit -m 'deploy'
  11. git push -f git@bitbucket.org:/.bitbucket.io.git master
  12. cd -

在學(xué)完shell腳本后,是不是覺得豁然開朗了呢。如果有更復(fù)雜的需求,我們可以用同樣的方式去部署。

三、使用nodeJs編寫命令行工具

我們這里使用commander來搭建node命令行,接下來我會給出最基本的用法,下一篇文章將專門來給大家講解如何搭建一個高可用的node命令行工具,在此之前,大家可以自由摸索,也許會有更好的方式。

 
 
 
 
  1. // 1.構(gòu)建項(xiàng)目目錄
  2. mkdir xxx
  3. cd xxx
  4. npm init
  5. // 2.安裝commander模塊
  6. npm install commander --save
  7. // 3.新建bin/[你自定義的命令行文件名]
  8. #!/usr/bin/env node
  9. var program = require('commander');
  10. program.version('0.0.1');
  11. program
  12.     .command('help')
  13.     .description('顯示使用幫助')
  14.     .action(function() {
  15.         program.outputHelp();
  16.     });
  17. program
  18.     .command('create [dir]')
  19.     .description('創(chuàng)建一個空博客')
  20.     .action(function(dir) {
  21.         console.log('create %s', dir);
  22.     });
  23. program
  24.     .command('preview [dir]')
  25.     .description('實(shí)時預(yù)覽')
  26.     .action(function(dir) {
  27.         console.log('preview %s', dir);
  28.     });
  29. program
  30.     .command('build [dir]')
  31.     .description('生成整站靜態(tài)HTML')
  32.     .option('-o, --output ', '生成的靜態(tài)HTML存放目錄')
  33.     .action(function(dir) {
  34.         console.log('創(chuàng)建 %s, 輸出 %s', dir, options.output);
  35.     });
  36. // 開始解析命令
  37. program.parse(process.argv);
  38. // 4.在package.json目錄下執(zhí)行關(guān)聯(lián)操作
  39. npm link
  40. // 5.測試,輸入相關(guān)命令即可執(zhí)行對應(yīng)操作
  41. xxx help

 本文轉(zhuǎn)載自微信公眾號「趣談前端 」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系趣談前端 公眾號。

【責(zé)任編輯: 姜華 TEL:(010)68476606】


新聞標(biāo)題:Vue/React項(xiàng)目中不可忽視的自動化部署方案
URL標(biāo)題:http://www.dlmjj.cn/article/dhjesgj.html