静态资源一键上传华为云 obs 插件。可单独作为 node.js 库使用,也可作为 webpack 插件 (兼容 webpack3.x 以上版本)
npm i webpack-obs-upload-plugin --save-dev
选项名 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
accessKeyId | String | √ | 华为云 Access Key Id(AK):访问密钥 ID | |
secretAccessKey | String | √ | 华为云 Secret Access Key(SK):与访问密钥 ID 结合使用的私有访问密钥 | |
bucket | String | √ | 华为云 bucket | |
server | String | √ | '' | 终端节点(Endpoint) |
prefix | String | × | '' | 自定义路径前缀,通常使用项目目录名,文件将存放在 obs 的 bucket/prefix 目录下 |
format | Number | × | '' | 可用时间戳来生成 obs 目录版本号,每次会保留最近的版本文件做零宕机发布。可以通过插件自身提供的静态方法 getFormat()获得 |
deleteAll | Boolean | × | 是否删除 bucket 或 bucket/prefix 中所有旧文件。 | |
local | Boolean | × | false | 默认每次上传 webpack 构建流中文件,设为 true 可上传打包后 webpack output 指向目录里的文件 |
output | String | × | '' | 读取本地目录的路径,如果 local 为 true,output 为空,默认为读取 webpack 输出目录 |
exclude | ExpReg/Array | × | null | 可传入正则,或正则组成的数组,来排除上传的文件 |
onSuccess | Function | × | null | 上传成功后的回调函数 |
static getFormat()
参数又由 YYYY|YY|MM|DD|HH|hh|mm|SS|ss 组合而成,返回一个纯数字。 |
const OBSPlugin = require("webpack-obs-upload-plugin");
OBSPlugin.getFormat();
OBSPlugin.getFormat("YYYY");
- 使用 webpack 构建流文件上传,并删原有所有资源
const OBSPlugin = require("webpack-obs-upload-plugin");
new OBSPlugin({
accessKeyId: "2****************9",
secretAccessKey: "z**************=",
bucket: "staven",
prefix: "nuxt-doc", // "staven/nuxt-doc/icon_696aaa22.ttf"
exclude: [/.*\.html$/], // 或者 /.*\.html$/,排除.html文件的上传
deleteAll: true, // 删除旧文件
});
- 使用打包后的本地文件上传
const OBSPlugin = require("webpack-obs-upload-plugin");
const path = require("path");
new OBSPlugin({
accessKeyId: "2****************9",
secretAccessKey: "z**************=",
server: "https://obs.cn-east-2.myhuaweicloud.com",
bucket: "staven",
prefix: "nuxt-doc", // "staven/nuxt-doc/icon_696aaa22.ttf"
exclude: [/.*\.html$/], // 或者 /.*\.html$/,排除.html文件的上传
local: true,
output: path.resolve(__dirname, "./build"), // 此项不填,将默认指向webpack/vue-cli等工具输出目录
});
- 使用 format 做版本备份
const OBSPlugin = require('webpack-obs-upload-plugin')
const time = OBSPlugin.getFormat('YYMMDD')
new OBSPlugin({
accessKeyId: "2****************9",
secretAccessKey: "z**************=",
server: "https://obs.cn-east-2.myhuaweicloud.com",
bucket: "staven",
prefix: 'nuxt-doc', // "staven/nuxt-doc/icon_696aaa22.ttf"
exclude: [/.*\.html$/], // 或者 /.*\.html$/,排除.html文件的上传
deleteAll: false, // 不删除旧文件
format: time, // 备份最近版本的obs文件
local: true, // 上传打包输出目录里的文件
limit: 10 // 备份版本数量
})
- 使用上传成功回调函数
const OBSPlugin = require("webpack-obs-upload-plugin");
const path = require("path");
new OBSPlugin({
accessKeyId: "2****************9",
secretAccessKey: "z**************=",
server: "https://obs.cn-east-2.myhuaweicloud.com",
bucket: "staven",
exclude: null,
deleteAll: true,
output: path.resolve(__dirname, "./src"),
local: true,
onSuccess: () => {
console.log("上传成功");
},
}).upload();
可以不结合 webpack,单独作为 node.js 库使用。
const OBSPlugin = require("webpack-obs-upload-plugin");
const path = require("path");
new OBSPlugin({
accessKeyId: "2****************9",
secretAccessKey: "z**************=",
server: "https://obs.cn-east-2.myhuaweicloud.com",
bucket: "staven",
exclude: null,
deleteAll: true,
output: path.resolve(__dirname, "./src"),
local: true,
}).upload();