UNPKG

@alanchenchen/cbml-processor

Version:

基于cbml parser和cbml规范实现的构建工具

47 lines (46 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runTask = void 0; const tslib_1 = require("tslib"); const promises_1 = require("fs/promises"); const path_1 = require("path"); const parser_1 = require("./parser"); const generater_1 = require("./generater"); /** * 根据单个文件的配置项,顺序执行插件,并生成目标文件 * * @param source.input * @param source.output * @param plugins * @returns */ const runTask = ({ input, output }, plugins) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () { try { const inputPath = (0, path_1.resolve)(process.cwd(), input); const inputCode = yield (0, promises_1.readFile)(inputPath, { encoding: 'utf-8' }); let CBMLRootEle = (0, parser_1.parseCBMLEle)(inputCode, { range: true, source: false }); for (const pluginFunc of plugins) { // 运行插件,操作AST const res = yield pluginFunc(CBMLRootEle, inputCode); if (res) { CBMLRootEle = res; } } const outputCode = (0, generater_1.generateCode)(CBMLRootEle); if (output) { yield (0, promises_1.writeFile)((0, path_1.resolve)(process.cwd(), output), outputCode); } return { input, output, outputCode }; } catch (error) { return Promise.reject(error); } }); exports.runTask = runTask;