UNPKG

@aniyajs/plugin-tooltik

Version:

基于redux-tooltik封装的状态管理插件服务于aniyajs自动化脚手架

65 lines (57 loc) 1.6 kB
export default (api) => { api.describe({ key: "toolTik", config: { default: true, }, }); if (api.configition.toolTik) { api.generate(async (args) => { const { pluginTempPath, ...paths } = args; const globalModelPath = api.join(paths.appPath, "src/models"); let modelNames = []; const specifyFiles = await api.readFilterdir({ rootPath: paths.appSrc, filterHandle: (file) => { return ( (file.startsWith(globalModelPath) && file.replace(globalModelPath).split(/[\\/]/).length === 2) || file.endsWith("model.ts") || file.endsWith("model.js") ); }, }); const exports = specifyFiles.map((modelFile, i) => { const modelName = `Demo${i}`; modelNames.push(modelName); return `import ${modelName} from "${modelFile.replace( /\\/g, "\\\\" )}";`; }); const content = ` ${exports.join("\n")} export default { ${modelNames.join(",\n")} } `; api.writeFile({ file: api.resolve(pluginTempPath, "exports.ts"), content, }); api.copyTpl( api.join( paths.appNodeModules, "@aniyajs/plugin-tooltik/templates/redux.ts.tpl" ), api.resolve(pluginTempPath, "redux.ts"), { reducerMapImports: modelNames.join(",\n"), reducerMappings: modelNames .map((item) => `[${item}.name]: createSlice(${item}).reducer`) .join(",\n"), } ); }); } };