wepy-plugin-base64imgs
Version:
107 lines (79 loc) • 4.04 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 _mime = require('mime');
var _mime2 = _interopRequireDefault(_mime);
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 _class = function () {
function _class() {
var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, _class);
var config = {
css: true,
html: true,
js: true,
mark: '#',
size: 15000
};
this.setting = Object.assign({}, config, c);
}
_createClass(_class, [{
key: 'apply',
value: function apply(op) {
var _this = this;
var code = op.code,
file = op.file;
var typeList = [];
if (!this.setting.path) {
process.stderr.write('base64imgs\u5FC5\u987B\u8BBE\u7F6Epath\u503C');
process.exit(3);
}
if (this.setting.css === true) {
typeList.push('.wxss');
}
if (this.setting.html === true) {
typeList.push('.wxml');
}
if (this.setting.js === true) {
typeList.push('.js');
}
var reg = new RegExp('(' + typeList.join("|") + ')');
if (code && reg.test(file)) {
if (typeof code.match !== 'function') op.next();
var _reg = new RegExp(this.setting.mark + "\\/([\\w\\-]+\\/)*[\\w\\-]+(.jpg|.jpeg|.png)", "g");
var imgLists = code.match(_reg) || [];
imgLists.map(function (imgPath) {
var reg = new RegExp(_this.setting.mark, "g");
var correctPath = imgPath.replace(reg, "");
var pathFile = _path2.default.join(process.cwd(), _this.setting.path || '', correctPath);
try {
var fileData = _fs2.default.readFileSync(pathFile);
var base64Data = fileData.toString('base64');
if (base64Data.length < _this.setting.size) {
var mimeType = _mime2.default.getType(pathFile);
var dataUri = 'data:' + mimeType + ';base64,' + base64Data;
op.code = op.code.replace(imgPath, '' + dataUri);
} else {
process.stderr.write(pathFile + '\u56FE\u7247\u5DF2\u8D85\u8FC7\u6700\u5927\u9650\u5236' + _this.setting.size + 'b, \u5EFA\u8BAE\u653E\u5165cdn \n');
process.exit(3);
}
} catch (e) {
console.log(JSON.stringify(e));
process.stderr.write(pathFile + '\u56FE\u7247\u8F6Cbase64\u5931\u8D25, \u8BF7\u67E5\u770B\u56FE\u7247\u8DEF\u5F84\u662F\u5426\u6B63\u786E');
process.exit(3);
}
});
}
op.next();
}
}]);
return _class;
}();
exports.default = _class;