t-comm
Version:
专业、稳定、纯粹的工具库
50 lines (45 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var fs_fs = require('../fs/fs.js');
var regexp_regexp = require('../regexp/regexp.js');
require('fs');
/**
* 为 Vue 组件添加 emits 属性
* @param {string} filePath 组件地址
* @param {string} [fileContent] 组件内容
* @returns {string} 新的组件内容
*
* @example
* ```ts
* addNameForComponent('xxx.vue');
* ```
*/
function addEmitsForComponent(filePath, fileContent) {
if (fileContent === void 0) {
fileContent = '';
}
var content = fileContent;
if (!content) {
content = fs_fs.readFileSync(filePath, false);
}
if (/emits:\s*\[/.test(content)) return;
var emits = getEmitList(content);
if (!emits.length) return;
var newSource = content.replace(/(?=\s\sdata\(\)\s*\{)/, getEmitsStr(emits));
fs_fs.writeFileSync(filePath, newSource);
return newSource;
}
function getEmitList(source) {
var reg = /emit\('([^',]+)'/g;
var emits = regexp_regexp.getMatchListFromReg(source, reg);
var array = Array.from(new Set(emits));
array.sort();
return array;
}
function getEmitsStr(emits) {
var emitsStr = emits.map(function (item) {
return "'".concat(item, "'");
}).join(',\n ');
return [' emits: [', " ".concat(emitsStr, ","), ' ],\n'].join('\n');
}
exports.addEmitsForComponent = addEmitsForComponent;