因为有时候会自己做点小网页进行上传到 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 桶中
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。