做网站优化价格,苏州创建公司,怎么样在网站文章最后做超链接,杭州公司网站开发deploy.js
const fs require(fs)
const path require(path)
const util require(util)
const OSS require(ali-oss)/*因为#xff0c;在Node.js中#xff0c;许多核心模块的函数都是采用回调函数的形式进行异步操作的#xff0c;即在操作完成后调用回调函数来处理结果。…deploy.js
const fs require(fs)
const path require(path)
const util require(util)
const OSS require(ali-oss)/*因为在Node.js中许多核心模块的函数都是采用回调函数的形式进行异步操作的即在操作完成后调用回调函数来处理结果。但是使用回调函数的编码风格可能会导致回调地狱callback hell的问题使代码难以阅读和维护。所以为了解决这个问题Node.js提供了util.promisify方法它可以将回调风格的函数转换为返回Promise的函数通过这种方式可以使用async/await或.then()链式调用等方式来处理异步操作使代码更加清晰和易于理解。这两句代码的作用是将Node.js中的回调风格的函数fs.readdir 和 fs.stat转换为基于Promise的函数这里util.promisify被用来转换fs.readdir和fs.stat这两个具有回调函数的函数转换后promisifyReaddir和promisifyStat就变成了可以返回Promise的函数可以使用await或.then()来处理它们的异步结果。
*/
const promisifyReaddir util.promisify(fs.readdir)
const promisifyStat util.promisify(fs.stat)// 阿里云的oss配置
const client new OSS({region: oss-dnfdnfdnf,accessKeyId: Even-Dnf-dnf,accessKeySecret: Even-dnf-dnf-DNF,bucket: orange-dnf
})/*(__dirname)node自带参数返回的是当前文件所在目录path.resolve()将当前文件所在目录__dirname与相对路径./dist拼接起来得到一个绝对路径表示要上传的本地文件夹的路径
*/
const publicPath path.resolve(__dirname, ./dist)// 异步函数run它递归遍历指定文件夹中的所有文件和文件夹并将文件上传到阿里云OSS
async function run(proPath ) {/*(fs.readdir)读取指定路径下的文件和文件夹返回一个包含文件和文件夹名称的数组${publicPath}${proPath}表示要读取的文件夹路径*/const dir await promisifyReaddir(${publicPath}${proPath})// 开始一个循环遍历文件夹dir中的每个项for (let i 0; i dir.length; i) {// (fs.stat)获取当前项的状态信息返回一个包含文件或文件夹的详细信息的对象const stat await promisifyStat(path.resolve(${publicPath}${proPath}, dir[i]))// 这个if...else判断当前项是文件还是文件夹if (stat.isFile()) {// 如果当前项是文件创建一个可读流fs.createReadStream来读取文件内容将文件内容存储在fileStream变量中const fileStream fs.createReadStream(path.resolve(${publicPath}${proPath}, dir[i]))// 打印出正在上传的文件的路径console.log(上传文件: ${proPath}/${dir[i]})/* 使用OSS客户端的putStream方法将文件流上传到阿里云OSS中的指定路径proPath文件在文件夹中的相对路径dir[i]表示文件名fileStream表示文件内容流*/const result await client.putStream(${proPath}/${dir[i]}, fileStream)} else if (stat.isDirectory()) {// 如果当前项是文件夹递归调用run函数传递当前文件夹的路径以处理嵌套的文件夹结构await run(${proPath}/${dir[i]})}}
}run()