wepy-plugin-resources-cdn
Version:
upload wepy resources to cdn
129 lines (93 loc) • 4.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _index = require('./utils/index');
var _index2 = _interopRequireDefault(_index);
var _qiniu = require('./driver/qiniu');
var _qiniu2 = _interopRequireDefault(_qiniu);
var _upyun = require('./driver/upyun');
var _upyun2 = _interopRequireDefault(_upyun);
var _cos = require('./driver/cos');
var _cos2 = _interopRequireDefault(_cos);
var _oss = require('./driver/oss');
var _oss2 = _interopRequireDefault(_oss);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var CloudStorage = function () {
function CloudStorage() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, CloudStorage);
this.options = options;
this.options.config = Object.assign({
prefix: 'cdn-wxapp',
debugMode: true,
time: true,
delDistImg: true
}, this.options.config);
this.driver = null;
switch (this.options.driver) {
case 'qiniu':
this.driver = new _qiniu2.default(this.options);
break;
case 'upyun':
this.driver = new _upyun2.default(this.options);
break;
case 'cos':
this.driver = new _cos2.default(this.options);
break;
case 'oss':
this.driver = new _oss2.default(this.options);
break;
default:
_index2.default.error('THE DRIVER NOT FOUND');
return;
}
}
_createClass(CloudStorage, [{
key: 'apply',
value: function apply(op) {
var _this = this;
var code = op.code,
type = op.type;
if ((type === 'wxml' || type === 'css' || type === 'page') && code) {
var reg = /(\.{0,2}(\"|\'))+(\S+)\.(png|jpg|jpeg|gif|bmp|webp)/gi;
var images = code.match(reg) || [];
images.map(function (image) {
try {
image = image.replace(/(\"|\')/, '');
if (!/http[s]{0,1}/.test(image)) {
var remotePath = _this.options.config.prefix + image;
var localFile = _path2.default.join(process.cwd(), 'src', image);
_this.driver.uploader(remotePath, localFile).then(function (res) {
!_this.options.config.debugMode || _index2.default.success(res.original, '上传到CDN响应数据');
var newUrl = _this.options.config.time ? res.url + '?t=' + new Date().getTime() : res.url;
op.code = op.code.replace(image, newUrl);
op.next();
_index2.default.success(image + ' ----> ' + newUrl, '上传到CDN成功');
!_this.options.config.delDistImg || _fs2.default.unlink(_path2.default.join(process.cwd(), 'dist', image), function (err) {
if (_this.options.config.debugMode && err) {
_index2.default.warn(err, '删除dist图片');
}
err || _index2.default.success(image, '删除dist图片成功');
});
}).catch(function (e) {
return _index2.default.error(e, '上传到CDN失败');
});
}
} catch (e) {
_index2.default.error(e, '上传失败');
}
});
}
op.next();
}
}]);
return CloudStorage;
}();
exports.default = CloudStorage;