webpack-aliyun-oss
A webpack(version>=4) plugin to upload assets to aliyun oss, u can use it with or without webpack.
一个webpack(version>=4)插件,上传资源到阿里云oss。可以作为webpack插件使用,也可独立使用
- 以插件方式使用时,默认按output.path (webpack.config.js) 目录下的文件路径上传(保留原文件路径的层级结构)。
- 独立使用时,按
buildRoot
的文件路径上传(保留原文件路径的层级结构)。 - 以上两种方式,都可以通过
setOssPath
重新配置不同的上传路径。
Install
$ npm i webpack-aliyun-oss -D
Options
-
from
: 上传哪些文件,支持glob方式,如'./build/**', 可以为glob字符串或者数组。- 作为插件使用时:可选。默认为output.path下所有的文件。
- 独立使用时:必传
-
dist
: 上传到oss哪个目录下,默认为oss根目录。可作为路径前缀使用。 -
ossOptions
: OSS相关参数配置。-
region
: 阿里云上传区域 -
accessKeyId
: 阿里云的授权accessKeyId -
accessKeySecret
: 阿里云的授权accessKeySecret -
bucket
: 上传到哪个bucket -
stsToken
: security-token, 可选 - 以及oss其他可能的参数都可以在这里配置
-
-
timeout
: oss超时设置,默认为30秒(30000) -
overwrite
: 是否覆盖oss同名文件。默认false -
parallel
: 并发上传个数。默认5 -
deleteOrigin
: 上传完成是否删除原文件,默认false -
setOssPath
: 自定义每个文件上传路径。接收参数为当前文件路径。不传,或者所传函数返回false则按默认方式上传。 -
setHeaders
: 配置headers的函数。接收参数为当前文件路径。不传,或者所传函数返回false则不设置header。 -
buildRoot
: 构建目录。如:path/to/your/files。独立使用时候需要传。如果已传setOssPath
可忽略。默认为当前工作目录。 -
test
: 测试,仅查看文件和上传路径,但是不执行上传操作。默认false -
bail
: 出错是否中断上传。默认false -
logToLocal
: 出错信息写入本地upload.error.log。默认false
accessKeyId, accessKeySecret
很重要,注意保密!!!
注意: Example
作为webpack插件使用
const WebpackAliyunOss = require('webpack-aliyun-oss');
const webpackConfig = {
// ... 省略其他
plugins: [new WebpackAliyunOss({
from: ['./build/**', '!./build/**/*.html'], // build目录下除html之外的所有文件
dist: '/path/in/alioss', // oss上传目录
ossOptions: {
region: 'your region',
accessKeyId: 'your key',
accessKeySecret: 'your secret',
bucket: 'your bucket',
stsToken: '<security-token>', // 可选
},
// 如果希望自定义上传路径,就传这个函数
// 否则按 output.path (webpack.config.js) 目录下的文件路径上传
setOssPath(filePath) {
// filePath为当前文件路径。函数应该返回路径+文件名。
// 如果返回/new/path/to/file.js,则最终上传路径为 /path/in/alioss/new/path/to/file.js
return '/new/path/to/file.js';
},
// 如果想定义header就传
setHeaders(filePath) {
// 定义当前文件header,可选
return {
'Cache-Control': 'max-age=31536000'
}
}
})]
}
独立使用
const WebpackAliyunOss = require('webpack-aliyun-oss');
new WebpackAliyunOss({
from: ['./build/**', '!./build/**/*.html'],
dist: '/path/in/alioss',
buildRoot: 'build', // 构建目录,如果已传setOssPath,可忽略
ossOptions: {
region: 'your region',
accessKeyId: 'your key',
accessKeySecret: 'your secret',
bucket: 'your bucket',
stsToken: '<security-token>', // 可选
},
// 如果希望自定义上传路径,就传这个函数
// 否则按`buildRoot`下的文件结构上传
setOssPath(filePath) {
// filePath为当前文件路径。函数应该返回路径+文件名。
// 如果返回/new/path/to/file.js,则最终上传路径为 /path/in/alioss/new/path/to/file.js
return '/new/path/to/file.js';
},
// 如果想定义header就传
setHeaders(filePath) {
return {
'Cache-Control': 'max-age=31536000'
}
}
}).apply();