一般 vue 的項(xiàng)目,大家都是直接把最后生成的 css js 等文件直接上傳到服務(wù)器,并沒有cdn 的業(yè)務(wù)
這樣做一般有2個(gè)弊端,
- 增加服務(wù)器帶寬壓力,訪問量一旦上去,服務(wù)器就可能因?yàn)閹拤毫斓?/li>
- 部分地區(qū)訪問速度會(huì)變慢
不過雖然知道歸知道,但是每次都手動(dòng)把 js css 文件傳到七牛上很累的。
尤其是在改動(dòng)頻繁的情況下,每次上傳七牛 cdn 很浪費(fèi)時(shí)間。
于是就去找七牛的文檔,決定用腳本來(lái)解決這個(gè)問題,我是用的 python sdk 實(shí)現(xiàn)得。
python 環(huán)境請(qǐng)自行安裝
首先下載七牛的包
pip install qiniu
然后安裝第三方的依賴包 glob2
pip install glob2
upqiniu.py
# -*- coding: utf-8 -*-
from qiniu import Auth, put_file,
import qiniu.config
import glob2
import os
#需要填寫你的 Access Key 和 Secret Key
access_key = '*********************'
secret_key = '**********************'
#構(gòu)建鑒權(quán)對(duì)象
q = Auth(access_key, secret_key)
#要上傳的空間
bucket_name = '****'
resources = glob2.glob('dist/static/**')
def upload(path):
file_name = path.replace('dist/', '')
key = file_name
token = q.upload_token(bucket_name, key, 3600)
localfile = './' + path
put_file(token, key, localfile)
for r in resources:
if os.path.isfile(r):
upload(r)
需要將本腳本(upqiniu.py)放到 dist 同級(jí)目錄下,如下圖:

image.png
腳本中的 access_key secret_key 你登錄七牛后在個(gè)人資料中即可找到:

image.png
還需要將 webpack 的 publicPath 改成七牛的地址即改成下面這個(gè)

image.png
在 vue 的項(xiàng)目中,只需要改動(dòng) config 目錄下面的 index.js 即可

image.png
雖然改動(dòng)起來(lái)有一點(diǎn)小麻煩,但是一勞永逸,
首先 npm run build
然后 python upqiniu.py
最后將你的 index.html 拉到線上服務(wù)器就可以了。
ps: 這個(gè)腳本會(huì)將 dist/static/ 的所有文件上傳到七牛,包括 ** 字體文件** , 圖片等。