UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

46 lines (43 loc) 1.26 kB
import { getMatchListFromReg } from '../regexp/regexp.js'; import { readFileSync, writeFileSync } from '../fs/fs.js'; import '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 = 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)); writeFileSync(filePath, newSource); return newSource; } function getEmitList(source) { var reg = /emit\('([^',]+)'/g; var emits = 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'); } export { addEmitsForComponent };