UNPKG

@aniyajs/plugin-tooltik

Version:

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

54 lines (46 loc) 1.36 kB
export default (api) => { api.describe({ key: "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.appPath, filterHandle: (file) => (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/template/redux.ts.tpl", ), api.resolve(pluginTempPath, "redux.ts"), { reducerMapImports: modelNames.join(",\n"), reducerMappings: modelNames .map((item) => `[${item}.name]: createSlice(${item}).reducer`) .join(",\n"), }, ); }); };