1

因为有时候会自己做点小网页进行上传到 oss 但是需要使用 oss-browser 客户端不是特别方便,所以制作了一个小脚本进行上传
添加相关依赖
package.json

{
  "devDependencies": {
        "ali-oss": "^6.18.0",
        "co": "^4.6.0",
        "fs": "^0.0.1-security",
        "path": "^0.12.7",
    }
}

项目根目录下
新建文件 ali-oss-publish.js

// 引入必要的模块
const fs = require('fs');
const co = require('co');
const path = require('path');
const oss = require('ali-oss');

// 定义项目名称
// const projectName =  path.basename(__dirname); // 可以使用行代码自动读取本地项目名称上传
const projectName = 'demo';

// 配置OSS客户端
const store = oss({
    accessKeyId: process.env.NODE_YYAO_CLI_ACCESSKEY_ID,
    accessKeySecret: process.env.NODE_YYAO_CLI_ACCESSKEY_SECRET,
    bucket: "bucketName",
    region: "oss-cn-beijing",
});

// 立即执行函数,用于上传文件到OSS
(() => {
    // 定义上传文件的根目录
    const root = path.resolve(__dirname, './dist');
    // 存储所有需要上传的文件路径
    const files = [];

    // 同步读取目录及子目录下的文件
    function readDirSync(p) {
        const pa = fs.readdirSync(p);
        pa.forEach((e) => {
            const cur_path = `${p}/${e}`;
            const info = fs.statSync(cur_path);
            if (info.isDirectory()) {
                readDirSync(cur_path);
            } else {
                files.push(cur_path);
            }
        });
    }
    // 从根目录开始读取所有文件
    readDirSync(root);

    // 使用co库使异步操作同步化
    co(function*() {
        for (let index = 0; index < files.length; index += 1) {
            const e = files[index];
            // 上传每个文件到OSS,并打印上传结果
            const result = yield store.put(projectName + e.replace(root, ''), e);
            console.log(result);
        }
    });
})();

在 package.json 中添加指令

{
    "scripts": {
        "build:upload": "cross-env BUILD_PAGE=ALL vue-cli-service build && node ali-oss-publish"
    },
}

就完成了,之后就直接在命令行运行 yarn build:upload 就能实现命令行直接上传编译文件到 oss 桶中


汝何不上九霄
4.7k 声望1.6k 粉丝