@tarojs/plugin-generator
Version:
Taro 生成器插件
61 lines • 2.01 kB
JavaScript
;
/* eslint-disable no-console */
Object.defineProperty(exports, "__esModule", { value: true });
exports.safely = exports.isGeneratorError = exports.GeneratorError = exports.GeneratorErrorType = void 0;
exports.GeneratorErrorType = {
modifyConfig: 'modifyConfig',
emitFile: 'emitFile',
};
class GeneratorError extends Error {
type;
targetFile;
constructor(options) {
const { type, message, targetFile } = options;
super(message);
this.type = type;
this.name = 'GeneratorError';
this.targetFile = targetFile;
}
}
exports.GeneratorError = GeneratorError;
function isGeneratorError(error) {
return error instanceof GeneratorError;
}
exports.isGeneratorError = isGeneratorError;
async function safely(fn, options) {
try {
return await fn();
}
catch (error) {
if (typeof options?.onError === 'function') {
options.onError(error);
return options.fallback;
}
if (isGeneratorError(error)) {
switch (error.type) {
case exports.GeneratorErrorType.modifyConfig: {
console.log('❌ 更新配置文件失败');
console.log(`请添加如下代码至 ${error.targetFile ?? 'config/index.{ts,js}'} 中\n`);
break;
}
case exports.GeneratorErrorType.emitFile: {
console.log('❌ 生成文件失败');
if (error.targetFile) {
console.log(`请手动添加文件 ${error.targetFile},并添加如下代码至 ${error.targetFile} 中\n`);
}
break;
}
default: {
break;
}
}
console.log(error.message);
}
else {
console.log(error);
}
return options?.fallback;
}
}
exports.safely = safely;
//# sourceMappingURL=error.js.map