Hexo一键部署到阿里oss

Hexo一键部署到阿里oss

首先上脚本

感谢zhaohan提供的脚本(有点小问题,我自己修复了一下)

const fs = require('fs')
const path = require('path')
const util = require('util')
const OSS = require('ali-oss')

const promisifyReaddir = util.promisify(fs.readdir)
const promisifyStat = util.promisify(fs.stat)

// 阿里 OSS access key 拥有对 OSS 的全部权限
const ALIOSSKEY = {
    key: '*****************',
    secret: '*****************'
}

const client = new OSS({
    // 请填写你的 Bucket 对应的 region
    region: 'oss-cn-shanghai',
    accessKeyId: ALIOSSKEY.key,
    accessKeySecret: ALIOSSKEY.secret,
    // 请填写对应的 Bucket 名字
    bucket: 'MewBucket'
})

const publicPath = path.resolve(__dirname, './public')



async function run(proPath = '') {
    const dir = await promisifyReaddir(`${publicPath}${proPath}`)

    for (let i = 0; i < dir.length; i++) {
        const stat = await promisifyStat(path.resolve(`${publicPath}${proPath}`, dir[i]))

        if (stat.isFile()) {
            const fileStream = fs.createReadStream(path.resolve(`${publicPath}${proPath}`, dir[i]))
            console.log(`上传文件: ${proPath}/${dir[i]}`)
            const result = await client.putStream(`${proPath}/${dir[i]}`, fileStream)
            console.log(result)
        } else if (stat.isDirectory()) {
            await run(`${proPath}/${dir[i]}`)
        }
    }
}

run()
  • 安装依赖 : npm i ali-oss
  • 新建该脚本放在你hexo项目的根目录下,和public同级
  • 该脚本有四个参数需要自己的配置(在你的oss控制台查):access key,access secret,region,Bucket
  • 然后修改根目录下的package.json文件
    • 找到"scripts": { ··· }这一行
    • 增加一个指令:"doss": "node ./doss.js" ,就像下面这样
  "scripts": {
    "build": "hexo generate && node ./move404.js",
    "clean": "hexo clean",
    "doss": "node ./doss.js",
    "deploy": "hexo deploy"
    "server": "hexo server",
  },
  • 然后直接运行 npm doss 就能直接把public下所有文件上传到你的bucket啦

另外由于oss的404页面也只能设置根目录下的文件,而hexo自动生成的404页面在一个文件夹里,每次自己手动移动的话不免显的太麻烦了

所以当然也要配置成自动的

  • 同理,根目录下新建一个脚本 move404.js
const fs = require('fs')
fs.writeFileSync('./public/404.html', fs.readFileSync('./public/404/index.html'));
  • 同上,还是在package.json里添加一个指令(或者把原来的指令修改成这样): "build": "hexo generate && node ./move404.js",
  • 运行npm build的时候也就自动的移动404.html啦

个人博客 mew.wiki 分享各种干货,高清壁纸等,欢迎来访~

你可能感兴趣的:(博客搭建)