应用于小程序的自动生成路由配置文件、类型文件,处理 icon 的自动化工具
npm install @yocdev/loom --dev // 或者 yarn add @yocdev/loom --dev
在根目录下添加配置文件 loom.config.ts
import { defineConfig } from '@yocdev/loom'; export default defineConfig({ // 路由处理配置文件 router: { // 扫瞄文件 include: ['src/**/pages/*/index.ts[x]'], exclude: [], // 产物输出地址 output: 'src/__generated__/router', transformPageInfo(pageInfo) { const { folderPath } = pageInfo; return { ...pageInfo, folderPath: folderPath.replace('src/', '') + '/index', }; }, transformRouterJson(routerJson) { const { pageTypeMapping } = routerJson; const subPackagePaths: string[] = []; const routerSource = Object.keys(pageTypeMapping).reduce((res, key) => { const { folderPath } = pageTypeMapping[key]; const isSubPackagePage = folderPath.includes('package'); if (isSubPackagePage) { subPackagePaths.push(folderPath); return res; } return { ...res, [key]: folderPath, }; }, {}); const packageMapping = subPackagePaths.reduce((res, path) => { const packageName = path.match(/(package\w+)/)?.[1] || ''; const relationPath = path.match(/package\w+\/([\S]*)/)?.[1] || ''; const originPackageInfo = res[packageName] || { root: packageName, name: packageName, pages: [], }; originPackageInfo.pages.push(relationPath); return { ...res, [packageName]: originPackageInfo, }; }, {}); return { ...routerJson, routerSource, subpackages: Object.values(packageMapping), }; }, }, icon: [ { include: ['src/assets/icons/*.svg'], exclude: [], filePrefix: 'Icon', output: 'src/__generated__/icons', }, { include: ['src/assets/svgs/*.svg'], exclude: [], filePrefix: 'Svg', output: 'src/__generated__/svgs', }, ], });
给对应页面配置 route.config.ts 配置示例
export const pageName = '页面标题'; // 页面 id,可以页面埋点标识 export const pageId = '1'; // 页面入参 export interface PageParams { name: string; }
npm config set sharp_binary_host "https://npmmirror.com/mirrors/sharp" npm config set sharp_libvips_binary_host "https://npmmirror.com/mirrors/sharp-libvips" npm install sharp