起因
因为之前每次写文章都要登陆阿里云,手动上传文件比较繁琐,用提供的客户端老是需要重新输入密码,记住密码可能会弄丢,所以干脆用gulp写个上传的方法,命令一执行就可以实现一键生成压缩部署。
安装依赖
只需要安装ali-oss:
npm install ali-oss --save-dev
用到了node自带的fs模块
开始实现上传文件
-
遍历目录文件,将结果保存在fileList中。
var fs = require('fs') var fileList = [] function walk(path){ var dirList = fs.readdirSync(path); dirList.forEach(function(item){ if(fs.statSync(path + '/' + item).isFile()){ fileList.push(path + '/' + item); } }); dirList.forEach(function(item){ if(fs.statSync(path + '/' + item).isDirectory()){ walk(path + '/' + item); } }); }
-
创建oss对象,具体参数参照官网。
let OSS = require('ali-oss'); let client = new OSS({ region: 'XXXXX', //参数请参考官网 accessKeyId: 'XXXXXXXXXXXXXX', //参数请参考官网 accessKeySecret: 'XXXXXXXXXXXXXXX', //参数请参考官网 bucket: 'XXXXXX' //参数请参考官网 });
-
写同步上传函数
async function put(uploadfile,localfile) { try { let result = await client.put(uploadfile, localfile); console.log(result); return true; } catch (e) { console.log(e); } return false; }
-
用gulp写上传任务
gulp.task('upload', done=> { fileList = []; //调用文件遍历方法 walk('./public'); try { fileList.forEach((item,i)=> { let file = item.replace('./public/',''); //调用文件上传方法 let result = put(file,item); if(!result) { throw new Error('上传文件失败'); } }); }catch(e) { console.log(e); } done(); });