把团队配置锁进 umi 自定义模板:一条 umi create 生成新项目

把团队配置锁进 umi 自定义模板:一条 umi create 生成新项目 把团队配置锁进 umi 自定义模板一条 umi create 生成新项目【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi上周又被要求把老项目拷一份改改名。第三次了你还在手动搬 ESLint 配置、逐个修依赖版本。umi 自定义模板就是干这个的把团队标准结构塞进一个模板包以后一条umi create就生成合规新项目把 30 分钟复制粘贴压到 10 秒。先搞清楚你缺什么配置漂移 → 新人首日就报错你陪跑一小时新项目从空目录起步 → 路由、状态、构建配置全要重装第三方库集成步骤散落各仓库 → 入职文档写完就过时项目越多结构越歪 → 跨项目重构改一处动三处umi 的create命令原生支持外挂模板--template传一个 npm 包名create-umi就去 npm 源下载对应 tarball 并解压到目标目录模板里的.tpl文件则由BaseGenerator统一渲染变量。说白了模板就是一个带变量的 npm 包。这是官方 app 模板首次跑起来时的页面也是你将来团队 React 项目模板一键生成后的标准长相。动手前的环境核对环境项最低版本验证命令Node.js14.0node -vpnpm8.xpnpm -vumi CLI4.xumi -vnpm 账号发布用—npm whoami上手前建议先翻一眼 create-umi 官方模板目录里面的package.json.tpl能直接看出变量是怎么注入的比看文档快。从零跑通一个 umi 自定义模板用 5 个文件搭出模板骨架这一步定义生成什么。最小结构长这样team-template/ ├── package.json # 模板包描述files 决定带哪些文件 ├── src/pages/index.tsx.tpl # 页面骨架内含变量占位 ├── src/layouts/index.tsx.tpl ├── config/config.ts └── .eslintrc.js # 团队统一 lint 规则包名和文件清单是重点{ name: myteam/umi-team-template, files: [src, config, .eslintrc.js] }踩坑提示files漏写源码目录拉下来的 tarball 就只剩一个描述文件解压后是空目录。下载与包名匹配规则在 template.ts 里它会自动补umijs/前缀和-template后缀非umijs作用域的包请写全名。骨架有了接下来让它认识你的项目变量。让 {{name}} 变量真正被替换这一步把静态值换成用户输入。需要动态内容的文件加.tpl后缀变量用 EJS 三花括号!-- src/pages/index.tsx.tpl -- export default function Index() { return div欢迎 {name}由 {author} 维护/div; }渲染逻辑在 BaseGenerator.ts它递归读取.tpl文件再按传入 data 替换没有.tpl后缀就不会走变量管线。踩坑提示双花括号{{ name }}会做 HTML 转义三花括号才是原样替换。生成 TS/JS 文件用双花括号引号和 undefined 会被转义得面目全非。变量通了用 umi create 做最终验证。发布到私有源后验证 umi createumi create --template走的是 npm 源本地验证最快的路子是发布到私有 registry或团队内部源npm publish --registryhttps://registry.npm.example.com umi create my-app --template myteam/umi-team-template cd my-app pnpm dev # 页面出现真实项目名即成功踩坑提示报错Template xxx not found from registry时先确认umi create时选的 registry 和发布的是不是同一个源——模板下载用的源和后续pnpm install的源是分开配置的。把 umi 自定义模板用出花交互式选择在模板里加一个问答脚本让用户勾选特性按答案生成不同依赖const ans await prompts({ type: multiselect, name: features, message: 要哪些, choices: [{ title: antd }, { title: tailwind }, { title: dva }], });条件渲染同一文件两种形态时在.tpl里用 EJS 分支比维护两份文件干净% if (useTailwind) { % import tailwindcss; % } %继承官方模板把templates/app的目录结构拷过来当底叠加上团队差异。适合先跑起来再慢慢调的小团队省掉从零写骨架的成本。什么时候不用如果团队小于 3 人、又没人维护版本号别急着发 npm 模板——目录拷贝加个内部脚本足够了发布意味着版本维护的义务模板改错一处会影响之后所有新项目。顺手能用的资源examples/cli-custom/用 umi preset 机制写自定义 CLI 的完整示例想把自己的脚手架命令包起来就看它packages/create-umi/src/index.tsumi create主流程交互式问答、monorepo 检测、git 初始化都在里面examples/create-umi-simple/脚手架实际生成的示例工程对照标准产出长什么样examples/with-tailwindcss/Tailwind 接入 umi 项目的现成写法抄进模板即可把上面的骨架拷到本地package.json.tpl里改两个变量名发布到私有源——5 分钟后团队下一个 umi 自定义模板项目就能一条umi create --template生成再也不用对着空目录发呆。【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考