UNPKG

wepy-plugin-base64imgs

Version:
107 lines (79 loc) 4.04 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 _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;