将 nuxt 打包文件上传到腾讯云 cos

起因

最近在用nuxt做一个项目,没有找到nuxt文件上传cos

nuxt+pm2 自动化部署及打包后文件自动上传阿里云 oss的是oss,

可惜我用的是cos,于是根据它修改成了cos

新建cosUpload.js

cnpm i cos-nodejs-sdk-v5 --save
cnpm i dotenv
    const dotenv = require("dotenv")
    dotenv.config()


    const Cos = require("cos-nodejs-sdk-v5");

    const fs = require("fs");
    const path = require("path");

    const os = require("os");

    const PUBLIC_PATH = path.join(__dirname, "/");

    const client = new Cos({
        SecretId: process.env.SecretId,
        SecretKey: process.env.SecretKey
    });

    async function deleteDir(dir) {
    let result = await client.getBucket({
        Bucket: process.env.Bucket, /* 必须 */
        Region: process.env.Region,  
        Prefix: dir + "/",
    },async function (err,result){
       if (result.Contents) {
            let keys = [];
            result.Contents.forEach(function(obj) {
                keys.push({"Key":obj.Key});
            });

            try {
            await  client.deleteMultipleObject( {
                Bucket: process.env.Bucket, /* 必须 */
                Region: process.env.Region,          
                Objects: keys
              });
              successMes('cos删除'+ dir +'成功')
             } catch (e) {
              console.log("文件删除失败", e);
            }
          }

    });

    }



    function addFileToCosSync(src, dist) {
    let docs = fs.readdirSync(src);

    docs.forEach(function(doc) {
      let _src = src + "/" + doc,
        _dist = dist + "/" + doc;
      let st = fs.statSync(_src);
      // 判断是否为文件  
        if (st.isFile() && doc !== ".DS_Store") {
        putCos(_src, _dist);
      }
      // 如果是目录则递归调用自身 
         else if (st.isDirectory()) {
        addFileToCosSync(_src, _dist);
      }
    });

  }

    /** *单个文件上传至cos */
    async function putCos(src, dist) {

        await client.putObject({
            Bucket: process.env.Bucket, /* 必须 */
            Region: process.env.Region,      
            Key: dist,              /* 必须 */
            Body: fs.createReadStream(src),
        },function(err,data){
          successMes(src + '  上传成功')
          if( err != null)
            console.log(" 上传失败".err);
        })

    } 

    /** *上传文件启动 *@param {string} dirName 将要上传的文件名 */
    async function upFile(dirName) {
    try {
      await deleteDir(dirName);
      await addFileToCosSync(PUBLIC_PATH + ".nuxt/dist/client", dirName);

    } catch (err) {
      console.log(dirName + "上传cos成功失败", err);
    }}

    function successMes(msg)
    {
      console.log('\u001b[32m '+ msg +'\u001b[0m');
    }

    upFile(process.env.UploadPath);

新建.env


SecretId=
SecretKey=
Bucket=
Region=                    
UploadPath=view                           //上传到cos那个路径

运行

node cosUpload.js

http://cdn.lblog.club/images/node_cos_upload.png

本作品采用《CC 协议》,转载必须注明作者和本文链接
专心学习不瞎搞
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
87
粉丝
105
喜欢
480
收藏
717
排名:109
访问:8.7 万
私信
所有博文
社区赞助商