UNPKG

wepy-plugin-resources-cdn

Version:
129 lines (93 loc) 4.25 kB
'use strict'; 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;