{"_id":"@achaogpt/kakashi","_rev":"1-ccad4173859fbcdb34b07020ad91ee5f","name":"@achaogpt/kakashi","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@achaogpt/kakashi","version":"1.0.0","description":"template batch copy","main":"index.js","types":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/charlzyx/kakashi.git"},"license":"MIT","scripts":{"build":"npx tsc && bun build ./index.ts --outdir ./"},"keywords":[],"author":"","dependencies":{"mustache":"^4.2.0"},"devDependencies":{"@types/mustache":"^4.2.5","@types/node":"^20.11.16","father":"^4.4.0"},"gitHead":"543c0ce4cd69a541c1ac4c3d6397f86c43629b18","bugs":{"url":"https://github.com/charlzyx/kakashi/issues"},"homepage":"https://github.com/charlzyx/kakashi#readme","_id":"@achaogpt/kakashi@1.0.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-AbunvpOJQ1+rhd519sZOouLRCYAcB9lwRZVJhbIURo1ZApUyO/qS/daaVxCEPw/+3mm1HnrXVbPQHgrlhBJXFQ==","shasum":"46d7b45ae0b3b3ddc3340c7350488e5edd24e07e","tarball":"https://registry.npmjs.org/@achaogpt/kakashi/-/kakashi-1.0.0.tgz","fileCount":6,"unpackedSize":35839,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeb8g80MQCH8Bkis07JPoJBWD0nKdm416QnnVYrSGLywIgOnc6jtyw1/zG946ZVbqJMsXH/TMILTQJ9Ar06OrWpCs="}]},"_npmUser":{"name":"charlzyx","email":"charlzyx@qq.com"},"directories":{},"maintainers":[{"name":"charlzyx","email":"charlzyx@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kakashi_1.0.0_1707025360928_0.26587764544709125"},"_hasShrinkwrap":false},"1.0.1":{"name":"@achaogpt/kakashi","version":"1.0.1","description":"template batch copy","main":"index.js","types":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/charlzyx/kakashi.git"},"license":"MIT","scripts":{"build":"npx tsc "},"keywords":[],"author":"","dependencies":{"mustache":"^4.2.0"},"devDependencies":{"@types/mustache":"^4.2.5","@types/node":"^20.11.16","father":"^4.4.0"},"gitHead":"3d0e40d5266635bdd6a2e13cb473e3ca5163da39","bugs":{"url":"https://github.com/charlzyx/kakashi/issues"},"homepage":"https://github.com/charlzyx/kakashi#readme","_id":"@achaogpt/kakashi@1.0.1","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-uD0oOwLWsEdSirO1M6i4sGzQGvSP7KSGuYczatrHFJ8VL+B7Bspyjh0jJUih5YCQq97/Al5V/nTQV8i7BCnxNQ==","shasum":"628a08808b82bc48c22368b16d4f26b7cd4dd3ef","tarball":"https://registry.npmjs.org/@achaogpt/kakashi/-/kakashi-1.0.1.tgz","fileCount":6,"unpackedSize":15481,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLHYuUtNbLoiY4vbGrbu55CHvP42pJOnxNtsacZbEc7QIhAIIRj+pAl8quPBPUBI6/lQHGcmnbJU3XqfSZkJR64gMn"}]},"_npmUser":{"name":"charlzyx","email":"charlzyx@qq.com"},"directories":{},"maintainers":[{"name":"charlzyx","email":"charlzyx@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kakashi_1.0.1_1707027075741_0.07078695564750226"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-04T05:42:40.870Z","1.0.0":"2024-02-04T05:42:41.096Z","modified":"2024-02-04T06:11:16.073Z","1.0.1":"2024-02-04T06:11:15.896Z"},"maintainers":[{"name":"charlzyx","email":"charlzyx@qq.com"}],"description":"template batch copy","homepage":"https://github.com/charlzyx/kakashi#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/charlzyx/kakashi.git"},"bugs":{"url":"https://github.com/charlzyx/kakashi/issues"},"license":"MIT","readme":"# Kakashi 卡卡西\n\n> 你知道我要说什么\n\n```bash\nbun i @achaogpt/kakashi\n```\n\n根据约定, 使用 mustache 渲染指定文件夹里的模版文件到输出目录\n\n## 约定\n\n- 模版根目录, 下级子目录约定\n- > tpls 要复制的文件模板, mustache 结尾的会使用 mustache 引擎渲染\n- > partials 模版片段, 常见于递归渲染使用\n\n## options\n\n```tsx\ntype CopyOptions {\n  /**\n   * 模版根目录, 约定\n   * > tpls 要复制的文件模板, mustache 结尾的会使用 mustache 引擎渲染\n   * > partials 模版片段, 常见于递归渲染使用\n   */\n  tplRoot: string;\n  /**\n   * 覆写模板目录, 结构与模版根目录要求一致\n   * 要覆盖的模板根目录, 执行同名文件覆盖\n   * 比如模版目录: a/b.md, a/c.js -> 覆盖目录 a/c.js\n   * -> 最终输出 a/b.md, a/c.js(覆盖目录)\n   */\n  overRoot?: string;\n  /** 输出目录, 模版+覆写目录会被按照原始结构输出到目标目录 */\n  outRoot: string;\n  /** 动态数据, 渲染引擎需要的 */\n  data?: any;\n  /** 就算文件存在也要重写进行覆盖的规则 */\n  overwrite?: MatchRule;\n  /**\n   * mustache 模版tags\n   * default [\"{{\", \"}}\"]\n   **/\n  tags?: [string, string];\n}\n\nexport type MatchRule =\n  | RegExp\n  | RegExp[]\n  | string\n  | string[]\n  | ((s: string) => boolean);\n\n```\n\n## Usage\n\n```tsx\nimport path from \"path\";\nimport { copy } from \"../index\";\n\ncopy({\n  tplRoot: path.resolve(__dirname, \"./templates\"),\n  data: {\n    routeImports: [\n      {\n        import: \"import Skeleton from '@ant-design/pro-skeleton';\",\n      },\n      {\n        import: \"import React from 'react';\",\n      },\n      {\n        import: \"const Home = React.lazy(() => import('../pages/home'));\",\n      },\n      {\n        import: \"const Login = React.lazy(() => import('../pages/login'));\",\n      },\n      {\n        import: \"const Index = React.lazy(() => import('../pages/index'));\",\n      },\n      {\n        import: \"const Admin = React.lazy(() => import('../pages/admin'));\",\n      },\n      {\n        import:\n          \"const AdminDashboard = React.lazy(() => import('../pages/admin/dashboard'));\",\n      },\n    ],\n    rootRoute: [\n      {\n        element: \"Home\",\n        name: \"Home\",\n        path: \"/home\",\n        component: \"../pages/home\",\n        routes: null,\n      },\n      {\n        element: \"Login\",\n        name: \"Login\",\n        path: \"/login\",\n        component: \"../pages/login\",\n        routes: null,\n      },\n      {\n        element: \"Index\",\n        name: \"Index\",\n        path: \"/index\",\n        component: \"../pages/index\",\n        routes: null,\n      },\n      {\n        element: \"Admin\",\n        name: \"Admin\",\n        path: \"/admin\",\n        component: \"../pages/admin\",\n        routes: [\n          {\n            element: \"AdminDashboard\",\n            name: \"Dashboard\",\n            path: \"dashboard\",\n            component: \"../pages/admin/dashboard\",\n            routes: null,\n          },\n        ],\n      },\n    ],\n  },\n  outRoot: path.resolve(__dirname, \"./output\"),\n  tags: [\"[[\", \"]]\"],\n});\n```\n\n## Examples\n\n```bash\nexample\n├── index.ts\n├── output\n│   └── app\n│       ├── README.md\n│       ├── index.tsx\n│       ├── layout.tsx\n│       ├── request.tsx\n│       └── routes.tsx\n├── overwrite\n│   ├── partials\n│   │   └── RecurseLazyRouters.mustache\n│   └── tpls\n│       └── app\n│           ├── README.md\n│           └── request.tsx.mustache\n└── templates\n    ├── partials\n    │   ├── README.md\n    │   ├── RecurseLazyRouters.mustache\n    │   └── RecurseRoutes.mustache\n    └── tpls\n        └── app\n            ├── README.md\n            ├── index.tsx.mustache\n            ├── layout.tsx.mustache\n            ├── request.tsx.mustache\n            └── routes.tsx.mustache\n```\n","readmeFilename":"README.md"}