{"_id":"caz","_rev":"43-503d04b03f4666f1e3c65b6b64521e9e","name":"caz","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.0":{"name":"caz","version":"0.0.0","description":"Awesome node module","keywords":["placeholder","zce"],"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"_id":"caz@0.0.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-fGIJ56wP+JFt24r6clXDVfDz8AiFjU4yYyfTfHer9/ULDqtK0obOY8V8bPu26Q4FIgGN0Qw49o2d8ofhbExICg==","shasum":"ef14af30bf23bd020fa4c0b69fad2322b8738368","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0.tgz","fileCount":2,"unpackedSize":362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAvIDCRA9TVsSAnZWagAAg6UQAI53ODRcs0HBkBpmcNIl\nMeTYdkEkfQTrYKx3jDPJ6VB0yxPj8/1zNXXzYw3DMlXih85SHrHA5hXkwMJ+\nSQlg1l90OEQYdADTDD5IT0lrYYHkb6y6NaEvpg+/gNkalKSH629DVlnczJLE\nB0muauWetoU4FB6fSOkxWqTTzcLVi0D+M792WRmn930/3G6DDRRjfU8e5Lwf\nDyxoSCQTRaIfCvw/GNTalDbU39aLZhWHPAvYHmfEeOGjY1hM7Jgd4UTFeMB/\nY1FXQayixeNBWKEhXqUdnLh23PrXFyH4AUzcLp0CzS4eFC1II3y9V+2sy3gJ\nbQau0yopVyDysDdFtKqgDUVxGe33J/fcpgslTVA0e/5GVUTfyZRIHrAa/wRp\nzavYOcvpTU762+wCDvWJqO89VTFIjo0YT9q0dX0nLuzZCdzzHKWdoz2tW5uA\nK8USJ3wkFdUni3FfQkoSkU4wZpr+WheAc/iNcSN6jP2U64jn8+1pj7PjQUdf\nF2gseZq6O8LaaoE0Vnaux6Xp+vWOKj2yCjj2Tlf8eyLTEwCT4uPmhLDQ/kEY\nHIDRmqBOJcbFHDWp+qbv8q2oOvh2w41Mk55WGWrIgFBJOWjimuhnO5ZB/AkG\nMaqrchR4MFlakRNcRWtYGp4E7v8QW2fa3ReJV9/VXSymCZFofiXn+47bcJjt\nULUB\r\n=6Wb6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbxS920mpCZxlgCZoWLg9PCTmOckrzJlkAXHI87f5qcAiEAjnheKCZtNbZRk1nbpsLccFzh35WW1kfVHLsbz5dDRnc="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0_1594028546987_0.43017826055025554"},"_hasShrinkwrap":false},"0.0.0-alpha.1":{"name":"caz","version":"0.0.0-alpha.1","description":"A scaffolding tool for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz"},"scripts":{"clean":"rimraf lib","lint":"eslint src","compile":"tsc","build":"run-s clean lint compile","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"src/**/*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts"},"jest":{"preset":"ts-jest","testEnvironment":"node"},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","conf":"^7.1.1","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","got":"^11.5.1","ini":"^1.3.5","lodash":"^4.17.19","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.25","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.3","ts-node":"^8.10.2","typescript":"^3.9.7"},"engines":{"node":">=10.12"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"docs/caz.png\" alt=\"caz\"></a>\n  <p align=\"center\">A sample template-based Scaffolding tools for my personal productivity</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI?label=actions\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a sample template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAC / cac\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Lightning & High efficiency\n- Less dependencies\n- Configurable\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-c, --cache`: Show all cached templates\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is a better decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](docs/flow.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [conf](https://github.com/sindresorhus/conf) - Simple config handling for your app or module\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [got](https://github.com/sindresorhus/got) - Human-friendly and powerful HTTP request library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] remove got\n- [ ] config command\n- [ ] cache command\n- [ ] colorful console output\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information.\n\n&copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"7ac0163432da7e367c7df88fd125012c2033ea63","_id":"caz@0.0.0-alpha.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-SSkavYp0kJUzXLasMuut1cgKGXfYGcs6+o3CuhBcI9UXsM8P+N9gnK4KPVk3W31pCXRhnYesISPROT2+hz0x4w==","shasum":"03e151af26e6fedac36b33f8dbf7820e6f662c73","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.1.tgz","fileCount":51,"unpackedSize":51744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHHBWCRA9TVsSAnZWagAAfmwP/2elpw/0tsZUJqQ/MD46\nbZWj9gRdQWHpAigqAHRUfINAmRtQp8jH7uIU/ZbrAXMWiMvqz7hd8mWcpY5X\nzh1CFxGMCEIxKuahM9WQgp1JgxTkuuYYlW9OKUnCv652yLKIw/4zDo5+QYSJ\ndZG1JVL6hwJg3eN3vxewoCRgbUYoC07OEUwjs3QN8JuQLBex2BZ9H8bcUU25\nkObr0Re2csrcbTwMH9M1icqO6uqFNzz6JqniXIcs1Ey4OlWUdJdxqm5hAb7b\n8pEgMFR/TQpiH2AUvxQxJW4kRc7MSBLVP7h6AE6MjOcZRWFRz21hhNbLNJQb\nj9Bf9nfTaxbidn1z9p8R1GoOBVWp5IIL//I5dBFyzXMGo0Nong+3iXw5cvIs\nId3Nd+vvRE8Jr/D2og/VaOuwEtLAakgRO9HAFqTppkq8PYh3PQlGwFd8akfP\nAskAKR9fEJkSQJPuofvHAGUgCoViLK5Txvltx0jJvk+dTi3WJ/yDF7LitiXH\n+bKLzTzvZcc+R2WbuAGfw2Pp7Cyc9fxcg49qP9CA3wubBuB1n7DC2mrJcVWx\nDLLDvuRTT/jvTiWsqw+7vFYoNK8L74f6p4X0EGTfrE+IZDx0pYbIvqtSR9Gv\n/hzrifSrTekvqfU4Bcz2inT2BocE0lSm86DSIkrh9anYSuxc3rkytuw9v6z/\nqTwe\r\n=kZeH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6X4VT/mhqJ1UHzFQrE4UbuQ/88AchJxb6GELoaiK7agIhAOAbS8ce3/Sx8iUUqz+ynif1US+IVZ3AkICnXK9P5g+1"}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.1_1595699286012_0.966656913869161"},"_hasShrinkwrap":false},"0.0.0-alpha.2":{"name":"caz","version":"0.0.0-alpha.2","description":"A scaffolding tool for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","build":"run-s clean lint compile","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node"},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","conf":"^7.1.1","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.25","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.3","ts-node":"^8.10.2","typescript":"^3.9.7"},"engines":{"node":">=10.12"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"docs/caz.png\" alt=\"caz\"></a>\n  <p align=\"center\">A sample template-based Scaffolding tools for my personal productivity</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI?label=actions\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a sample template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAC / cac\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Lightning & High efficiency\n- Less dependencies\n- Configurable\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-c, --cache`: Show all cached templates\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is a better decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](docs/flow.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [conf](https://github.com/sindresorhus/conf) - Simple config handling for your app or module\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [got](https://github.com/sindresorhus/got) - Human-friendly and powerful HTTP request library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] remove got\n- [ ] config command\n- [ ] cache command\n- [ ] console output (colorful & verbose)\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"36dd46f79f2f414317c9aa10faa6d9ea4a42b951","_id":"caz@0.0.0-alpha.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-KRK/b9nizTtDKyUrLKq6v457ll9sv2Mt421uaQnJBmMs4IjNrGxLWCKdJHRqmTm1iYDqN5ZFQ+dKrrmzl6NFlQ==","shasum":"deacd2f260bcf43b0b6fe9f69a3151619c297fdc","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.2.tgz","fileCount":51,"unpackedSize":51055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHRj+CRA9TVsSAnZWagAAli0P/Alr5btP1N+VNGetrhC4\n+oLLvnZXQb0w61J7jhw9/PNx5GwqBUoNUPKp7OSsxOjrvLYwiiWczLwK6g57\naMG+IDZ8RASjv4NgMcu2nk3ylXbZex4LyNFkV/eG6D2/7dcERrzgxYtPRJyj\n+LN7v2EXOG9RyUihX3Z5rEe2iAdCAL0Lylrzn978HOIGNuK8O48zBuaqKvuR\nhv6vyQm54IL+ftmseRprMtolThSrKX5JcZHExzPS+rqz1vdFCZrZmk1MkvLf\nuQVJLDNu/sfdTg7j9Q0M20aR4c5PyUwACOWHBNjl3kULUk/dmP3SIajtK7qt\nXLQzI7AfM7HttnyUzX+8UUI4GvOJ4yz/h0948rUuvZC3Jlz9LA6yfhD70KdR\nAXe1zxT+NfCqUR3ENvLyevFgS+KpY7xWXwHK+5DfpPQ7agpCZMpTZ5h7rayC\nOjJ7juCb13vbs1aQgUA5gZzRTHwDJZxG4xZK/A1paQi5ihvgWU+yTiPVwhOi\ntcfw/xaZ0U+gc5W+D3LmZZDPah7/le7ovpHeiqqElw3bbHQdxMKwoHgELIl9\ncAPibjAoyR97ZLVeBYuEMU6QU2TxRTFh29b25+IpBpbTf45V1+wXTH1PEYiW\nML28mPOpz7xq5BrG5GffD/S9UebdpyqEd8TyTRcPB+5BPMbsf63JvSEvUVKr\nSrP2\r\n=sAwy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDAxqqwGL8mPyzhHMB62B7ey4U5i+iEGgcpsiq0cZikkAiEAyjXW6G2XMSQgsGT7g0JuTGD/7lalXMPbQlsi53DJPuw="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.2_1595742462111_0.269940968411152"},"_hasShrinkwrap":false},"0.0.0-alpha.3":{"name":"caz","version":"0.0.0-alpha.3","description":"A scaffolding tool for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","build":"run-s clean lint compile","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node"},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.25","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.3","ts-node":"^8.10.2","typescript":"^3.9.7"},"engines":{"node":">=10.12"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"caz\"></a>\n  <p align=\"center\">A sample template-based Scaffolding tools for my personal productivity</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI?label=actions\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a sample template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAC / cac\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Lightning & High efficiency\n- Less dependencies\n- Configurable\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-c, --cache`: Show all cached templates\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is a better decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] config command\n- [ ] cache command\n- [ ] console output (colorful & verbose)\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"b37080a0cb0fdc5f752470fb6bbe00b663feb600","_id":"caz@0.0.0-alpha.3","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8OwlHLPFAj6idXzm7qj06brojWhtTUcvS87azNX/AGC/7LMXD3iF6D9MVYwfdngJsZIhAGNXUs2fGjmIvCLCng==","shasum":"a8f4829be8289268b51a700cb287585f04d7b66c","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.3.tgz","fileCount":51,"unpackedSize":51338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHW7FCRA9TVsSAnZWagAAyP0P/jXFVyh9GadqmQdIOCXt\nA48AlRSMMCvwWjofLiqPjDHh0gfkJMvpH4Vwr1Mbz68lT5kTAi3HGF2v1U8S\nwjNbcHT5EfXjAo+3g08a/P/0Iu8Q3JTOcKqMTXeFnHwCYK9qub2jzHCXOTwz\n+DcHqaWuTHG9x90E/C0JpkPKgTZgzMLJmpKa0moYcww740xS0bx3HCPx2Q/V\nHhK5iD26+pyO6meu69RICM2Zrp73BHJGZnZd1CGmExuydp9IPZnqlZ1QoMMB\n7YyWeb9sgzwhPG6uBOVesoMBfrQRaes1W29J0s8G/I8a5GDhxY8pIc2Uiqto\nfxCVbRFBvbW98rani+G8PHC+hrnw+T5hxSRKuqUS6z0ZVQ86hCwS1YB2LK7k\nDXdEKONrNIdvDgoy7lU3jsedqQIRllGf4sSOixbsFthQlPi0IVlV3E7kS+Br\nywOHqanc01hesnmzUUkG9qkJA/em7Ho55206Sz/fKGZKJQ/HVunnWKupZY/+\n9TUcxc9fvHqNJXyTfLRY1gTnPluEy0ZPdCJM2aOcx3DPf8bhNVTDNFROiZVt\nCC57nSjTXM4tSzC44i0m8oBixcwr/Ajay9eDxPYl/qTjbK2jl85cDqQ3c9iM\nTSQ7VyhTkU0Txy49wtgjbE9gkpQIXQzre2gtoi6gLydNjeBsi8ZQ4kubMTt6\nh9p0\r\n=mXM1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYcuz/DceZ/ISMWhPAE15M14JSfCM+QrnFqfeUR5Jp7AiEAkQWhXrGt+3ExiS+OZxkHxF3lbQ4gtcd3v5kItnjrKdo="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.3_1595764421110_0.14776222667000938"},"_hasShrinkwrap":false},"0.0.0-alpha.4":{"name":"caz","version":"0.0.0-alpha.4","description":"A scaffolding tool for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","build":"run-s clean lint compile","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node"},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.25","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.3","typescript":"^3.9.7"},"engines":{"node":">=10.12"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"caz\"></a>\n  <p align=\"center\">A sample template-based Scaffolding tools for my personal productivity</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI?label=actions\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a sample template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Lightning & High efficiency\n- Less dependencies\n- Configurable\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-c, --cache`: Show all cached templates\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] list command for local cache\n- [ ] config command\n- [ ] cache command\n- [ ] console output (colorful & verbose)\n- [ ] basic official templates\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"d4d47b6e9eabd2062324be457ab7192333d3e52f","_id":"caz@0.0.0-alpha.4","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-gJhC1jAzUcSNvMCmeZLXpVQ844wCW3Y5W9mAJoJIdvsuhOrg3mPZNOZQ04GfvtFW+iKBupaRN6ClHCdwOcW86g==","shasum":"a559eaa43e9d8198023023b902175b16c0620113","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.4.tgz","fileCount":52,"unpackedSize":53456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHZoXCRA9TVsSAnZWagAAiPMQAJGDaSqXVFbWKcwUnCLE\nQuZfrLktrPuQ6az/YwF++TqDqPPZo5higySxsagbHJKf4on4Fjyr7UoEFuDS\nK4TPb/MaEroVd6WTUbxIB0z8F4+ZOAtAhqgICCGA8XEz1yWIwPUCxbDEXr2B\nJEG/bsxHRpGZ5DYe3kT4+g4C56Y5x8JfhEWzOT0SdN1rjcMcCVTdpUuSUbms\nQY55rqV2up+gVH78th1vv4CEBkorltaZPaN3DKp/x5mnEyCBvoKuvgMixnTx\nHlaGmn7UZ8G7s0qSbuPmyvH+LG8b+RgklOHoGhtSyolj+mtLvP7jYOHGq45q\nzW/wrxn+etf/c3OhnTeoAkWhaPREWtzrKNF3X0VpQ+lrBvIClEF3oIoMbk9E\nCCknIgUgKZO+ljSTLJlugFQ33mI3f+AI0oF3GyVFGXb44OU9KHTgNYf1nyNq\nexiA0FR2ddn5KLR/trCIsxEfqJnpi+Z8Mal+DqTpvGCgHjOEPMp8FT/Tdx26\nZIcND+V2mbd6mT5jcP4/Vs99r9D+ReO6SGlPIhVIMx8PQ2M5Z50Qr+kEvWpl\nYMoFLhCUwcOjJXbRAjARy5g+J4lDIx52OLXP1tJ2244gArdempwHjKcnSFlQ\nAhxKzN9nYLgDyrBLjSIqW6esgVz+2ZCm4o6Z3S76rQzRHqXxkwK+NAybyEU2\n4eqe\r\n=KiWh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDblH5sRcAm+y0aH7VKxqWuqGgD7kBLtZi7gpoGKhHLXgIhAKMz8WvoWwflHNm77bKwYMmRpAfwvekMorI2n14i3Bed"}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.4_1595775511508_0.4586116130396831"},"_hasShrinkwrap":false},"0.0.0-alpha.5":{"name":"caz","version":"0.0.0-alpha.5","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","build":"run-s clean lint compile","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node"},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.25","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.3","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (optional)\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-c, --cache`: Show all cached templates\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - Templates template\r\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\r\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\r\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\r\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\r\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  const template = 'nm'\r\n  const project = 'my-project'\r\n  const options = {\r\n    force: false,\r\n    offline: false\r\n  }\r\n\r\n  await caz(template, project, options)\r\n\r\n  // Scaffolding...\r\n})()\r\n```\r\n\r\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] test spec\r\n- [ ] list command for local cache\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] console output (colorful & verbose)\r\n- [ ] basic official templates\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"a41d195f3992ec4c941e5a8cd96fb20a43fd029a","_id":"caz@0.0.0-alpha.5","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-w9E0rfeNJwTu10G6KP25dFkqaX+Zh8cwvXZKvtKZ69PwXI97AuOLHYenyXwQL/7R91qgZPPDIIQLJQiKHX4PTA==","shasum":"429266edfaddf09afb48fe2c0d50751f6da0648e","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.5.tgz","fileCount":52,"unpackedSize":54157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHwtvCRA9TVsSAnZWagAAJX0P/AruDuBxkH9ISND64A0V\n7KafmYgS0gXVH6fPSK9QZVj3pPHFrdF8G3joVuddTf4xT+seCkiOi+Z17XPr\nViqM4C/Bwnu+FCx/cy1KOL+ICi9OTz2Y/M+/6agIhFUTRU6HVbi1sPOo3Vq3\nLPaEehuQj95j8VksR9oVtm3pUYl6zYk4Gk9bXniDi5weNkN2/DuZYBHC37F9\nexMfCths0DwcgJ5IxR4lsT/8VuU2P9VHBjS0yMlGHC0k1OALX+b78B9xNVpF\nTBKZu7W93tgyGG7uuraTI+d3NPjkN99IvedkWrwD1APy8WgGnBsyMSZHPWfJ\n6LuHc+Vz9xfLdbtHOqmKz1XWPXfNilDRIZad/x2eyf7byFuyrGvX6oub5HPO\n4SvsVf3sk5U4seg506gJDt06pU6ycjYp6z8d0X3ceNrgFWOCmUFMkbnJT766\nq0HsEb+9eIGf3IGvUlm9TrHAYnILhwCFc8kusnpGtdODABFXOLh3u2CPLM9G\naMKqmy8c49+Bv384ZysQVCpfkhGZGbTZ9skbecxxdNpUm4eTbOuP18b1ZDRG\nq8QRxA7JH8TBm90KtHd9McUyzDqbejXgy/iuYIiDFQ82+Thz8yyT8/BBpx7R\nehW2mT8qHzrk3IamHSbN/nCbh7AETRU8nZQ8Ll9mt6MduqDGFgkhaY9XS6Rw\nlJli\r\n=VGiv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC57tU6SK73dicd7Tmqg9sk1VI08Ux3RzmPpx1xhjYOfgIgeY6SiD31Hi6r6+hcKzfWBLGn5i0ocwVk1WxfUSI131Q="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.5_1595870063259_0.3648535980326699"},"_hasShrinkwrap":false},"0.0.0-alpha.6":{"name":"caz","version":"0.0.0-alpha.6","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (optional)\r\n\r\n> `yarn` required for running tests.\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-c, --cache`: Show all cached templates\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - Templates template\r\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\r\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\r\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\r\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\r\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  const template = 'nm'\r\n  const project = 'my-project'\r\n  const options = {\r\n    force: false,\r\n    offline: false\r\n  }\r\n\r\n  await caz(template, project, options)\r\n\r\n  // Scaffolding...\r\n})()\r\n```\r\n\r\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] test spec\r\n- [ ] list command for local cache\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] console output (colorful & verbose)\r\n- [ ] basic official templates\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"39d8631d5c7d5f578bd301fe27a03224538f39ef","_id":"caz@0.0.0-alpha.6","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-422tLNoHSJRJ68sNTNtXIRWNV7VTa0nbTPRFfNXIjDbmZO3XPP6Oz+p0bn1mfSAy8M11x/RiRxOKkOG5Hj/2TQ==","shasum":"3e4b6de160b15d756576813adbf4f26f75a1cc8e","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.6.tgz","fileCount":51,"unpackedSize":65055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIapDCRA9TVsSAnZWagAAUuAP/0wsbLfhqHtz/0alj35g\nj2vtxrFcIqKTDm2yLjPgLCATQ5YcECepjRaCnmDWhlbY0ibDWC55Hc25IRcT\nbRYDXZYN6w0HMgbCpJeuoRrd6NKw226nixjFfF8K67+1PgEieHCWIuHKzS7Y\nVqGeOQY5lIqchMUq/E7a0WomCCojkq5wH3Pe14Gx7tx6bJLYALfyFPxosz1P\nZxk5MIcF45LNqnU5EIF0zhnmg8/1tPcXpX7Qwjq7s71eYEUdrpUExZC2QKP2\nG7batRedGUqYIrzBZQyGh1aLM+Cbu+uH+Zl0lBG8F5YB1fh/7xt4/HtMNC8n\nZgfLGpaTlrqEuQmikOjpRlPgFptNiD9pjfVIpXBlUN6Tw+1TiYfoEvBEzJYg\nEpBVINh1qF4judixKze+Eh8tV1EaXDazKDjAmKtaMxLAQb7a4/XiUx6Bt/Ou\nppWHJ/vee0rUaMAKGhapZTPjmn9JBCUf/qGdYS6tlw/M8a1wohTYxADsilCs\nI5+W2YL8t5QX7MEfmR1VWP1wkEIAV3bRCOLqxg0+ScIg2TknS8143c2VIcc2\n+WDnNkJLYRMSD0FqHEnRkqxwmm/ASE8Bsa62wJZs8w280Cy6Ggzfwg72pWWL\n/TcsRFHyVvqYZrwtaR5bKgQ8Bh/VEjVYYYErmAGsEq6JQz33hTiMII4ImlEX\nRcPb\r\n=sRcd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHap/AaJWl/Q4qSQ1BuJuaVXDqSILaOK648/jDoe1SZQAiEA3de0sYsHNI5zBSqgC8uDJPQXP/EtFwixOMEIhfpu4p4="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.6_1596041795296_0.6105365823393551"},"_hasShrinkwrap":false},"0.0.0-alpha.7":{"name":"caz","version":"0.0.0-alpha.7","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (optional)\r\n\r\n> `yarn` required for running tests.\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-c|--cache] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-c, --cache`: Show all cached templates\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - Templates template\r\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\r\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\r\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\r\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\r\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  const template = 'nm'\r\n  const project = 'my-project'\r\n  const options = {\r\n    force: false,\r\n    offline: false\r\n  }\r\n\r\n  await caz(template, project, options)\r\n\r\n  // Scaffolding...\r\n})()\r\n```\r\n\r\n_For more examples, please refer to the [examples/usage.ts](examples/usage.ts)._\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] test spec\r\n- [ ] all lifecycle hooks\r\n- [ ] list command for local cache\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] console output (colorful & verbose)\r\n- [ ] basic official templates\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"17170e382078f245338f8ea65d044f33b6feaca4","_id":"caz@0.0.0-alpha.7","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cRSuqCD+F3Kanh79zq61HnwzNReUNx7+8f4bfeKE3KvQlMkhfIF984gD224wze+Ysx6TrDUfeB8J0fEzMnY5eg==","shasum":"96afaf4c5194fd4e35dccdf072b78171ab503a33","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.7.tgz","fileCount":51,"unpackedSize":65279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIw1CCRA9TVsSAnZWagAAUygP/3qlES1mx+RDie5TbgKk\n2+9L7SL1oWivil6qAGAzBKtIgtb28vSPT4i2KoRyAPN/6Dv2yidyhW1MFk/E\ndU2d1bl4WVkhtVNAGCaTA36LdXSGmpd925oFsbtNYh99KOYt6j/GAdzSSFuq\n04O1F89Iel82/RZAr0DO2CO6tcS5TanFJ88xafQ2aDwr5GHAhb9YIS4NbCto\nJ5+cb/WkjxZPzbMbDnvJLOtPjetEILj9DTFx7mFvh7M2exFkpVDjtxXxGTAh\nDGVSklXdPVmER/SsuzkMN8JQRCJOkd14T+PcZgxP2CQc6BO+Ta0Ie5fpkAmM\nqjCaGguzrZdHkhrWziFAkuQjXOPuhaKAPvvPtjvRxnW+Y1Hh5sykstKKGwb4\n/ZbI6K17yPoMztVm/7qJCnTTCbzDHeJXC/ph80LNZ85B5hHa1xKZQSgrpMrn\n1Z40fLdWuG7QM2NXzNsP3mekpAB7DevXTlpWFR1W3/Q0MIHWKK+AiF/bCYAC\nWQVrf6ChK7guzUZpDzuZzmmYlDcLy9ndPRjXHiiaLPtPZwqFMvZoF/iOo14f\np74QNSM0elfv+poj8eSfj9nOzmkp3IGnZYh3oamoCPHmbs8k/r3OClQDv74+\nP/FRdz990+ITVS0l8JkNlZ/YsymPhjIXnULjfwiHqsOBIdzGqBaFfLEsWInD\nnG8V\r\n=QOI8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCha9VD5n/97iGibfZwE0Alq4CjHOvOVGIYU4ef7hfElAIgeNhovULfS43Gs8uNdNOLYBQLYcPxOFUPZBfoWNkj7y4="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.7_1596132673529_0.6745313107962954"},"_hasShrinkwrap":false},"0.0.0-alpha.8":{"name":"caz","version":"0.0.0-alpha.8","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Light-weight\n- High efficiency\n- Less dependencies\n- Configurable\n- Extensible\n- Template-based\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n> `yarn` required for running tests.\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [example/usage.ts](example/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n#### Main Workflow\n\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\n\nThe following middleware will be executed sequentially.\n\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\n3. [load](src/init/load.ts) - Load template config by require.\n4. [setup](src/init/setup.ts) - Apply template setup hook.\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\n7. [rename](src/init/rename.ts) - Rename file if necessary.\n8. [render](src/init/render.ts) - Render file if template.\n9. [emit](src/init/emit.ts) - Emit files to destination.\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\n12. [complete](src/init/complete.ts) - Apply template complete hook.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] all lifecycle hooks\n- [ ] config command\n- [ ] cache command\n- [ ] console output (colorful & verbose)\n- [ ] basic official templates\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"1658a2d12b74dab7c61af8e2d947f6811be28cac","_id":"caz@0.0.0-alpha.8","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-eN7VANk746v/cjiNvaHZMmwPWxnh2f5l7P9QGY8SfVaQs/9b1dZfkkw07XslEYy3M7zikwhPAAVxDGEE8prd2Q==","shasum":"8f871ae187c6e4508d6f630e4ea8cddd2d73dfe6","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.8.tgz","fileCount":51,"unpackedSize":64376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI9LuCRA9TVsSAnZWagAAS78QAJ0r/dMC0LQjDKlzsvRb\nwvjeVDbssX/X2xEa5s6Ez8oJAflyEqNC9x1I+tNjyMea08LPr2Hem3jRfPGy\n+UyC0RV+llZXYW4ewDQz1xRtrCT4TmclwSrmA6KrMO4hqNzUVqZlQTNepDjk\nfCbvAaZ7/MCCPo3b9DZ1/aHvKMdLTdlbE+ti10LpthujCde09mLYqYBG5Bl9\nGiYOaTvmMKoWKpqToBil/XXS5PLGcgDtPMp0lIu5Oc7W8HuXXeTWnOGGv+4X\njZukBScgDpSaM8MAOe/6XjoqpGQv6DyZ75dMxcoI5H7TPXK4vVGxBRFQxZ8Y\nCxpoDquWalq9l/eeykuZAlIeWBmg0zdDgHFko3baoB+2aruZ8ob/Qc7NeBsB\nu1yxvbOPgkcPwDM4bNu/squWrrAmXwxUUVJ2P2CNSuL0kDxO5KawQdMAGIkm\nD+3oFVyulIAZgchhdSZ5UUV+XV8RKdxVlxVWgeWwWaeebhhVK2AWz5R2AVuz\n8RBMwUHjtRMD2iq4fcnffLXQYylYNiw6B/rf47cBz5VaWzqRy4oYVkYBs5YX\nyC+0g8ipUuJGDet4R+oBMCxq8NUbKH7Q8ARJg7apNSHVAt6eIHrNFkpqhBLX\nOtkF02vqfnc4jwF8iPc70YMAuqusjysHz3peKrg+6BGlzPTVPYQNphnB+YEV\nDUbY\r\n=P2pS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuE3qES6SmD6HM+xgvpgW3uf6MehdZw16l7xCfM4mEzAiEAicqRexhKy4m3QzUgDQ/D/ioZtJbVwSTCD6LwpajkdYY="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.8_1596183278177_0.18665638430791565"},"_hasShrinkwrap":false},"0.0.0-alpha.9":{"name":"caz","version":"0.0.0-alpha.9","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.7","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.1.0","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\n\n- pronounced: [kæts] 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Light-weight\n- High efficiency\n- Less dependencies\n- Configurable\n- Extensible\n- Template-based\n- TypeScript\n- Use modern API\n- Easy to use\n- Still powerful\n\n> I'll give you specific reasons later\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n- [Common Usage](#common-usage)\n  - [GitHub Repository Templates](#github-repository-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced Usage](#advanced-usage)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Programic API](#programic-api)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\n- [Git](https://git-scm.com) (optional)\n\n> `yarn` required for running tests.\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Basic Usage\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Common Usage\n\n### GitHub Repository Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### Options:\n\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n- `-h, --help`: Display this message\n- `-v, --version`: Display version number\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - Templates template\n- [nm](https://github.com/caz-templates/nm) - Node module boilerplate\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced Usage\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = dev\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\n\n### Programic API\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\n```javascript\nimport caz from 'caz'\n\n;(async () => {\n  const template = 'nm'\n  const project = 'my-project'\n  const options = {\n    force: false,\n    offline: false\n  }\n\n  await caz(template, project, options)\n\n  // Scaffolding...\n})()\n```\n\n_For more examples, please refer to the [example/usage.ts](example/usage.ts)._\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n#### Main Workflow\n\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\n\nThe following middleware will be executed sequentially.\n\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\n3. [load](src/init/load.ts) - Load template config by require.\n4. [setup](src/init/setup.ts) - Apply template setup hook.\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\n7. [rename](src/init/rename.ts) - Rename file if necessary.\n8. [render](src/init/render.ts) - Render file if template.\n9. [emit](src/init/emit.ts) - Emit files to destination.\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\n12. [complete](src/init/complete.ts) - Apply template complete hook.\n\n### Built With\n\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] test spec\n- [ ] all lifecycle hooks\n- [ ] config command\n- [ ] cache command\n- [ ] console output (colorful & verbose)\n- [ ] basic official templates\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","gitHead":"e2d051e9469a79158f58f7eae848c3b7b539d449","_id":"caz@0.0.0-alpha.9","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-LV9d52J9syLHDY2nSzzHTAiTuroUVwuCKKGODlf4XjX/J9MpStwHZj9tdnsyuxvgf6Yq68ODn+aL1MF9WtpHjQ==","shasum":"96d8b4e1f1767733defd17cb384a69b8a48d7409","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.9.tgz","fileCount":51,"unpackedSize":64557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI+I3CRA9TVsSAnZWagAA1cYP/0o2duOKUdRKXpNU2Bwt\nr/pl2LRl8EqeZslkV44h0kJi8MnjtPjfR9jGJsiz0O1XUz7HK4mOm5MezBNC\nf9FjMxRmfqMB4jhQI028fFpyesAy1Wg5y8doXsOHpNZ9xD6d8+MXZUXs7lxr\nZ/cnGeq7zydv5sH0m2ccxuAYxN2EXJUWTqtUG0pwc8S0J7mFSCtJwhGUx0La\nMrglZJdLZpjlHor0YT2MHlkvHS3gx1+rMqSqrg3GIQtrmiMGwbLm46eLP+UE\nC8E8WyqrO+hUJaIU4VQ2z3fyO3A9sU9sBZ0NLlqePvHpW56WqDQ4WD+1ruwH\nPbKNxQhs5rrkx1IDMfUau/yTD1fmTzD6mp66IIa+67f/hOfolpAPLIdtWRS9\nm1vA+aLN8/UNOVwzSsSyAtaqJLFN438tiQh1sVGnwOCKpExOBiDIz5iXIboB\nCx++FiEORgKVMkKi0fdxrbmu6J7+KxUhi9PNLOyBoR6y2bIT2zVnNz78mucA\nYm/JdiHpOzHNt1m34tu9yx1Zxcvf1jwpGoLL0C/u3tdu5wsShalr1woDkmmy\n/EJy7lCQ8lONSQ2bIanV3Xl9s93S75847LfpNRjapa5sNaaXfeAIyWWBLKxz\nBCr9Yk8dwgclLufiWS0z5VYq2NYOxz0k8U9c67k904TPzCTNv6ogp3iSLsWn\nxMX8\r\n=qspt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF8DjT2T/A6y2boWAGMy35kiFGnQANu9wN7iVpWYQhCwAiAesPlj+pRoOLxn9mupx5ACX8q1ttexRLpYR1sF3WxvFA=="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.9_1596187191399_0.5076568915676214"},"_hasShrinkwrap":false},"0.0.0-alpha.10":{"name":"caz","version":"0.0.0-alpha.10","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.8","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.5.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.1","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- Extensible\r\n- Template-based\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.12, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (optional)\r\n\r\n> `yarn` required for running tests.\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - for creating caz templates.\r\n- [nm](https://github.com/caz-templates/nm) - for creating node modules.\r\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\r\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\r\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\r\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\nwith ESM and async/await:\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  try {\r\n    const template = 'nm'\r\n    // project path (relative cwd or full path)\r\n    const project = 'my-project'\r\n    const options = { force: false, offline: false }\r\n    // scaffolding by caz...\r\n    await caz(template, project, options)\r\n    // success created my-project by nm template\r\n  } catch (e) {\r\n    // error handling\r\n    console.error(e)\r\n  }\r\n})()\r\n```\r\n\r\nor with CommonJS and Promise:\r\n\r\n```javascript\r\nconst { default: caz } = require('caz')\r\n\r\nconst template = 'nm'\r\n// project path (relative cwd or full path)\r\nconst project = 'my-project'\r\nconst options = { force: false, offline: false }\r\n// scaffolding by caz...\r\ncaz(template, project, options)\r\n  .then(() => {\r\n    // success created my-project by nm template\r\n  })\r\n  .catch(e => {\r\n    // error handling\r\n    console.error(e)\r\n  })\r\n```\r\n\r\n<!-- _For more examples, please refer to the [example/usage.ts](example/usage.ts)._ -->\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n#### Main Workflow\r\n\r\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\r\n\r\nThe following middleware will be executed sequentially.\r\n\r\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\r\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\r\n3. [load](src/init/load.ts) - Load template config by require.\r\n4. [setup](src/init/setup.ts) - Apply template setup hook.\r\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\r\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\r\n7. [rename](src/init/rename.ts) - Rename file if necessary.\r\n8. [render](src/init/render.ts) - Render file if template.\r\n9. [emit](src/init/emit.ts) - Emit files to destination.\r\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\r\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\r\n12. [complete](src/init/complete.ts) - Apply template complete hook.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] test spec\r\n- [ ] all lifecycle hooks\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] console output (colorful & verbose)\r\n- [ ] basic official templates\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"9d73276a7929afec78d8cc650cc3ccd6a191c9ec","_id":"caz@0.0.0-alpha.10","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-I7o/OHaJh9bVtF4ua6D2Jx12fXuOYB/C4F4dnjb8tOgdYmq39uu4vCtOAmKwU+eb5yiIybdML1ZLY26oOIoX9w==","shasum":"0df36e6067ea09a960342251fef4e69e6740a1ec","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.10.tgz","fileCount":51,"unpackedSize":67247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJZ5YCRA9TVsSAnZWagAAntQP/A7Xt0o+4qy69lcIsC5y\n/1TqsuUZ37uNBbQ/Gr0pnRC6hJfUOr0kAzz0raxPULdm3i9D7JAExO0NaZY1\ngE1WznR/+rThmqoMIi/3SU9V579eDtXmVKPYS2HnInB4yhibkuogCn4jWv4x\ngI2bWheB8roYAU4MZ5r9AXyhAG71YQrGsxoWvp/hJmDFC+iNXnAjyyc2J5R0\n17lK57dHlVooFUrgO0iWdcZ+UcgFv9ARNSJy2wb92fP+Wf2A80XIl8+/MwHt\nKq81uuf5uJGmnhOWCs5srkPPxXaW5xkewVLr3oZvsw4SDYISVtlA/KxQIrj7\nmDwq/lVqMV07K9osHtKyZPAbLKhzmywxuwKrSrS0s7rms+/IrJT6zrkQl/za\nljs0P4V6Bv7YUkxL3oeB5eTdB3QN84CXH0EYw/LMr7eLirtE5cw/617zSeSz\nhSoyTfNiB0YRAlpua7R0V2dbJzLHHhT8TYFba45gAsMzWDQGK8bbOMJF1Oip\nxs7+1uNO58RfpPaOxgZkLTC67ZEIBJqa2afdtNwKeqAZ1rE55U+r0cQ+EtD2\nsPW1Ei/yS2CN287jVJYTJR6aiJzXXRibW3LM66xU0a/FOFv5e7W4J2TKPr1o\njqVw1yU3F7WqipXQQgeCLwbKtNzjfHu8L6msrvggbZQ4HoFy58Q8EpuWmMIP\nW64F\r\n=wGHL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+GzDUt1lPb/ooMWujx3u0va9+W0AoTMs488NVOk6AtAIgRRttL3jjvJouPxIC4jK+VNJ785TDS7dYb1G9XrbjM54="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.10_1596300887767_0.11323809448912692"},"_hasShrinkwrap":false},"0.0.0-alpha.11":{"name":"caz","version":"0.0.0-alpha.11","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.8","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.6.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.2","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"tag":"alpha","registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- Extensible\r\n- Template-based\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.17, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (>= 2.20)\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - for creating caz templates.\r\n- [nm](https://github.com/caz-templates/nm) - for creating node modules.\r\n- [webapp](https://github.com/caz-templates/webapp) - :construction: Modern web app\r\n- [react](https://github.com/caz-templates/react) - :construction: Modern web app by React.js\r\n- [vue](https://github.com/caz-templates/vue) - :construction: Modern web app by Vue.js\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: Static site by Jekyll\r\n- [electron](https://github.com/caz-templates/electron) - :construction: Electron app\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: Static site by [x-pages](https://github.com/zce/x-pages)\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\nwith ESM and async/await:\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  try {\r\n    const template = 'nm'\r\n    // project path (relative cwd or full path)\r\n    const project = 'my-project'\r\n    const options = { force: false, offline: false }\r\n    // scaffolding by caz...\r\n    await caz(template, project, options)\r\n    // success created my-project by nm template\r\n  } catch (e) {\r\n    // error handling\r\n    console.error(e)\r\n  }\r\n})()\r\n```\r\n\r\nor with CommonJS and Promise:\r\n\r\n```javascript\r\nconst { default: caz } = require('caz')\r\n\r\nconst template = 'nm'\r\n// project path (relative cwd or full path)\r\nconst project = 'my-project'\r\nconst options = { force: false, offline: false }\r\n// scaffolding by caz...\r\ncaz(template, project, options)\r\n  .then(() => {\r\n    // success created my-project by nm template\r\n  })\r\n  .catch(e => {\r\n    // error handling\r\n    console.error(e)\r\n  })\r\n```\r\n\r\n<!-- _For more examples, please refer to the [example/usage.ts](example/usage.ts)._ -->\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n#### Main Workflow\r\n\r\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\r\n\r\nThe following middleware will be executed sequentially.\r\n\r\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\r\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\r\n3. [load](src/init/load.ts) - Load template config by require.\r\n4. [setup](src/init/setup.ts) - Apply template setup hook.\r\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\r\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\r\n7. [rename](src/init/rename.ts) - Rename file if necessary.\r\n8. [render](src/init/render.ts) - Render file if template.\r\n9. [emit](src/init/emit.ts) - Emit files to destination.\r\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\r\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\r\n12. [complete](src/init/complete.ts) - Apply template complete hook.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] basic official templates\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] all lifecycle hooks\r\n- [ ] console output (colorful & verbose)\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"7e78cc8d854728500a8ad9a800a5365de40701f9","_id":"caz@0.0.0-alpha.11","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-HXemGfr9YsnXYYKo0+UPCFB7uDowID3JsvYg1PkWun7gLOHy8oYfbISMQHCzXEHjYr6olC1FUK6PsY8UL8WuXA==","shasum":"6633e42d1129cd9934d5254a8c3290dbe8249097","tarball":"https://registry.npmjs.org/caz/-/caz-0.0.0-alpha.11.tgz","fileCount":51,"unpackedSize":66155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJsG+CRA9TVsSAnZWagAAncAP/1mcmA5jiH4bnPyrYqXE\naGm2NCiA5BCnkhhGf/ANdGYmc7dbp5s8gDBaybz/7TltXHGpMqiZU9ZM5u4g\nc3ftPHJeyCqoTDATPCpFNe2fU6ddkVC2JBLPd0ZgJ85KiHe5mseoeCZQzNTw\ndVVBulPVR/w6qFi8VhMfoRtprkQ5AYCf1OHbCkqwR8cH6czA/vZ3XLvPFItf\n3RwaT5CwZK93J3wHSeTEPOB4dAYuPzpTaATG+jDA3YFXWQrdrzB76oy8lMqi\npy1IBoYtG8xMrq84LXRjq1TOjxzDZFB5qBHUWuI8IeoqXKFdIeFH3C11W3c0\nDPgo+7r+nbLSidhvN7TGMOcSJbobLRkACIs//51zqlxu2CR/e3Dm1/G5Au3J\n6oqUePcoGt1NXt2iMQ636LyU6zKFQ9mZq360PT18ugOJ4oP2LASAGiZV/ZLp\nzp+7ET9aluMwMqx+t9lBOjtWm44giscxHmyKadV/WsXwNuGc5aJ4jY7fWpGI\nES+ganeIlE2XvcV5WL8da0H/4TUtF1YD/k8FL+HNuMR3iT7//ath4TFGP4hK\nhPGAxm+b6ITCwpZNgy68V6mrK9oH0yLMqmyLkMQDs7LY3ohW2fhcXcUUpfn6\n69aQKqMZb84JD3vJUl0BLi1K/5qZt69Gndonkek5zR/eCNZ5bbYO0lb4Wcnk\n+tEW\r\n=VsOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEO3advLyFWD76ATHgfMqly1DfU4328XuZjKDUAi4jgAIgKuLfSKqk48ntpo3xxYHKJLQBQQXtXn6KQKi1EpUWk18="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.0.0-alpha.11_1596375485776_0.6352053067727887"},"_hasShrinkwrap":false},"0.1.0-beta.1":{"name":"caz","version":"0.1.0-beta.1","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.8","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.6.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.2","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- Extensible\r\n- Template-based\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.17, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (>= 2.20)\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - for creating [caz](https://github.com/zce/caz) templates.\r\n- [nm](https://github.com/caz-templates/nm) - for creating [node](https://nodejs.org) modules.\r\n- [react](https://github.com/caz-templates/react) - :construction: for creating modern [react](https://reactjs.org) app.\r\n- [vue](https://github.com/caz-templates/vue) - :construction: for creating modern [vue.js](https://vuejs.org) app.\r\n- [electron](https://github.com/caz-templates/electron) - :construction: for creating [electron](https://electronjs.org) app.\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: for creating [jekyll](https://jekyllrb.com/) site.\r\n- [mp](https://github.com/caz-templates/mp) - :construction: for creating [wechat mini-programs](https://developers.weixin.qq.com/miniprogram/dev/framework/).\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: for creating [x-pages](https://github.com/zce/x-pages) static site.\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\nwith ESM and async/await:\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  try {\r\n    const template = 'nm'\r\n    // project path (relative cwd or full path)\r\n    const project = 'my-project'\r\n    const options = { force: false, offline: false }\r\n    // scaffolding by caz...\r\n    await caz(template, project, options)\r\n    // success created my-project by nm template\r\n  } catch (e) {\r\n    // error handling\r\n    console.error(e)\r\n  }\r\n})()\r\n```\r\n\r\nor with CommonJS and Promise:\r\n\r\n```javascript\r\nconst { default: caz } = require('caz')\r\n\r\nconst template = 'nm'\r\n// project path (relative cwd or full path)\r\nconst project = 'my-project'\r\nconst options = { force: false, offline: false }\r\n// scaffolding by caz...\r\ncaz(template, project, options)\r\n  .then(() => {\r\n    // success created my-project by nm template\r\n  })\r\n  .catch(e => {\r\n    // error handling\r\n    console.error(e)\r\n  })\r\n```\r\n\r\n<!-- _For more examples, please refer to the [example/usage.ts](example/usage.ts)._ -->\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n#### Main Workflow\r\n\r\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\r\n\r\nThe following middleware will be executed sequentially.\r\n\r\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\r\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\r\n3. [load](src/init/load.ts) - Load template config by require.\r\n4. [setup](src/init/setup.ts) - Apply template setup hook.\r\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\r\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\r\n7. [rename](src/init/rename.ts) - Rename file if necessary.\r\n8. [render](src/init/render.ts) - Render file if template.\r\n9. [emit](src/init/emit.ts) - Emit files to destination.\r\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\r\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\r\n12. [complete](src/init/complete.ts) - Apply template complete hook.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] all lifecycle hooks\r\n- [ ] console output (colorful & verbose)\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"7cf0c364bbd4f832d5630b57632289163220739b","_id":"caz@0.1.0-beta.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xt5bxfIbeTR/VpZsWFnrLTewILoguPnF5Fr+96YL6gXoZX/FCm0MGGPMZmgQNhKye5UHC7ZbNf08PD26yGV8tg==","shasum":"3cb2ebb39e0d631d6a2f13b00a7d81fb13eb7ee3","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.0-beta.1.tgz","fileCount":5,"unpackedSize":17930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJtIuCRA9TVsSAnZWagAA5LYP/REUzTa5ljdVHbLyoWSO\n47f2spL+ZGEp1Dt47oqc/Y+jlhp8zD323AfB8zDMgkb9DP9eIWKDPDUTF2Gr\nknFZSbUjJbJpVXlYAvIJFQpmW6Wdl0Wrbr06NnsmHmJb4AY76e2xxpjGns/H\nEHju+h1skEZ1JTLzm55dK2bVzRIeUvPe5Fbvzw/cJj+qvsB2j0KVrmb9eAXi\nJaW/RkuwSQY63AD9Gu8RS0tueQdw2ZvD87mP0sbRCJ6IP7lFFLH5dS7rbE5I\nGtOl30EorR3ae7luHGyv9aZqCsD68XO4h0rX5dTycjJbADx2r4N/0pQWuqNj\nHGDUn6B942goAKUw/hf6//f7kZCh4V1YQx06nvT00Zbr7LuUz1D112ph++g4\nTVtdDckqbq8pD7G60MFXAw0zetKYq1Aj1z8Fh36lyrQL20JdexqqTusnzDm/\nPY45kUKNEhgTzvvE+D8YBPoFDgZkeX8SbKnrjp9SwwvAq1LmZ02aDihAAGmO\nXQzcIAEPe1NPXLwt0dNFYfVaQCU6k7NUVydPLx7zDMrFOE37423huTWuqUxW\nXDtswQsKfcrMATRkkWUYtYHhI674l50C5NXwTSBL49oA2XQu8eCEBJ8yBsJ8\niq0KaA5Cen6D9Tt1UyFCQ0M6v7V7INz6c+0kbC50swrs6VReHuZG/Yj8BXLO\ndZsJ\r\n=gXbH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF71/LT/C+JPRZV5Uo6ok7Hobex33rJmju5Vrevmtp2AAiB5dgqA7u4cqqnXtwBsFQY8/UcpjpJC1KAHqaa6SRXoaA=="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.0-beta.1_1596379694506_0.4265743484046596"},"_hasShrinkwrap":false},"0.1.0-beta.2":{"name":"caz","version":"0.1.0-beta.2","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.8","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.6.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.2","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"readme":"<div align=\"center\">\r\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\r\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\r\n  <p align=\"center\">\r\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"GitHub Actions Status\"></a>\r\n    <a href=\"https://travis-ci.org/zce/caz\"><img src=\"https://img.shields.io/travis/zce/caz?label=travis\" alt=\"Travis CI Status\"></a>\r\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\r\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\r\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\r\n    <br>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\r\n    <a href=\"https://npmjs.com/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\r\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\r\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\r\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\r\n  </p>\r\n</div>\r\n\r\n<br>\r\n\r\n## Introduction\r\n\r\nCAZ (**C**reate **A**pp **Z**en)\r\n\r\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npmjs.com/vue-cli) &amp; etc.\r\n\r\n- pronounced: [kæts] 📷 ✌\r\n- written: CAZ / caz\r\n\r\n_For more introduction, please refer to the [How it works](#how-it-works)._\r\n\r\n### Features\r\n\r\n- Light-weight\r\n- High efficiency\r\n- Less dependencies\r\n- Configurable\r\n- Extensible\r\n- Template-based\r\n- TypeScript\r\n- Use modern API\r\n- Easy to use\r\n- Still powerful\r\n\r\n> I'll give you specific reasons later\r\n\r\n## Table of Contents\r\n\r\n- [Introduction](#introduction)\r\n  - [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n  - [Basic Usage](#basic-usage)\r\n- [Common Usage](#common-usage)\r\n  - [GitHub Repository Templates](#github-repository-templates)\r\n  - [Local Templates](#local-templates)\r\n  - [Remote ZIP Templates](#remote-zip-templates)\r\n  - [Offline Mode](#offline-mode)\r\n  - [List Available Templates](#list-available-templates)\r\n  - [Official Templates](#official-templates)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Create Your Template](#create-your-template)\r\n  - [Configuration](#configuration)\r\n  - [Programic API](#programic-api)\r\n- [References](#references)\r\n- [Motivation](#motivation)\r\n- [About](#about)\r\n  - [How It Works](#how-it-works)\r\n  - [Built With](#built-with)\r\n- [Roadmap](#roadmap)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https://nodejs.org) (>= 10.17, 12.10 preferred)\r\n- [npm](https://www.npmjs.com) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.20)\r\n- [Git](https://git-scm.com) (>= 2.20)\r\n\r\n### Installation\r\n\r\n```shell\r\n# install it globally\r\n$ npm install -g caz\r\n\r\n# or yarn\r\n$ yarn global add caz\r\n```\r\n\r\n### Basic Usage\r\n\r\nCreate new project from a template.\r\n\r\n```shell\r\n$ caz <template> [project] [-f|--force] [-o|--offline]\r\n\r\n# caz with an official template\r\n$ caz <template> [project]\r\n\r\n# caz with a github repo\r\n$ caz <owner>/<repo> [project]\r\n```\r\n\r\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\r\n\r\n```shell\r\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\r\n```\r\n\r\n#### Options\r\n\r\n- `-f, --force`: Overwrite if the target exists\r\n- `-o, --offline`: Try to use an offline template\r\n\r\n## Common Usage\r\n\r\n### GitHub Repository Templates\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\r\n\r\n```shell\r\n$ caz nm#typescript my-project\r\n```\r\n\r\nBy running this command, CAZ will pulls the template from typescript branch of [caz-templates/nm](https://github.com/caz-templates/nm).\r\n\r\n#### Use Custom templates\r\n\r\n```shell\r\n$ caz zce/nm my-project\r\n```\r\n\r\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your GitHub repository.\r\n\r\n### Local Templates\r\n\r\nInstead of a GitHub repo, you can also use a template on your local file system.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz ~/local/template my-project\r\n```\r\n\r\nThe above command use the template from `~/local/template`.\r\n\r\n### Remote ZIP Templates\r\n\r\nInstead of a GitHub repo, you can also use a template with a zip file uri.\r\n\r\ne.g.\r\n\r\n```shell\r\n$ caz https://cdn.zce.me/boilerplate.zip my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\r\n\r\n### Offline Mode\r\n\r\n```shell\r\n$ caz nm my-project --offline\r\n```\r\n\r\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\r\n\r\n### List Available Templates\r\n\r\nShow all available templates\r\n\r\n```shell\r\n$ caz list [owner] [-j|--json] [-s|--short]\r\n```\r\n\r\n#### Options:\r\n\r\n- `-j, --json`: Output with json format\r\n- `-s, --short`: Output with short format\r\n- `-h, --help`: Display this message\r\n- `-v, --version`: Display version number\r\n\r\n### Official Templates\r\n\r\nCurrent available templates list:\r\n\r\n- [template](https://github.com/caz-templates/template) - for creating [caz](https://github.com/zce/caz) templates.\r\n- [nm](https://github.com/caz-templates/nm) - for creating [node](https://nodejs.org) modules.\r\n- [react](https://github.com/caz-templates/react) - :construction: for creating modern [react](https://reactjs.org) app.\r\n- [vue](https://github.com/caz-templates/vue) - :construction: for creating modern [vue.js](https://vuejs.org) app.\r\n- [electron](https://github.com/caz-templates/electron) - :construction: for creating [electron](https://electronjs.org) app.\r\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: for creating [jekyll](https://jekyllrb.com/) site.\r\n- [mp](https://github.com/caz-templates/mp) - :construction: for creating [wechat mini-programs](https://developers.weixin.qq.com/miniprogram/dev/framework/).\r\n- [x-pages](https://github.com/caz-templates/x-pages) - :construction: for creating [x-pages](https://github.com/zce/x-pages) static site.\r\n\r\nMaybe more: https://github.com/caz-templates\r\n\r\n> You can also run `$ caz list` to see all available official templates in real time.\r\n\r\n## Advanced Usage\r\n\r\n### Create Your Template\r\n\r\n```shell\r\n$ caz template my-template\r\n```\r\n\r\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\r\n\r\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\r\n\r\n> Maybe fork an official template is also a good decision.\r\n\r\n### Configuration\r\n\r\nCAZ will read the configuration file in `~/.cazrc`, default config:\r\n\r\n```ini\r\n; template download registry,\r\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\r\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\r\n; template offlicial organization name\r\nofficial = caz-templates\r\n; default template branch name\r\nbranch = master\r\n```\r\n\r\nThis means that you can customize the configuration by modifying the configuration file.\r\n\r\nFor example, in your `~/.cazrc`:\r\n\r\n```ini\r\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\r\nofficial = faker\r\nbranch = dev\r\n```\r\n\r\nThen run the following command:\r\n\r\n```shell\r\n$ caz nm my-project\r\n```\r\n\r\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/dev.zip`.\r\n\r\n### Programic API\r\n\r\n```shell\r\n# install it locally\r\n$ npm install caz\r\n\r\n# or yarn\r\n$ yarn add caz\r\n```\r\n\r\nwith ESM and async/await:\r\n\r\n```javascript\r\nimport caz from 'caz'\r\n\r\n;(async () => {\r\n  try {\r\n    const template = 'nm'\r\n    // project path (relative cwd or full path)\r\n    const project = 'my-project'\r\n    const options = { force: false, offline: false }\r\n    // scaffolding by caz...\r\n    await caz(template, project, options)\r\n    // success created my-project by nm template\r\n  } catch (e) {\r\n    // error handling\r\n    console.error(e)\r\n  }\r\n})()\r\n```\r\n\r\nor with CommonJS and Promise:\r\n\r\n```javascript\r\nconst { default: caz } = require('caz')\r\n\r\nconst template = 'nm'\r\n// project path (relative cwd or full path)\r\nconst project = 'my-project'\r\nconst options = { force: false, offline: false }\r\n// scaffolding by caz...\r\ncaz(template, project, options)\r\n  .then(() => {\r\n    // success created my-project by nm template\r\n  })\r\n  .catch(e => {\r\n    // error handling\r\n    console.error(e)\r\n  })\r\n```\r\n\r\n<!-- _For more examples, please refer to the [example/usage.ts](example/usage.ts)._ -->\r\n\r\n## References\r\n\r\n<!-- API Docs -->\r\n\r\n### caz(template, project?, options?)\r\n\r\nCreate new project from a template\r\n\r\n#### template\r\n\r\n- Type: `string`\r\n- Details: template name\r\n\r\n#### project\r\n\r\n- Type: `string`\r\n- Details: project name\r\n- Default: `'.'`\r\n\r\n#### options\r\n\r\n- Type: `object`\r\n- Details: options\r\n- Default: `{}`\r\n\r\n##### force\r\n\r\nType: `boolean`\r\nDetails: overwrite if the target exists\r\nDefault: `false`\r\n\r\n##### offline\r\n\r\nType: `boolean`\r\nDetails: try to use an offline template\r\nDefault: `false`\r\n\r\n## Motivation\r\n\r\n👉 🛠 ⚙\r\n\r\nJoking: I want to make wheels ;P\r\n\r\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\r\n\r\nNothing else.\r\n\r\n<!-- TODO: Concepts / Recipes / Documentation -->\r\n\r\n## About\r\n\r\n### How It Works\r\n\r\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\r\n\r\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\r\n\r\n#### Main Workflow\r\n\r\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\r\n\r\nThe following middleware will be executed sequentially.\r\n\r\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\r\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\r\n3. [load](src/init/load.ts) - Load template config by require.\r\n4. [setup](src/init/setup.ts) - Apply template setup hook.\r\n5. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\r\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\r\n7. [rename](src/init/rename.ts) - Rename file if necessary.\r\n8. [render](src/init/render.ts) - Render file if template.\r\n9. [emit](src/init/emit.ts) - Emit files to destination.\r\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\r\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\r\n12. [complete](src/init/complete.ts) - Apply template complete hook.\r\n\r\n### Built With\r\n\r\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\r\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right\r\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\r\n- [extract-zip](https://github.com/maxogden/extract-zip) - unzip a zip file into a directory using 100% javascript\r\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\r\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\r\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\r\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\r\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\r\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\r\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\r\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\r\n\r\n## Roadmap\r\n\r\nThe following are the features I want to achieve or are under development:\r\n\r\n- [ ] config command\r\n- [ ] cache command\r\n- [ ] all lifecycle hooks\r\n- [ ] console output (colorful & verbose)\r\n- [ ] more and more official templates\r\n\r\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\r\n\r\n## Contributing\r\n\r\n1. **Fork** it on GitHub!\r\n2. **Clone** the fork to your own machine.\r\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\r\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\r\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\r\n6. Submit a **Pull Request** so that we can review your changes.\r\n\r\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\r\n\r\n<!-- Acknowledgements -->\r\n","readmeFilename":"README.md","gitHead":"8731eaecb7d3aa12860e5db232c00556f15a9586","_id":"caz@0.1.0-beta.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Xzcq/+MAt6mJ3mXM0vZTWFeE/gu9uSV0/vvENy1qCHvqn+WQXrdzDm+AmZKvzzd2F9hSIO4VSH3JDumadAnOaA==","shasum":"eb6b1e3655774e023da75cda89ee40b4ee5aeb44","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.0-beta.2.tgz","fileCount":51,"unpackedSize":66414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJtVzCRA9TVsSAnZWagAAnZkP/0BRblHVEUtfhkbZuTqP\nv+62a716uz039PSmmYJ2RdGjv42H8ijvGpTubGusUK8d6VYgCwZPUr4teOfc\n1oVeB46AQhl7GblJnFtQD4T5CyVMhb1UljPwRQyppEkR3pCq2x+QQbrwZcuC\niuWgfCVzJxteoTCyFCtUhO2tKAR3t2wzOww0czhzC70lF5R7C9r1TMsVdFYG\n6LQ+p5Hanvc3y2ueVcCy1ufrHBRe9kho+zkXBIrJyoxhsXGnsp0aAAPwYyvH\nOsUK3WIuLQCm+wNUYUUMadRLvbUIWWvDM3X2L62tNFJbQ5hy3iKIz878ckUn\nlwvvDgWFDst2gHDNk0IUink0HhV+k0j83/63RwXv/VcX9+v/xfWVBMZZPwdI\noCOjTTFdTvKjZkkdAy1rT9ZkHjzjoTuL01TkGjsrruRg0K41Gxg/kq1AjtDl\ncKdu6Y8vSPFOHa1UK1ArC6Mjs6dhIOmpKBDU486jEblWwHPmWmdnqfPV1+WA\nn7DCXnhihjHFB4ZLjaJyOEJ4gLX+t16bXtJoaNk0u5M1ZUHJvb5K974xBeuS\nQKjPFRpz96jcmI/BrtZWegv+I4fqSuByRgN2HkxRuVEemdGjyto+pXCyMWg3\ntzfRjxxvPo5c0zZ7fLUoAWvw8Z7Gv4FWQTcGNv8kodHK2p1aXa3kL2rKINCq\nBDXk\r\n=bgeb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGspTlF3mM6SpJIX5oLEHluJG4Etsbyp6KC8lkLRP9yvAiEArRvZ0IY9Dd3UvjfivWoUHO4T3jmTO45tFY1YYXeu2NQ="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.0-beta.2_1596380531331_0.9273738194822427"},"_hasShrinkwrap":false},"0.1.0":{"name":"caz","version":"0.1.0","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^4.0.5","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.8","@types/lodash":"^4.14.158","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.6.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.2","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"eac0371729b727c33cc33c70912ed5c7abbc0504","_id":"caz@0.1.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-eGvgvqgsm263zHzO1xBAUrPuZowQfyIr5h3NDBqCLJ/aYkxWm4AgapE8NY7byf5z8E0Tad6qt7WvYX8tjfHFzg==","shasum":"92928841bc1e1d3396d9d4f6c68d83a2c2893781","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.0.tgz","fileCount":51,"unpackedSize":66407,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJtlCCRA9TVsSAnZWagAAd7EP/i5a65yVwjGK5S1e29z/\nnfuM2RTD+tdKbBZxGsl8ZvRU6Mzlu0Pfa72023bzSFEADcImOVKEJz4T73a6\nCe9Bs2JJTXt3seLmEMgw6+ddlkPJSjTqWyWTYOX93JPucDFko6lMpT+ZhFVI\nyqphzgsqCjBUS/3h5JwarUQMXkYUVrCoKQHQsPkPX1A3zaL511H1SqaaSX2s\nnMWMSWVRIr75PVLsBf5S+wZHmUgC23dfs8ykl7V8BDYVuno+A1A9bPeNfIHe\nA0D0ioqN3EHKJmHYeOVJhZZkzwMeiz3crOjvUp+4tf0ynGkRwhT5Fxq2p5IC\nwhw7ow+TuFBIQDm7oByg3/qSb5AXa/HoSFlo1I1PfTFZO5Qh07MzcAf6VRpc\n//I/OFaopAXF8JkNZCABHa7xeURS1vesvfYTSmYeS9XjOLBFY1i/g+/iWKgV\nLae7/MwAfnkEkneeztvY+FoLtDNxN3QP0i2J8S458X/RvE8GJF5TE2iZsgQ8\nWSHG6rWONqhjUwcI0A7djBThx9b9M9iyqhxYD6pjTRxu+yLw0yGJpmVLQW4i\np6cSzOxHQ9+NlmqbZcg8xNlwmeVCf6DfO5Dkb0qGOeRHhKJcNCNmEBvNtOoY\nHOcGJNGPJYt8Avx/v7+wD0aknwcsikkOMWyrGMIPygZpa5ycswVj9BRrTt40\nRSbY\r\n=N3gI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHaDHdU058FMLbXapblW9c+OkxwqI10D5/EM9Y6fZM9QAiAto4/44aR1Bz7ZFPWc+JESTgG4+79fR3RJT+joSjGA2w=="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.0_1596381505693_0.20340683838228224"},"_hasShrinkwrap":false},"0.1.1":{"name":"caz","version":"0.1.1","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.7","ora":"^5.0.0","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"^9.1.1","@commitlint/config-conventional":"^9.1.1","@types/ini":"^1.3.30","@types/jest":"^26.0.9","@types/lodash":"^4.14.159","@types/node":"^14.0.27","@types/prompts":"^2.0.8","@types/semver":"^7.3.1","@types/validate-npm-package-name":"^3.0.0","copyfiles":"^2.3.0","eslint":"^7.6.0","eslint-config-standard-ts":"^18.0.2","husky":"^4.2.5","jest":"^26.2.2","lint-staged":"^10.2.11","npm-run-all":"^4.1.5","rimraf":"^3.0.2","ts-jest":"^26.1.4","typescript":"^3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"70c346557d08fb6c7576362b4bf8f2f09f713c47","_id":"caz@0.1.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-+JqcgJ7rsnXEBVB1hAd1gCj3EV+oOGzGI2zKsW/wfBpVLNN6+OVvFyEwlMNq8Cm5QpuoMeVhhDyd90tl5dBI7A==","shasum":"52e3e7cebb2404fab14a62c5f5123be5a2a7b869","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.1.tgz","fileCount":51,"unpackedSize":67110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfL33GCRA9TVsSAnZWagAA+ooP/j+9XBqDJnTKT0qXDizD\n1ZNkyUK/2dZ2sz+laswl/9C05KDPeoK0WQ38O0/KdQMdRYFoCys8Xw/MQoix\nCMtjT4p04THnzspZc+WuYRqVLyRR8Jm+607gqOiE+XfbhY/vfqbL2jeVglma\n/PQ8CJhjYjF2Gbh99L0nxWDVZWCsCG0gM5g0mL6KAtxsUUkqDYsugf/R9Hlr\n/KmCL3a+Cd/vpBOpn12XMJqt1Gab9BEQLms3KhRoRQ5IKQV39TuAIjGHY459\n8sTC2PyhmCfuNGoIMJ4szJS9pWMPNUkxXsGfTqU0iOMi9EAmYow2KK8Yb2X7\nUiti+aa6jToYwygF+H89nHcfbLGeN8MGk4FfZjXDc85fexpJMnP/NzaZhJuD\nP/uJ9ulu3LPWnr1IWPxS/OWSkF4kSc1P1GHbthz6qQTeO+kAA5TOtTNJATYn\nj3/bEZZQqky4UKo2gdK6G1JMMQvaB481g2b1fH10JkVxrmn6Hw3Zifd/mwN4\nwXslN8MsGcq4B72PdGzrA1ZmvCZSayb2QwuarNoNkP/aUmSz58mDKAjzUGXs\npLghSJaa/EYtoYUEkd9bwm88HH8cypMJlLvBe2W97ojfQaxe87QZ/dK6EzDW\nKlvVhXJy/nl8nN2ONUolTM75lCDx/zVVjUF+6O0y2vvnKhlvvF1OIPzpNLZI\nmwSJ\r\n=dcNq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgF/8st4e6wgmd+Q2COGUztBvXoYRCVQ4qPQ/g3dWdcAiBqa0uRidnDagAbIBEw+0CBs45M2XyaIMDZnvDi2Xa3zA=="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.1_1596947909479_0.3288144237954467"},"_hasShrinkwrap":false},"0.1.2":{"name":"caz","version":"0.1.2","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.8","ora":"^5.0.0","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"9.1.1","@commitlint/config-conventional":"9.1.1","@types/ini":"1.3.30","@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"14.0.27","@types/prompts":"2.0.8","@types/semver":"7.3.2","@types/validate-npm-package-name":"3.0.0","copyfiles":"2.3.0","eslint":"7.6.0","eslint-config-standard-ts":"18.0.2","husky":"4.2.5","jest":"26.4.0","lint-staged":"10.2.11","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.2.0","typescript":"3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"aa6ee609bde9260609676bff7145cc236e4842da","_id":"caz@0.1.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-zuapQgxavxP4VUxRljb15u5tZ6El97xlfDho6bmShh2EzK82NA9avnmn6zShIfIOasWVl+8xktq/d4LX+acvSw==","shasum":"b8a73e38a99398fbc2e8a5a622a8b94aeef3f236","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.2.tgz","fileCount":51,"unpackedSize":65634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNlvZCRA9TVsSAnZWagAA2zoQAIMY++XpJ+GGKyy44m9o\n34CyNbWhzNnmb2imZTgiuBbrRCGtnDv32JiD99AYI38Dp7EA+AR/+kqsd2LG\n+aILcj7sYf/hgs2kFy1IYyjJDfuVXOgrhAw6mbE3OQx2M9VoYpdQhvMBy1AF\n613z7eVCBitDhsQ4S4QqAT3kKD4ODwGRDEp1sFpVztEfaFjcXwhLDCm6thro\n6y2TzF7V9up7bZ8wUtR4odngQ/KW+L6RUwVPN0xfNP1uHosLUkOmvKMFsDWP\n0AD5WYHHdABxlkYMAhVB7M66+GkNrhbM71H404uzselqVEdp7g1aqi7asXT/\nvW+jA8O+pm+znE4oQkoNGQPcpdbCqWO0c8R7BQUB9lZPFhVB6AECAFoHSDHt\nUkCahoVkp8pZ/cpBq/J/HqAb3kOtw/MfBtUqPx4kHuV5ZZj9qiaz3R4sgv5z\n5loiHRPnq22cpGPn/fxKcGhZL6SlmI6UaIFk+19boFmFdQUpU6s6G3fcxLIc\no79fY8qdNkjD6BrSYyiHQN7AL5voJTDQjMADLa5UyS6cf4oi+5yW8AbkTSsi\nNpWGLGeI80HD8Bi2ChgIxl7xm5Fichi/Jqo2vxKxPa0d8hAwPkrCmoyRsRrp\nHiR6lKw6c9KoFqFrSmaLU0ncxZSmOPeTXBxom5KvyVXsXRXZvauoABZsxeGd\nIKU0\r\n=Jdam\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG3TyAwd5VK9vpXRpeoKu29UjiZ4cWYbKwFUA6QO9p+/AiEApkwB8Sdzx7u9NPsHElDEZRSfYl3Kdl+4DWF5EXDvR/k="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.2_1597397976528_0.5586084948587657"},"_hasShrinkwrap":false},"0.1.3":{"name":"caz","version":"0.1.3","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.8","ora":"^5.0.0","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"9.1.2","@commitlint/config-conventional":"9.1.2","@types/ini":"1.3.30","@types/jest":"26.0.10","@types/lodash":"4.14.159","@types/node":"14.0.27","@types/prompts":"2.0.8","@types/semver":"7.3.2","@types/validate-npm-package-name":"3.0.0","copyfiles":"2.3.0","eslint":"7.7.0","eslint-config-standard-ts":"18.0.2","husky":"4.2.5","jest":"26.4.0","lint-staged":"10.2.11","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.2.0","typescript":"3.9.7"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"65edf8feb36f1c333ff982a0aa139541c21ae1bc","_id":"caz@0.1.3","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-smxDYaOxs6f9Uk2XXWbsDpdWly44UqnZGUHCdcj6uZk0uF5vt1xFYRmbA4ZYsg4nMu1JcPgJbqYa0EKkC9nqEA==","shasum":"e663d0a1d508cf4c9f01cb03a5ec75013a13ed0c","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.3.tgz","fileCount":51,"unpackedSize":66931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOTwDCRA9TVsSAnZWagAA6CcQAJn+NeWyJZGY9m4+DBuf\nfHqytUVWVa9Kj/LljmQFnF5MvFeFg14KXY81sMfPsLP1i0WCsy2x4qSSrlrz\nFzEni1if4oCe89UWWBND5z0KtgiPT8+6T3ys1AKMatdvDeog+/4nuAdiqZoH\nY8N/fU9vCSXhHMEyD86e2yCfTgcyhzZImmF3i/sBsjinLjIQjQdLMDSoRZ7m\nti+1U8ZQycPUrI5kFSXgYpMYzimuervGwmbeanC8WjLCSMzDTEE3QsUVTfJD\nsSIRe6VgRk6B6PEharzAkS17bwxgG0fgFQEs2i8/L48TOe0t1kmp1stMoZDP\naZwLFHAxrslOsFh+uBComllR+mLJ7gk+nXSg3rQX8tU+jMXR5ZFTCrEFPpn5\nnokiqZkT6gL5TYRDS6ROUfYIZmtCQJpVaKmQOk7ObY0/K6DwVH/si9Tb1I3J\nsi9HhIfis1c+KTZm0Rl+Yht1xdB5/evIN+3f1D4Wypj1mvBBoTzEcP4rIpnR\nA69oVH6Vkr2SP6+YCLTWGkW6EyYb7NrCg8oIHtM2uVYniIpU43N7uD93eLEW\nqg9TbfmXdMbDd2g26EdFROwblgojMcjWKwrwrqHPrGFynT8/q92gBf+bXhWT\njA57Srh3a1Z5ER1/TMN6q6f4bzzhve5/mYDy2zP5atgrxZVbCLaDXYIqy3iR\nqHiJ\r\n=7nfd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbT9mo3pm6F/dxUb+4YdOPeduqDznuLh7wZzySksdhsQIgO2zX/qoJSWllS4TK9nRikcXV10MRVQNdmRsa+XHbYHw="}]},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.3_1597586435037_0.2605554847053424"},"_hasShrinkwrap":false},"0.1.4":{"name":"caz","version":"0.1.4","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.19","node-fetch":"^3.0.0-beta.8","ora":"^5.0.0","prompts":"^2.3.2","semver":"^7.3.2","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/ini":"1.3.30","@types/jest":"26.0.16","@types/lodash":"4.14.165","@types/node":"14.14.10","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","eslint":"7.14.0","eslint-config-standard-ts":"19.0.1","husky":"4.3.0","jest":"26.6.3","lint-staged":"10.5.2","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.4.4","typescript":"4.0.5"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"d68d1231ca51c968779f1b7eda8bdc995864ae1b","_id":"caz@0.1.4","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DYJJdMyjxwSGTX64TSi32pcoRiN25nmtMzc5NqkF3Kc5+0GKUtr5BB7SHx1FdJW9TnKOsRVcIasqyrD9EjkdMA==","shasum":"8ec8233655d1cc48a450e7ee9df51d205775e50a","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.4.tgz","fileCount":51,"unpackedSize":65706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfygseCRA9TVsSAnZWagAAFe8P/2nAiatoKOeV/H9VAJS4\nRuj1abY4xadxi0lWuW0ID9c91CDVgcRP6hHF1r/FF9NtnTmINUQG1a+8VU0Z\nK+aPGttWSC7VIVeehHDdcDMURd2/8LPJl1M7flIwahN2Fxy18QL6CfnzC7vO\nqFIohf6OCQIjdSVWhceCu3Wi6JFMBY5RmIoVo4YopiQX+zlminReg1VQTNkc\nKPXLuuJbuv0IsRnPJD2qv1aQGXu5+kwXUHotkQwFGCox5lK2m9B6V/WxJRxe\nWD+mAJtbR8mODB/suhw2w2qbBe29XC0mQkP5RsscCbvapuSxkbY6m2uPyge6\nv5aL1IvAmj0ck5ULkCr0B5hb7e5sPiP6CZFC8hP5Rx0wNzg+MlD5Y9dOFl5K\nbptvsQr/RXNFBquuqJaRja7CjAl/Rji+bBaEU6ozlYKRoUNQZDJ/KS08e6SN\npZDtznB5eWaYbH6ZL7BF8FRxNfyWcGibyLoi4Emh/qOzsNpdQ0TiwiZmOAjj\nI0mB5HfxNotA8lSbkfRUibmwcUpO4z0exqeQcpLwz9ugiaccZZwN6yOY7pVh\nUcLGcxp/PAhY90d5rojT55njHn93DSdCXc0dCe2WizACUSzPqnZYOtx2ZrqN\nGsxsuf3bDOYtrAsbOoqjeWcqihnrfIQlKsRYZKhieoBlR8HZeB/C/tLH4Sna\nAbMu\r\n=Y7qW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADxsS3+c81Tc0sgd2XQiwSpZz1Dx+ligNcxa15b8+cSAiEA2yUnXQxiO70lbmQK9ft/oOP6R5vFyTZtW3sLLJTC2rw="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.4_1607076637397_0.7281564302648162"},"_hasShrinkwrap":false},"0.1.5":{"name":"caz","version":"0.1.5","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"eslint .","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"eslint --fix"},"eslintConfig":{"extends":"standard-ts","parserOptions":{"project":"tsconfig.eslint.json"},"ignorePatterns":["lib"]},"jest":{"preset":"ts-jest","testTimeout":10000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.6.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^1.3.5","lodash":"^4.17.20","node-fetch":"^2.6.1","ora":"^5.1.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/ini":"1.3.30","@types/jest":"26.0.18","@types/lodash":"4.14.165","@types/node":"14.14.11","@types/node-fetch":"^2.5.7","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","eslint":"7.15.0","eslint-config-standard-ts":"19.0.1","husky":"4.3.5","jest":"26.6.3","lint-staged":"10.5.3","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.4.4","typescript":"4.1.2"},"engines":{"node":">=10.17"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"ba6f154df9adefa09817365708a8618e5bf19e31","_id":"caz@0.1.5","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MZBkx3IS+hqXD5aL7DoX+TihBRmXxxUVI/wH4PYIiqY1+5YrTU5vYBZHds4N1vLfNBjRzZyNGddJe4+kT1zqqg==","shasum":"114c3c09bd0e33ac5fcb85a733b57febdd57a3be","tarball":"https://registry.npmjs.org/caz/-/caz-0.1.5.tgz","fileCount":53,"unpackedSize":66805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0cWXCRA9TVsSAnZWagAAtosP/1JtC6aFr+482isdRZo2\netYyyzcqa1vumfhUVT6NEWkvPtfSUuK97rOdWhYKLNc4wFNYSnHmkVoxpGa7\n327Y6kcrw7cWDbBhcmWrjM43gBm3Jsv7biyMa4LAqQDyfEleoylhsSbCJHMM\n++iA1ZGsvcH7jKAeqang7Sr0IRn0iL7if1viT5d8MrHoIPOv10ZxZQ9HQn6Y\ncIIOM0S8QZOOMbkvzpMcZtv+1NAbe+OFdzwJiKvmLm7EXGF2l/3zNOCn+e2z\nmcRSRY+OXxTLkW2yn2H0r/yZq+/DXVH2nyUGXa8gjg6zoQwJNjSdU8gQW9/t\n41BRRkwmCxnhU5PqN2Adf6lvDkpFGaQfcT2AhY5O+FYtLkIuku4aZpiuuz5L\nepk1+R9OC/kcUq/tEeus+LokPZY/nVBepkuSy5t3gj0lD77tzEKapKGxzRan\nZsdKNxwEhbZBjI7KYf2pq72qjIiV8KWYppI5HYYS8OA2/isxrIAgKOve8Bny\nTmL6tYNvAnqsWFuvhEL90ztL0goAcL8xWo+QFo69H60qreOeGzQWE+PFabGu\nst/jQ1IJGAK8GLazBlgaZngLFlqR1ZW5cWIhaS4qLWnYWJx3gK/R9VVgea14\nCStiY9aRd6c0gpPYYwGgCkUo9r+qk+xu42djY0hZJEv73uYYHcSDou9oEq+7\nRgJV\r\n=dPwd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDES4iy4rvOxp1iqe9Ki4/LzJo8xIKEabv1HaZBxiHuQIhAJtRFr11BJiueoUZHZ8Da5t5nhxP2qME3q3LAhRzSxhp"}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.1.5_1607583125757_0.24205844171686786"},"_hasShrinkwrap":false},"0.2.0":{"name":"caz","version":"0.2.0","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"ts-standard","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.7.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^2.0.0","lodash":"^4.17.20","node-fetch":"^2.6.1","ora":"^5.1.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/ini":"1.3.30","@types/jest":"26.0.20","@types/lodash":"4.14.168","@types/node":"14.14.22","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"4.3.8","jest":"26.6.3","lint-staged":"10.5.3","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.4.4","ts-standard":"10.0.0","typescript":"4.1.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"4d65685cbca0a9632c26db432ccacb5fbf41f532","_id":"caz@0.2.0","_nodeVersion":"14.15.3","_npmVersion":"6.14.10","dist":{"integrity":"sha512-BVkgxhVBwXLu9krf3K9ks+Wus9VDhuUq5+FZ9fYpk9aLvP8L3AIgovMjiIDT2/CiEJJfE19u29smizdfzzt5hw==","shasum":"64193a1c3bb5686a1912b0771f678539efe8bba9","tarball":"https://registry.npmjs.org/caz/-/caz-0.2.0.tgz","fileCount":53,"unpackedSize":67021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE5NuCRA9TVsSAnZWagAAdv4QAINalhERqYFsMgPLwu6H\n/dmibEMfrfukOvhF+ZzW1+5VBiiZSnJ3ROYRuuxdA4yfOx2TgzkS4Q05SdMA\nmi9+dER6Q6nZ4rtrj6X8vX4LfbYKzhIwpB+c4nSwu0l/+g65gd4leGBVkHUx\n1po0Y8es3yEgwsKutpu5tL4heaSbwcVU2TKo7DxFjirxnbqgMnpKDH0fqCAl\n1d1fkgqYNEg69ejCPZgWu83pX3m8sCuBBIeGPoNGgz92faZ5wyhPVMsN9gF6\nm2yKbkEVau2lKwF5k10szzx99r4bTH9Q767CnvMRP9OzsJCX4YZfX4Q9nchA\nU7EKBLGCKGmNmwJ4rdlMKC3V2yA9RWjg6SuY4JUyR2SNfdFSgZWNFL6zLka0\nLfKr+EOkIxt7BIR4OTDv4D8GuMoVi/38ixD/hjGbbr3AmRX9fys/6GKgclRF\nDH/IWtWRqtxvmYENM2Z89J1bGauJKLoGEo8EqDE2QsnahJka7b+s9jkPLHIZ\nha3kN1wCktTNyK5f/aCUxoUVwTf0JuixoWNoFFQQvb8vJQDStEy3SwRE3YKE\nSsFV9IevHHTpwMK2Yy5w9XMUobN1xLnAKV8rYVE5Wlzs76m/YPjyoAbJIrLd\nFuDQS8lKN13cP/ZzjYPV1KKloXKrEGPuUdShl62oJoHV1wB6XYGl6c01YyMt\nH4cm\r\n=wyK/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzhP8lnQgHS2bvI1v9/Nk5ZJb8pLWdVZn1OtgXd+P0dAIgElI+D+CPfKYQSnVYrsNEXXFJJ8bxMMKCeUaFrpNlN+M="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.2.0_1611895661432_0.6546614336632401"},"_hasShrinkwrap":false},"0.2.1":{"name":"caz","version":"0.2.1","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"ts-standard","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"run-s build test"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"cac":"^6.7.1","chalk":"^4.1.0","env-paths":"^2.2.0","extract-zip":"^2.0.1","fast-glob":"^3.2.4","ini":"^2.0.0","lodash":"^4.17.20","node-fetch":"^2.6.1","ora":"^5.1.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/ini":"1.3.30","@types/jest":"26.0.20","@types/lodash":"4.14.168","@types/node":"14.14.22","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"4.3.8","jest":"26.6.3","lint-staged":"10.5.3","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.4.4","ts-standard":"10.0.0","typescript":"4.1.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"2609791d3d2ffc779b45b8b0d45b913a45c17252","_id":"caz@0.2.1","_nodeVersion":"14.15.3","_npmVersion":"6.14.10","dist":{"integrity":"sha512-n6nDLE9Giodag0DmWkIssf9APw4BRBy4GUXSH5MPDUdhPSVd1n+x3WFxIP73Kflld5CV8tkbPybvqSxC1Peptg==","shasum":"8ce65a5470ed30b1998b92ad7894041d0c4f42c0","tarball":"https://registry.npmjs.org/caz/-/caz-0.2.1.tgz","fileCount":53,"unpackedSize":66880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE8nGCRA9TVsSAnZWagAAIOMP/2PiGUiqn2D82QLdBQqp\ntdid7H1b4SodfzDorgl71EKNGGros/s8A+RMydu1nVaOPo4riaQGdd7B9+s/\nPz6G3HSX9ksvcpNu4KHxwDsBdnsU81RjOHHUTYk0R9MIk12k2DC5uijIOOWq\nOUssM8r4AHPd0GIXoMseWX5ACULSagkepGLLNdVKQykxh4PYxrBl1Krcf+vy\nLPITA90cKNymJAguOqoG0NfC+Rxt9DLQ7WB99CyulM+9Qk1qG6Q/ulJTXrMO\n8XMTsX0bqcdbaFROudCV7anqH18VATV0Gbbykj8kOJkBneYN6UBeKu3zNppn\nQ3EM6fmZRc2HkOhVZAov3cViYaMfe+l1So3uSoLF5wBwWgFdbjW29I0CjKYJ\nMalcDKpxVOZhbJxSgcklah7QXcXZ0DNM85JERCB49kNROwT8YTlZ9Gk4+A+w\nNFIqrs8Wxe9JhiHEcWyuZjpf7VizoAgSaLPYlGe47feMhFHW+xU+/mvfW/t8\npD7nvkfT8k44UZbi4dxJo2m5UFtAtz9uHLSMFAmRCI3f/WSP/JwpMwc/j14Y\nfpCH3HwDA1driizkisAnl2MKPnGuP/0b9eCxv+Opxfri7a9t3may7H8uNKtN\nlvG7NRC9UaOVZ8T7031gRdFQJqvq3Df2Dw9jzV6nJ9JPoIiu3fXh0DwP/q5E\nazRz\r\n=NQyj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuykaZwDWYSu2rCt6jrzHGZVYl4y6YOURs7+r5LmseVAiEA0ETdkfpwAzJbXijKGFC3vZsQq/W5GVHG6zNVUuVUwwc="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.2.1_1611909573675_0.5240334871915215"},"_hasShrinkwrap":false},"0.3.0":{"name":"caz","version":"0.3.0","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"clean":"rimraf lib","lint":"ts-standard","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"run-s clean lint compile copy","test":"jest","cov":"jest --coverage","prepare":"husky install","prepublish":"run-s build test"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"collectCoverageFrom":["src/**/*.ts","!src/**/*.d.ts"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.4","cac":"^6.7.2","chalk":"^4.1.0","env-paths":"^2.2.1","fast-glob":"^3.2.5","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.3.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.0.1","@commitlint/config-conventional":"12.0.1","@types/adm-zip":"0.4.33","@types/ini":"1.3.30","@types/jest":"26.0.20","@types/lodash":"4.14.168","@types/node":"14.14.35","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"5.1.3","jest":"26.6.3","lint-staged":"10.5.4","npm-run-all":"4.1.5","rimraf":"3.0.2","ts-jest":"26.5.3","ts-standard":"10.0.0","typescript":"4.2.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"1fdd62e73fc42a3e080efa6916fc8481654bbffa","_id":"caz@0.3.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-swL0bGw1v9vGYTW7RwOt72TeKpZ1FTkq9SxY8A5ebC80zKWM3wLGZBkF8UoQzy2vhzUTok/G1UBNXbGbDAznrw==","shasum":"942d003abeee57643caa7b904602c81112650fa3","tarball":"https://registry.npmjs.org/caz/-/caz-0.3.0.tgz","fileCount":53,"unpackedSize":67126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUd1KCRA9TVsSAnZWagAAsRgP/js5DymZTB7flRGKx/kW\n3RH4TKLITwLbR2sHCKEo925b2nvp9dt+2+aPraDQ23ROoqkJs93zgZ9Ppmnf\nu+/2wdCrmvALZL7sjDviR9S8tdd+PUpFBudDrMOn6HX6KSGrqDVMIXdvK4Rc\nxsz6BJ5lGCVtkeoSu5mpRjri1PtJMjLH8GcmQGq9Fwb9hkEgmd2roPMIQVVY\n8t9y/wDTvJ4N0+s6LoqcMLDBkN2GEKSwBVjnhtCv2Zmqv3Ac8HFuxw1sGVZ4\nq6wvyXNrkEtk60IywuUquJPSRsX8APm8FSzHleWVPItGPFuRgSX+3rRKhykd\nR+XUnjQmKFeY6yhDUjagKqrpz9fYrjaddrbuOhXXyWEoqICWSmcEb1T8mjo3\nKKWcNIZA7uIUpYW+TuzRfwenYYsBRdcadFHq/jW9J0XDzHw9q1cH+Y0NAGCh\nhWTmac050hiVkHMI+dTci7qeBKHvJkm7KBcp2bWcO5XGxAdtpnzP/LYaQ21J\nN10qQOQtlHsn53HtLP3b0NglRw7zNoKhv4UdvOSLEpcyl8ovH4lmi/SoSjC1\nrT0U0FigC47fviTEEMcB3zNcuJkS5g5dBYpdjDsZKDYJfd/KmMCSqXUiVGsg\n0LFmCxuEjTBmHzmugJJXTtES/lFZqT8yjSyx9H1t0ZZBrdZ3T+OdYGB4f2gT\nEDz6\r\n=ffQW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfLZEx72UUuAo9K72NoHxBQpS5XHt+kPrYmpX1dWb0HAiEA27/lsas1DtjQ/3mpwLfom4KslaNfZkpVmWhJ62cFPkI="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.3.0_1615977801489_0.6381039055957471"},"_hasShrinkwrap":false},"0.4.0":{"name":"caz","version":"0.4.0","description":"A simple yet powerful template-based Scaffolding tools for my personal productivity.","keywords":["scaffolding","generator","cli","typescript","jest","node","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"npm run clean && npm run compile && npm run copy","test":"jest --coverage","prepare":"husky install","prepublishOnly":"npm run lint && npm run build && npm run test"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"collectCoverageFrom":["src"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.4","cac":"^6.7.2","env-paths":"^2.2.1","fast-glob":"^3.2.5","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.0.1","@commitlint/config-conventional":"12.0.1","@types/adm-zip":"0.4.33","@types/ini":"1.3.30","@types/jest":"26.0.21","@types/lodash":"4.14.168","@types/node":"14.14.35","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"5.1.3","jest":"26.6.3","lint-staged":"10.5.4","rimraf":"3.0.2","ts-jest":"26.5.4","ts-standard":"10.0.0","typescript":"4.2.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"81be8b87e17e6187745f32a5b43c040892468e4e","_id":"caz@0.4.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-RBQg0eOSF2LrGecLb38i/yYWYMrWABHF5yKYU/i/dMQ5NaMc5xO09NU40TgDYHHhJuOHupObDnl1C2ZSdx0uoQ==","shasum":"5a437bce8f58aeddfadb1a7cd9c89f6ad2bdc382","tarball":"https://registry.npmjs.org/caz/-/caz-0.4.0.tgz","fileCount":53,"unpackedSize":65307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVg0ECRA9TVsSAnZWagAAdcgP/RtN9bhy+vbXk2MuNE0T\nRS40XhOcSSO1waG/1e0kdwlV0SsXXHRhSw0cvnEoTQQ1FfiTPFPkV6LeGHCx\nJraJ7ryR3tXZU33khqrZGD5ACA6p91jGr6dVA6TMtNvIaIlvwmSLb1h4gt4B\nMYYRo1l4R51WRYt9B97iUtSksXcWwyR4K0+UrZIm6JEZRXI9KkV/TGhDdN9d\n96zCRgXu2uiTtRpD15hDVKV3HzTg5XjvYO2lwSbLjd70xGIU9grEur/1ETXN\nN4/HrXSMznjOa5KG2NjLmToxPM8NHDKSNagdhQVKJKJUe3/sZA90RqX1sEmd\nymn+JSeiA+te5/Q+ClA/vjXvph9IZokYPJRSb72XGAt7HcdmWEw+nhdMm1J6\nqlcgQP37RnjGFf4htJUYUqgNzisHx3X9DDfU8w4JGQCB2OLnvOKXIyeByQXP\nS01YAhwNQcdfYDd6dk+TNf03oWhnRm7jqNf9cMFcS7lg1dhnkwXKA+ym48pO\nahWA1kqiee+L7Py1UvSEHJXrylEU1IFfYbO67m1A4u1BSvDicMIgNvAWHqLp\n4OAdROxgMiy6aL3T7C0ONuViZhzt2I7Kdm9HkqrAGJZy5miIJ3Xy0wpTHraF\n2s6CHC6qw9K5/2so7ViRxJRFCU7GIKlsFMejogjSgi4kHbd/hwHiQGhiMl9l\nnIQL\r\n=/5Rw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFPhgsL7QVKDHF7ShoMSeSk6vdpR0RkfzYl1CBkCUUEAiBkX77GBBJIflhaTAxqlcCx0ncTfQ3tH7xeQbM4pBCEFg=="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.4.0_1616252163965_0.4801437400753201"},"_hasShrinkwrap":false},"0.5.0":{"name":"caz","version":"0.5.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["scaffolding","generator","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"npm run clean && npm run compile && npm run copy","test":"jest --coverage","prepare":"npm run lint && npm run build && npm run test","postinstall":"husky install"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"collectCoverageFrom":["src"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.4","cac":"^6.7.2","env-paths":"^2.2.1","fast-glob":"^3.2.5","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.0.1","@commitlint/config-conventional":"12.0.1","@types/adm-zip":"0.4.33","@types/ini":"1.3.30","@types/jest":"26.0.21","@types/lodash":"4.14.168","@types/node":"14.14.35","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"5.1.3","jest":"26.6.3","lint-staged":"10.5.4","rimraf":"3.0.2","ts-jest":"26.5.4","ts-standard":"10.0.0","typescript":"4.2.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"0128c32aada8c39d554d2653b68228339a3ce9c8","_id":"caz@0.5.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zjaU2bph9Vd928lWpxAPzAOc1GO/HgJffP2KL7uAS+oUGkYA8ylBAWMREFza651K8RLMENy6Lm7HwsZ+ziNvdg==","shasum":"651c2f76ee0f81bbffcb348d6262a323338ae955","tarball":"https://registry.npmjs.org/caz/-/caz-0.5.0.tgz","fileCount":53,"unpackedSize":65342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVysICRA9TVsSAnZWagAATlsP/00pNXnwIgOZsSn4OHL8\nk1DUhwbK0ivbpXmfHWywcAo4y9xD3kyzhPlEdG3JX5TJ97CNmGJKQU0a0VqV\nYJiCnMIM8LR3/SIYw0zvYdOXa9zeTLsGJztvhYhAdZGYmvX+/sJSg5lZ0whP\nS/3ra7JOFPfpXvR6nGj8LDsxBZV5TR/xD/KqyoR/+/zMd4Ru3Lg0b9t3aCTl\nW6AUl9MkVjv6H1GRNA6L4DGmQuHOpaqmFWS7lcz8RpkvKBe7z41IGAh4sx5W\nqlEXgXNz8RX1agm5W0FsEarwJ9pxp1lwRVhxpFGHo3QYTiCniByawmQn1B/j\nRdJ91b3RV6mbXvbQZhz5Qw+h0FgEjYwRYi1qL9zG60DxA+t53+LAsBghPOn3\nEw2sWiPHNx7SqZWfgdDMYpiL2D4nrE2kwKMOSDxpEGS5TCp0jXj/3BLVUj8q\nEC4qdtVPxUHqs9Mn/ihhi/iRnjxe+NjE1CHcPlxncgcsjXaoioSAlB85BnDe\n9Z+2UftyYa0ZldxSyXc2ZUwf/YdBnQTUfh2UBGidAGiW8/0pEEryLNO2efZ4\n3D+KVRZ0oSBgvJRO0Ko4D9Lc56orJyCDg3dQHdi/F7xQZveRMbgtIZFyfY1V\n1dUMNciqLi199gaSNgXn5sAn8ZWhN+H1iOBGpvJmMjDTwrwtT4v//F3bjU6g\nzXMd\r\n=ubbK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkFoFFajrCLZET4rhgtCOKD975QJq4A7SD0WMlfDlk7QIhAJPAZLFv6c6pI7MGdy1nxoif2oHrTj/yF1P+tIWaiYS6"}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.5.0_1616325383824_0.4025638536435716"},"_hasShrinkwrap":false},"0.5.1":{"name":"caz","version":"0.5.1","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["scaffolding","generator","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"npm run clean && npm run compile && npm run copy","test":"jest --coverage","prepare":"husky install && npm run lint && npm run build && npm run test"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.4","cac":"^6.7.2","env-paths":"^2.2.1","fast-glob":"^3.2.5","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.0.1","@commitlint/config-conventional":"12.0.1","@types/adm-zip":"0.4.33","@types/ini":"1.3.30","@types/jest":"26.0.21","@types/lodash":"4.14.168","@types/node":"14.14.35","@types/node-fetch":"2.5.8","@types/prompts":"2.0.9","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"5.1.3","jest":"26.6.3","lint-staged":"10.5.4","rimraf":"3.0.2","ts-jest":"26.5.4","ts-standard":"10.0.0","typescript":"4.2.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"402201b52790ebc4236e420db5bb8b80506669a5","_id":"caz@0.5.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CWjz6aIqwe21490ai5eICyOCZ4rmIT+mQonkyGEvFHDhwqGTROiBgdPgbDjfhQGxN/rfS5L93i0zDTyf+Cbcgg==","shasum":"67dc3a4b833e2578fd7ecb69f4dcc9d7f3083870","tarball":"https://registry.npmjs.org/caz/-/caz-0.5.1.tgz","fileCount":53,"unpackedSize":65399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVz9RCRA9TVsSAnZWagAAf80P/jZfxbZN7/oAgEs+Qh50\n0j3tkrsbk0TTS3vTX477GR/T0WwJw2bOH+tlCGpIO4P2KT5Zit7HB0iLmSdT\nLs0fBl988DpQ9lqSNNHKSxG+0uoJKAyOlWgFYP8xpEpXQ6cLVLP79OQn9NYA\nNGRPPDaJCf5j6OT0a5fH8EkyDRHjCcATtPKgePliSbkHOuAZxiE8mNuHi1A/\nolQ4oqqB5fBpMa9AVmWZ7oDe3/01HiZhAfd67kNUUgEiL8EuzBT/kUdI+du5\ncRg1dy6UoUUkXxPMpO/+sh99iT5xYeDS2NHq2crtR+NhQamqHQUJotEfgjPX\nzT51RCjUxhdP3csLRMEY4kIPpA0o0cPpEQzqReHmNzVe8ueTE6xPl8wJxLix\nmnj+z88TSVm/ipSj/pvsz8FRZTSKxwHBCPk6+C7vag3kCJ9hDXeHJWnzJkZ0\n9FZOxzw9SpLIXpxS7HQr9Rg8lePakvGnzIP+VUfa1nXwyre35n6hqH2sjjh+\ng+gN1d2xhdGIqA2RttROp7NIcHuYSRL4NFIw1dsZt/2Rb7ziRfYMwUBw1cQE\nXePymXQtwRsKprwaZPXvO6gINtRBbKpRySVIN98Tiv/8XKGNcVw85LzOtczk\nZniiq9DtB92ONSDAlXAYCEZq+kIQWW2+TAv0+sEWlISaE99IAFx/ep3fKSsG\nnNQI\r\n=Y8OF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNBuckiK8i8TcyfLH7+mPzEoThO4zHfWHwp4ZmGFVurAiBpQYR6V6T97cRBEcb9sVcm8V7+dH9Q0gf/oCVaMEAU4A=="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.5.1_1616330577052_0.9768766784914742"},"_hasShrinkwrap":false},"0.6.0":{"name":"caz","version":"0.6.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["scaffolding","generator","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","copy":"copyfiles -u 1 \"src/**/*.d.ts\" lib","build":"npm run clean && npm run compile && npm run copy","test":"jest --coverage","prepare":"husky install .github/husky && npm run lint && npm run build && npm run test"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":20000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.4","cac":"^6.7.2","env-paths":"^2.2.1","fast-glob":"^3.2.5","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.0","prompts":"^2.4.0","semver":"^7.3.4","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.1.1","@commitlint/config-conventional":"12.1.1","@types/adm-zip":"0.4.33","@types/ini":"1.3.30","@types/jest":"26.0.22","@types/lodash":"4.14.168","@types/node":"14.14.37","@types/node-fetch":"2.5.8","@types/prompts":"2.0.10","@types/semver":"7.3.4","@types/validate-npm-package-name":"3.0.2","copyfiles":"2.4.1","husky":"6.0.0","jest":"26.6.3","lint-staged":"10.5.4","rimraf":"3.0.2","ts-jest":"26.5.4","ts-standard":"10.0.0","typescript":"4.2.3"},"engines":{"node":">=10.12"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"91d0f5c83a76cda4db8c2a5efe5b545bdd802610","_id":"caz@0.6.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iDeFGDJvzMS31bV0vnBaV7KoVdqSPg/+aRYRLeIz49yB4wc/QR/0r1oumhWq8I5jbN5PYhOUAXzdFRRS8nMqUQ==","shasum":"55efdee42487e74e0e1cfa76c0e32328fff009ca","tarball":"https://registry.npmjs.org/caz/-/caz-0.6.0.tgz","fileCount":53,"unpackedSize":66338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZqR5CRA9TVsSAnZWagAAq2gP+wcYlO3EMNo28qWohKJ8\nQ1LGcQKHctnmE6E+nB81tqlrf50s1vID0xCbw9UOv1jU4HFUqFnWbTuuh4VL\nNSegHBr7e1BibiIG6CaH6DufT0XST/n08lVkwVpwlFmn3CvrC+4io1W87JOm\no1koQpzYsACDFtRh00dIz+TBoSfoMooZZrK2/acBEqc5dRSHp+LqwN89lXLp\nVRgTfyWwz0DdOjolZ6q5baQGjL+ouOQ/NplNZiQDA+O0hUWPp5GilbxrYgwQ\nwrgk9wlYEwvsaJ6mflxupu/sK3gVSw7lo6d8oEaZU9YJ0dNNhx7qzm+X/dea\n8QQqM6PVeenx0aRp4CO5qvV0sis3MtMzjrsh9awbWnub1QuzSSyQn4OD6ITI\nNApWUV7uI88BHHl9vhKPwDG/uGR1tic8SgRzNwPpwDWh8x+Fd7DXtO24RZMD\n0Zt8+lql+9FrMcQHHevqye6o16NrBHhaqDD2lZxXYdzB4iJTCSwC6vWj0hBq\nJY90EM7S9/NgSeCxnbFf1ysFRU/OfFWmnCIVszvF3JiYmcFCV+9uWp4CE6jL\nWgC2sPofQVT/3tKe7r4XwQTWhys8CFibG5gB4cw3tSDNp08WIhkpJOR3aZlR\namyijHbHRr84AGiTNSgBWAltfAGo9ln8inkTfxzHxAaRhnmam2MzW6ovZaOP\nsW4P\r\n=IC8E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPOmZSYeEfzPmrny6pfF+i+B7KDI1+aEBN44+my8mEQwIhAOI3FQLUndzeEtPnsylumqd1JjcoWxhRvSXHnIUrDjL1"}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.6.0_1617339512905_0.185437676838891"},"_hasShrinkwrap":false},"0.7.0":{"name":"caz","version":"0.7.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","build":"npm run clean && npm run compile","test":"jest --coverage","prepare":"husky install .github/husky"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":30000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.5","cac":"^6.7.3","env-paths":"^2.2.1","fast-glob":"^3.2.7","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.1","prompts":"^2.4.1","semver":"^7.3.5","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"12.1.4","@commitlint/config-conventional":"12.1.4","@types/adm-zip":"0.4.34","@types/ini":"1.3.30","@types/jest":"26.0.24","@types/lodash":"4.14.171","@types/node":"16.3.2","@types/node-fetch":"2.5.12","@types/prompts":"2.0.14","@types/semver":"7.3.8","@types/validate-npm-package-name":"3.0.3","husky":"7.0.1","jest":"27.0.6","lint-staged":"11.1.1","rimraf":"3.0.2","ts-jest":"27.0.4","ts-standard":"10.0.0","typescript":"4.3.5"},"engines":{"node":">=12.10"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"41f10f813a52e66110c95fb4fcd4a9f37fd22e42","_id":"caz@0.7.0","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-8tQTxEZpTMgnWIzxdpN8MtdhY9C2r0mdQMSP4Rq1q5Ruzc0P4aTr3PwHcVxLU92+voMybJ04arOB2M4lAMrLDA==","shasum":"a666b20d3198289f0f190b2a15f0a59515fa56bd","tarball":"https://registry.npmjs.org/caz/-/caz-0.7.0.tgz","fileCount":52,"unpackedSize":64248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/qIBCRA9TVsSAnZWagAA+EgQAIfeufDgcgApD2umh1EE\noEjNaFZ75wU8TRKlcQnJQH9WfVbraUr941K7ol/l5eSPgFlNeCxciX5/qzZN\nDG7yUAKwKIUBhDaVpDbyYIrggBDnyGAqo+TdibwW69EK4U7o+AytO00OR3zU\nOam1TKhz3XcAsGhEmPNRL8ZrYG5j12EhGAfsz8OUUMrb0Ok1GfDJ5M6+/jgk\nFOd8eQmfKVmPhACS/2GLDwi8eKs93ggveUTwdP2GDDIBtm+U0ly6SUUy04wD\ndY4s8eAyvnwWzmn5YK/bZimbpz6TSz4UwDdxlayyo7ToZbk3YGKQikSsO3Ol\nYnXpSxHGNJXnMRf3VRvw/3B4Fon25gyNP+PXH4KzImapAlbKTt8KxPGtCEni\nDyitCEY0gZMmhkYDIC2QgLutCCUCuBTBKYcOiScap7jKZtof7wuZFMejgTFL\nRcstlFKriFyzwjOES5N26jsoKNXsEzlBYF8/HbYseSj7OyNndsg8wjfFThlc\ndypNvt6fC2105Dz5w3xLEGQK35d0ox04jFRp+9LI5H4g44erOo2ygfnNMm7u\nowX28vK17tWKLl9upv++fTzc+SieAujPJBD5yGGseT+9hS6AFQbMeEkWQSVX\naCgRPPYC64UyCWyqaq8pvDfD6ZDqf+SUFAhFC+kWjrGgHmiCzkJHp5H/NYhX\nZoqf\r\n=owzD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ70143s2Udomsk1g4Nvzh9AwDBpMvI/TS9kCIUf4d4gIgPuELfKpsupkkwou9+YXuDzxuefugPWLPLSA2JW3sTnw="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.7.0_1627300353730_0.2697129137062526"},"_hasShrinkwrap":false},"0.8.0":{"name":"caz","version":"0.8.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","build":"npm run clean && npm run compile","test":"jest --coverage","prepare":"husky install .github/husky"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":30000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"^0.5.5","cac":"^6.7.3","env-paths":"^2.2.1","fast-glob":"^3.2.7","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.1","prompts":"^2.4.1","semver":"^7.3.5","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"13.1.0","@commitlint/config-conventional":"13.1.0","@types/adm-zip":"0.4.34","@types/ini":"1.3.30","@types/jest":"27.0.1","@types/lodash":"4.14.172","@types/node":"16.6.1","@types/node-fetch":"2.5.12","@types/prompts":"2.0.14","@types/semver":"7.3.8","@types/validate-npm-package-name":"3.0.3","husky":"7.0.1","jest":"27.0.6","lint-staged":"11.1.2","rimraf":"3.0.2","ts-jest":"27.0.4","ts-standard":"10.0.0","typescript":"4.3.5"},"engines":{"node":">=12.10"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"4dd1e2ea7ebce57195a0314493a5e3dceeb86bbb","_id":"caz@0.8.0","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-F8T2bXGRmOUGCsX695jrRs05dXHEsMQDGZso3rLAQITKUuJX3aNi3gYkjFO/mVrrGNJTLcFz1vl4dQ9SMdl9Hw==","shasum":"354e68ffd56dfbb06102643607e568406b6f429c","tarball":"https://registry.npmjs.org/caz/-/caz-0.8.0.tgz","fileCount":52,"unpackedSize":64600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhF0EiCRA9TVsSAnZWagAAApsP/0015oqj9LXGNRtlBCh+\nPnRMSB+xguNvI1DY00yH/0X/dQG4l4FYIDvB2nlKZNK2m+7YD9nYfbb2bnyT\nmh1npG9ozBdyj+0NPd+CycktN1SsPZ083EdvoxFPHGMDkOclCIrQhE9MfzDe\nTjABjO3WgglIeuBTD+Sbjxm/gOPPqO3yvs/RqKX3FfMGAcReJCHXv2HM2Oy0\nFNFFzSmbE1zlioowH07YgYiIW+MHyNPm1rrC5K9Hsh1w5Vo3UF/CkEDdRddj\nK8jo75iPNS7BpFmO5Zdvo+DrV6i52N/jMkoXo0AC+rLGlLGnTv5ES06FV4uW\ndJWybu+8dhGr0Wa8l9dw3APQmnxA93e42+Uqm487t7kuN0bvXZzuXxzAL7ib\nKvTDLHsvJf+3eJnbgy0qViXFBKFvpO+r+3L1vwesXL0lhtOdnNifKFDAqv97\n5VyRWhT8/ffnkb4VVYql+vlreIsl+tP/i2AuGkJHOCSOgc+ublBcONuLaGdo\nI0njiCYSJDrV0w4wY8UXPTfQlkaVR1VcMbeSlWNUvgR9FXj09yc7JpUzImk0\nhq5OnCmObAj/tov3aqXXP9J3NFVV641eL4ED8Wley/BM3j5XDYnJGB/fZMkx\nSM6n9gb8pp6LHPIeVvggsS9GanHvK2tECoMjkPIwhdFq8AYhP3PzVp4dBqCe\nulpP\r\n=qNjp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZpjc82gS0J3UmwAb//FQV6+1M6J+aUypLPQZqR8ByDAiEAiz7LjfS0e5d7qQmT5dFlJE1ygJicBxygxUAkxP/8yxk="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.8.0_1628913953930_0.6698769426455349"},"_hasShrinkwrap":false},"0.8.1":{"name":"caz","version":"0.8.1","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","build":"npm run clean && npm run compile","test":"jest --coverage","prepare":"husky install .github/husky"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":30000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"0.5.5","cac":"^6.7.3","env-paths":"^2.2.1","fast-glob":"^3.2.7","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.1","prompts":"^2.4.1","semver":"^7.3.5","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"13.1.0","@commitlint/config-conventional":"13.1.0","@types/adm-zip":"0.4.34","@types/ini":"1.3.30","@types/jest":"27.0.1","@types/lodash":"4.14.172","@types/node":"16.6.1","@types/node-fetch":"2.5.12","@types/prompts":"2.0.14","@types/semver":"7.3.8","@types/validate-npm-package-name":"3.0.3","husky":"7.0.1","jest":"27.0.6","lint-staged":"11.1.2","rimraf":"3.0.2","ts-jest":"27.0.5","ts-standard":"10.0.0","typescript":"4.3.5"},"engines":{"node":">=12.10"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"01c6a5aaa8efbab5309342ca75f8f868c7825e76","_id":"caz@0.8.1","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-tkBPOpPLFZi88GXLSvEJ4txGTW9IWF+1WXur1jKSApHLbQHztXUyp6Af9kEEQyiX6PutFjT5OUnJmgitIbW4IA==","shasum":"9928b96195518caa5a5883d3ec81badb577dc4bb","tarball":"https://registry.npmjs.org/caz/-/caz-0.8.1.tgz","fileCount":52,"unpackedSize":64679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2llkCRA9TVsSAnZWagAAuT0P/3G1UjiJeKZyFov/mEB+\n9vhyigf5k6/bcmrYgBKAAcGwFGiMEqFZtgwAXjx2RcNgvGwkIsuthkkKFj8t\nIXwcBLZteOgXyRa4DgEQmBlr0Xup8r9ph2ET3+GECPap0y4Os9PlBp9P+7lh\nbqeJEbT/6PgrYiyEca1nhW38OUbXO95MqX1eFFrrWEIv70ZFI6NaT1hBjIYd\n5insOEbZtDWfgv31S6yq/5zbgMKKdiYrponfe3+EH0F0c7XWqg9adywY0sG7\nRWwB3C8nlPO1gX2vYx0voeAns2vNTaxPjMeJ6IOXmmvyvzEjXiLUbG9YF7Q1\n/Z6zObxMlZVLycQASeSzXxVsleaBasUWl1VfGGJjHX/RgxX1msIs3q7vOnEq\njAvpHIFkn/xkgGnGM505sjXE9Ty+EOeWqJM59V+vnlfPPDkxMGCSj2Ljb9ug\nDorxvP2UElc4pocyh+ZhSxCAsL15PpGBt4O2bBuqUHp0P/XJzvvoZz+T7JOy\nFSE8wmP4zYlon9W8Ja6OwjDzp4A1WngBx30ZcRB9AH73f44UKzh0n9u+9ORY\n/G+2QYUj832BZFYUx2y88SYTds5AsBTNiRKrofDcS2iUcBEKv/rPKb4anAaP\ni4aJCK6/jxVKvWTLo1DKjQ7fhtkmYyk3ROxB8XjHnqpV3k5hsgTogy0xFcA7\n6LDL\r\n=uPN+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCi0Pt1bOK5A7bR8JC1+BMu76aIEOWSnawZfbn5c/ltiQIgffAvigoYgjPm1/RNEMQOWjRSW6AY5O23VB5LJvyaKjI="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.8.1_1632320712827_0.7146848551981408"},"_hasShrinkwrap":false},"0.8.2":{"name":"caz","version":"0.8.2","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"lib/index.js","types":"lib/index.d.ts","bin":{"caz":"bin/caz.js"},"scripts":{"lint":"ts-standard","clean":"rimraf lib","compile":"tsc","build":"npm run clean && npm run compile","test":"jest --coverage","prepare":"husky install .github/husky"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest","testTimeout":30000,"collectCoverageFrom":["src/**"]},"renovate":{"extends":["zce"]},"dependencies":{"adm-zip":"0.5.5","cac":"^6.7.3","env-paths":"^2.2.1","fast-glob":"^3.2.7","ini":"^2.0.0","lodash":"^4.17.21","node-fetch":"^2.6.1","ora":"^5.4.1","prompts":"^2.4.1","semver":"^7.3.5","validate-npm-package-name":"^3.0.0"},"devDependencies":{"@commitlint/cli":"13.1.0","@commitlint/config-conventional":"13.1.0","@types/adm-zip":"0.4.34","@types/ini":"1.3.30","@types/jest":"27.0.1","@types/lodash":"4.14.172","@types/node":"16.6.1","@types/node-fetch":"2.5.12","@types/prompts":"2.0.14","@types/semver":"7.3.8","@types/validate-npm-package-name":"3.0.3","husky":"7.0.1","jest":"27.0.6","lint-staged":"11.1.2","rimraf":"3.0.2","ts-jest":"27.0.5","ts-standard":"10.0.0","typescript":"4.3.5"},"engines":{"node":">=12.10"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"c6b37846accd87dded6d9edb45a0f3033bab7866","_id":"caz@0.8.2","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-6cASZxs3b53d1z9rdh3lmhUqy6nQbsGzvyDGDweMvVcF8IMijuLdIAejdrIbRf4CxC1us55x9IgesVMWDiRoGg==","shasum":"bfe500b69903a2840addbfbea8d0dfb1af9dbc1a","tarball":"https://registry.npmjs.org/caz/-/caz-0.8.2.tgz","fileCount":53,"unpackedSize":65268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6WX1CRA9TVsSAnZWagAATz8QAJUBVL+h1igbsPUq2MQQ\nyJaTdJkaQQpCJv19gkGyef62A4i1c7+vz9/x6mahSzPZIKanKZJt52nanG6c\n8EOwAN03xdQTgTTVO2dUOA/uMoMwsVIbcAOMEG594lBp7ZAxqkDx8BRddazQ\n3GTOR7ZEEWTkC2vpw4BjNAduMl6EEzTVBcCdCL3BHzadNQwF5jBlQRxHbnrH\nSR12EyW1O88ro17FcGFtIloly49Qju+DgsfEwk9HcoD1GDy4izZnKLoNm8vH\nekJcmINAk0hssakhHHfUvnShrFD32729GPPg3dtXMljQKZ4Spg7xyjgdEkj/\nYRRyC9Q73B8FmHrYwXsIts+K5n7JghyLhEowZpySsCvlGywmcxjIb5Iind7f\n/ehNkvCGvV74j3gvUbqcRKWCijJc2E38I8/xXuGTiAIIY7dQ4HTikNU+sgys\nLpAWVRLjsgX0G/ryfnBtxxKq9iFqczHkn90DXjIv4Epy6mJGfog8xTYgcR1B\npGnRScfoRZYbTgem+qmbHt40kOWa9NZhp3qqUA3J4DuFjur7fpLX1Kd27ax3\n1bLGGRkMCJ13JphEkbthW4r962CmLcdtJAmXGwdMzKeKNgEuUaWLqaXvceoT\nhVk7qeKEZKEhcY/o5XvmAtBKlbgSE+tznn6ERT5n5FG6AyH4SyvI3agE2y0m\nQwfZ\r\n=F+VU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgrEUeQ+z/SUY7BPbUjdBpxhpCrEVEWsWbqdWveUsAGAiBBNQUzlHP4wmV4v+HaIHq2aE5oto7mTP91XkyCCaJxzg=="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_0.8.2_1642685940902_0.17482917625759842"},"_hasShrinkwrap":false},"1.0.0-alpha.0":{"name":"caz","version":"1.0.0-alpha.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","prepare":"husky install .github/husky","test":"jest --coverage"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"collectCoverageFrom":["src/**"],"moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"preset":"ts-jest/presets/js-with-ts","testEnvironment":"node","testTimeout":20000,"transformIgnorePatterns":["node_modules/(?!(node-fetch|fetch-blob|formdata-polyfill|data-uri-to-buffer|env-paths|ora|cli-cursor|restore-cursor|chalk|log-symbols|is-unicode-supported|is-interactive|strip-ansi|ansi-regex))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/ini":"1.3.31","@types/jest":"27.4.1","@types/lodash":"4.14.180","@types/node":"17.0.21","@types/semver":"7.3.9","@types/validate-npm-package-name":"3.0.3","adm-zip":"0.5.9","cac":"6.7.12","env-paths":"3.0.0","fast-glob":"3.2.11","husky":"7.0.4","ini":"2.0.0","jest":"27.5.1","lint-staged":"12.3.7","lodash":"4.17.21","node-fetch":"3.2.3","ora":"6.1.0","prompts":"2.4.2","semver":"7.3.5","ts-jest":"27.1.3","ts-standard":"11.0.0","tsup":"5.12.1","typescript":"4.6.2","validate-npm-package-name":"3.0.0"},"engines":{"node":">=14.14"},"publishConfig":{"registry":"https://registry.npmjs.org","tag":"next"},"renovate":{"extends":["zce"]},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"splitting":true,"dts":{"resolve":true,"entry":"src/index.ts"}},"gitHead":"bc872b734e83d80a83412c7c934f94def2fc6e0c","readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"Build Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <br>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n    <a href=\"https://david-dm.org/zce/caz\"><img src=\"https://img.shields.io/david/zce/caz\" alt=\"Dependencies Status\"></a>\n    <a href=\"https://david-dm.org/zce/caz?type=dev\"><img src=\"https://img.shields.io/david/dev/zce/caz\" alt=\"DevDependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npm.im/vue-cli) &amp; etc.\n\n- pronounced: [[kæz]](http://dict.youdao.com/dictvoice?audio=caz) 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Easy to use\n- Light-weight\n- Still powerful\n- High efficiency\n- Zero dependencies\n- Template-based\n- Configurable\n- Extensible\n- TypeScript\n- Use modern API\n\n> I'll give you specific reasons later.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n- [Recipes](#recipes)\n  - [GitHub Repo Templates](#github-repo-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [List Available Templates](#list-available-templates)\n  - [Official Templates](#official-templates)\n- [Advanced](#advanced)\n  - [Create Your Template](#create-your-template)\n  - [Configuration](#configuration)\n  - [Create Your Scaffold](#create-your-scaffold)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 14.14 required, >= 16.13 preferred)\n- [npm](https://www.npmjs.com) (>= 7.x) or [pnpm](https://pnpm.io) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.22)\n- [Git](https://git-scm.com) (>= 2.0)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Quick Start\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Recipes\n\n### GitHub Repo Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from `typescript` branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your public GitHub repository.\n\n**Public repository is necessary.**\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### Prompts Override\n\nCAZ allows you to specify prompt response answers through cli parameters.\n\n```shell\n$ caz minima my-project --name my-proj\n```\n\n### Debug Mode\n\n```shell\n$ caz nm my-project --debug\n```\n\n`--debug` parameter will open the debug mode, In debug mode, once an exception occurs, the exception details will be automatically output. This is very helpful in finding errors in the template.\n\n### List Available Templates\n\nShow all available templates\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### Arguments\n\n- `[owner]`: GitHub orgs or user slug, default: `'caz-templates'`\n\n#### Options\n\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n\n### Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - for creating [caz](https://github.com/zce/caz) templates.\n- [nm](https://github.com/caz-templates/nm) - for creating [node](https://nodejs.org) modules.\n- [react](https://github.com/caz-templates/react) - for creating modern [react](https://reactjs.org) app.\n- [vue](https://github.com/caz-templates/vue) - for creating modern [vue.js](https://vuejs.org) app.\n- [vite](https://github.com/caz-templates/vite) - for creating vue.js app powered by [vite](https://github.com/vitejs/vite).\n- [electron](https://github.com/caz-templates/electron) - :construction: for creating [electron](https://electronjs.org) app.\n- [mp](https://github.com/caz-templates/mp) - :construction: for creating wechat [mini-programs](https://developers.weixin.qq.com/miniprogram/dev/framework).\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: for creating [jekyll](https://jekyllrb.com) site.\n- [x-pages](https://github.com/caz-templates/x-pages) - for creating [x-pages](https://github.com/zce/x-pages) static site.\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n## Advanced\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry,\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = main\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/main.zip`.\n\n### Create Your Scaffold\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\nwith ESM and async/await:\n\n```javascript\nimport caz from 'caz'\n\ntry {\n  const template = 'nm'\n  // project path (relative cwd or full path)\n  const project = 'my-project'\n  const options = { force: false, offline: false }\n  // scaffolding by caz...\n  await caz(template, project, options)\n  // success created my-project by nm template\n} catch (e) {\n  // error handling\n  console.error(e)\n}\n```\n\nor with CommonJS and Promise:\n\n```javascript\nconst { default: caz } = require('caz')\n\nconst template = 'nm'\n// project path (relative cwd or full path)\nconst project = 'my-project'\nconst options = { force: false, offline: false }\n// scaffolding by caz...\ncaz(template, project, options)\n  .then(() => {\n    // success created my-project by nm template\n  })\n  .catch(e => {\n    // error handling\n    console.error(e)\n  })\n```\n\nThis means that you can develop your own scaffolding module based on it.\n\nTo create and distribute your own scaffolding tools, please refer to the [How to create scaffolding tools based on CAZ](docs/create-scaffold.md).\n\n<!-- _For more examples, please refer to the [example/usage.ts](example/usage.ts)._ -->\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name\n\n#### project\n\n- Type: `string`\n- Details: project name\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options & prompts override\n- Default: `{}`\n\n##### force\n\nType: `boolean`\nDetails: overwrite if the target exists\nDefault: `false`\n\n##### offline\n\nType: `boolean`\nDetails: try to use an offline template\nDefault: `false`\n\n##### [key: string]\n\nType: `any`\nDetails: cli options to override prompts\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity.\n\nNothing else.\n\n<!-- TODO: Concepts / Recipes / Documentation -->\n\n## About\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n#### Main Workflow\n\nThe [core code](src/init/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\n\nThe following middleware will be executed sequentially.\n\n1. [confirm](src/init/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\n2. [resolve](src/init/resolve.ts) - Resolve template from remote or local.\n3. [load](src/init/load.ts) - Load template config by require.\n4. [inquire](src/init/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\n5. [setup](src/init/setup.ts) - Apply template setup hook.\n6. [prepare](src/init/prepare.ts) - Prepare all template files.\n7. [rename](src/init/rename.ts) - Rename file if necessary.\n8. [render](src/init/render.ts) - Render file if template.\n9. [emit](src/init/emit.ts) - Emit files to destination.\n10. [install](src/init/install.ts) - Execute `npm | yarn | pnpm install` command.\n11. [init](src/init/init.ts) - Execute `git init && git add && git commit` command.\n12. [complete](src/init/complete.ts) - Apply template complete hook.\n\n### Built With\n\n- [adm-zip](https://github.com/cthackers/adm-zip) - A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] config command\n- [ ] cache command\n- [ ] all lifecycle hooks\n- [ ] console output (colorful & verbose)\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","_id":"caz@1.0.0-alpha.0","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-pk0eW49dPIo6F1zgf9qcVJSAEO0y32mTzyla7pxJPMoTChkdcTC0i8zgUh8jHFtBSzT1sygLVbVMjuW/2ItzxQ==","shasum":"eebb1e0ec64607524c6938d740aef1234017a245","tarball":"https://registry.npmjs.org/caz/-/caz-1.0.0-alpha.0.tgz","fileCount":10,"unpackedSize":1266869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOawtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp76g//aLelR2XQ1d/1cFI/tuJLgG5fo385HJqBO2CiOLSVycgO6KMX\r\n11FcZgIS4MR99BjLKcGyHkpta3gnmva+6F0acxEm+ORjhp81sRFmUmDRZLtg\r\nyMqtjiWRq80lfTLzQ7EKFaNiPhZiehkhri2zxygKGI6boR1QZgDxPqmglgsL\r\nyVT4ryPDA4/wbbIMLslq1xiykh4jTFQmV8v1lX/CuWemYBM/X0pCU/LmbrFe\r\nDnl21QAisVEDGD+vo9xDcrryMqVjNaegUeWFBstjXwduLGjwEqG+hfGOLeRu\r\nkLB4tXrVw+qd6pFbPLCnQsj9vlWtncMx0D5V/YGNtdNrVoUhUY+gzcDwZbNl\r\nebzAExBY7zaFH8/+ZfiUKnGiYzAAhFbDAPH8hyM2wlhsE3O0q+POUTeCDOa8\r\n+gZrTbDV8t3n1WQE9JOTF4drVZfhQgfOfe26ijFHfCL6Erz15WvFwwnye1hJ\r\nJM8u8vZX/EHzcPqB3+/6pp9UGgydeU1SRek2k1e8NLK/KuqWQRWDyKiQrrGr\r\nl+JpaxT1QnE0HrNv33wUibw2//4GMIVCSEmSekAOTbPFpRLXZUr7So7tkexE\r\nZxFgvGRbFHrm/wFSURCprARd5GCboEAZ6N7gwnMBL5oag0KQPDYjFQlSemm8\r\nJyLk6xA+L28Tk3YveqYbR8jyANk83+80z2g=\r\n=OehM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdJ1RuC6hO1jO7lUb4CLDJrVOttq4MLoRdeSE07AlmoAiBZAaXAwfqzZdEF+VF1X4ofOjgtV9JbDaVuLJPwigru2g=="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_1.0.0-alpha.0_1647946797294_0.09711575520644233"},"_hasShrinkwrap":false},"1.0.0-alpha.1":{"name":"caz","version":"1.0.0-alpha.1","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"jest --coverage","prepare":"husky install .github/husky"},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest/presets/js-with-ts","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**"],"moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"transformIgnorePatterns":["node_modules/(?!(node-fetch|fetch-blob|formdata-polyfill|data-uri-to-buffer|env-paths|ora|cli-cursor|restore-cursor|chalk|log-symbols|is-unicode-supported|is-interactive|strip-ansi|ansi-regex))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/ini":"1.3.31","@types/jest":"27.4.1","@types/lodash":"4.14.180","@types/node":"17.0.22","@types/semver":"7.3.9","@types/validate-npm-package-name":"3.0.3","adm-zip":"0.5.9","cac":"6.7.12","env-paths":"3.0.0","fast-glob":"3.2.11","husky":"7.0.4","ini":"2.0.0","jest":"27.5.1","lint-staged":"12.3.7","lodash":"4.17.21","node-fetch":"3.2.3","ora":"6.1.0","prompts":"2.4.2","semver":"7.3.5","ts-jest":"27.1.3","ts-standard":"11.0.0","tsup":"5.12.1","typescript":"4.6.2","validate-npm-package-name":"3.0.0"},"engines":{"node":">=14.14"},"publishConfig":{"registry":"https://registry.npmjs.org","tag":"next"},"renovate":{"extends":["zce"]},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"resolve":true,"entry":"src/index.ts"}},"gitHead":"481922158582775be9e36ea46f3ea015ea8d841c","readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"Build Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <br>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo size\"></a>\n  </p>\n</div>\n\n<br>\n\n**English** | [简体中文](README.zh-CN.md)\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npm.im/vue-cli) &amp; etc.\n\n- pronounced: [[kæz]](http://dict.youdao.com/dictvoice?audio=caz) 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Easy to use\n- Light-weight\n- Still powerful\n- High efficiency\n- Zero dependencies\n- Template-based\n- Configurable\n- Extensible\n- TypeScript\n- Use modern API\n\n> I'll give you specific reasons later.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n- [Recipes](#recipes)\n  - [GitHub Repo Templates](#github-repo-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [Prompts Override](#prompts-override)\n  - [Debug Mode](#debug-mode)\n  - [List Available Templates](#list-available-templates)\n- [Official Templates](#official-templates)\n- [Advanced](#advanced)\n  - [Configuration](#configuration)\n  - [Create Your Template](#create-your-template)\n  - [Create Your Scaffold](#create-your-scaffold)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 14.14 required, >= 16.13 preferred)\n- [npm](https://www.npmjs.com) (>= 7.x) or [pnpm](https://pnpm.io) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.22)\n- [Git](https://git-scm.com) (>= 2.0)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Quick Start\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Recipes\n\n### GitHub Repo Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from `typescript` branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your public GitHub repository.\n\n**Public repository is necessary.**\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### Prompts Override\n\nCAZ allows you to specify prompt response answers through cli parameters.\n\n```shell\n$ caz minima my-project --name my-proj\n```\n\nBy running this command, you don't have to answer the next `name` prompts.\n\n### Debug Mode\n\n```shell\n$ caz nm my-project --debug\n```\n\n`--debug` parameter will open the debug mode.\n\nIn debug mode, once an exception occurs, the exception details will be automatically output. This is very helpful in finding errors in the template.\n\n### List Available Templates\n\nShow all available templates:\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### Arguments\n\n- `[owner]`: GitHub orgs or user slug, default: `'caz-templates'`\n\n#### Options\n\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n\n## Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - for creating [caz](https://github.com/zce/caz) templates.\n- [nm](https://github.com/caz-templates/nm) - for creating [node](https://nodejs.org) modules.\n- [vercel](https://github.com/caz-templates/vercel) - for creating [vercel](https://vercel.com) apps.\n- [react](https://github.com/caz-templates/react) - for creating modern [react](https://reactjs.org) apps.\n- [vue](https://github.com/caz-templates/vue) - for creating modern [vue.js](https://vuejs.org) apps.\n- [vite](https://github.com/caz-templates/vite) - for creating vue.js apps powered by [vite](https://github.com/vitejs/vite).\n- [electron](https://github.com/caz-templates/electron) - :construction: for creating [electron](https://electronjs.org) apps.\n- [mp](https://github.com/caz-templates/mp) - :construction: for creating wechat [mini-programs](https://developers.weixin.qq.com/miniprogram/dev/framework).\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: for creating [jekyll](https://jekyllrb.com) site.\n- [x-pages](https://github.com/caz-templates/x-pages) - for creating [x-pages](https://github.com/zce/x-pages) static site.\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n**All templates are currently hosted on GitHub, Chinese users can [use the mirror](#mirror-for-chinese) on coding.net.**\n\n## Advanced\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = main\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/main.zip`.\n\n#### Mirror for Chinese\n\nDue to network limitations, the template download may time out, you can consider using the mirror repository I configured on [coding.net](https://coding.net).\n\n`~/.cazrc`:\n\n```ini\nregistry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}\nofficial = caz\n```\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Create Your Scaffold\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\nwith ESM and async/await:\n\n```javascript\nimport caz from 'caz'\n\ntry {\n  const template = 'nm'\n  // project path (relative cwd or full path)\n  const project = 'my-project'\n  const options = { force: false, offline: false }\n  // scaffolding by caz...\n  await caz(template, project, options)\n  // success created my-project by nm template\n} catch (e) {\n  // error handling\n  console.error(e)\n}\n```\n\nor with CommonJS and Promise:\n\n```javascript\nconst { default: caz } = require('caz')\n\nconst template = 'nm'\n// project path (relative cwd or full path)\nconst project = 'my-project'\nconst options = { force: false, offline: false }\n// scaffolding by caz...\ncaz(template, project, options)\n  .then(() => {\n    // success created my-project by nm template\n  })\n  .catch(e => {\n    // error handling\n    console.error(e)\n  })\n```\n\nThis means that you can develop your own scaffolding module based on it.\n\nTo create and distribute your own scaffolding tools, please refer to the [How to create scaffolding tools based on CAZ](docs/create-scaffold.md).\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name, it can also be a template folder path\n\n#### project\n\n- Type: `string`\n- Details: project name, it can also be a project folder path\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options & prompts override\n- Default: `{}`\n\n##### force\n\n- Type: `boolean`\n- Details: overwrite if the target exists\n- Default: `false`\n\n##### offline\n\n- Type: `boolean`\n- Details: try to use an offline template\n- Default: `false`\n\n##### [key: string]\n\n- Type: `any`\n- Details: cli options to override prompts\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity. The existing tools have more or less certain limitations because of their different starting points.\n\nNothing else.\n\n## Concepts\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n#### Main Workflow\n\nThe [core code](src/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\n\nThe following middleware will be executed sequentially.\n\n1. [confirm](src/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\n2. [resolve](src/resolve.ts) - Resolve template from remote or local filesystem.\n3. [load](src/load.ts) - Install template dependencies, load template config by `require`.\n4. [inquire](src/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\n5. [setup](src/setup.ts) - Only apply template setup hook function.\n6. [prepare](src/prepare.ts) - Filter out unnecessary files and prepare all files to be generated.\n7. [rename](src/rename.ts) - Rename each file if the filename contains interpolations.\n8. [render](src/render.ts) - Render the contents of each file if template.\n9. [emit](src/emit.ts) - Emit files to destination.\n10. [install](src/install.ts) - Execute `npm | yarn | pnpm install` command if necessary.\n11. [init](src/init.ts) - Execute `git init && git add && git commit` command if necessary.\n12. [complete](src/complete.ts) - Only apply template complete hook function.\n\n### Built With\n\n- [adm-zip](https://github.com/cthackers/adm-zip) - A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] config command\n- [ ] cache command\n- [ ] all lifecycle hooks\n- [ ] console output (colorful & verbose)\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","_id":"caz@1.0.0-alpha.1","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-l/obKdf5rptj4iI5i5P3LhaQQX1iW/7ujPY1vIvrWLnJuLf+qyBY38lh13j5wzFRy8KLDhAhDVE7JPpFLxmgUg==","shasum":"b07ed0531ed1b95640bac0774858c5370921d72b","tarball":"https://registry.npmjs.org/caz/-/caz-1.0.0-alpha.1.tgz","fileCount":11,"unpackedSize":602865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPAD/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYMg//Ug/BTJyoaQRuw8OIonYHMCYXNqEGsgBDbv/i2rj8cYOk2Va6\r\ne6yliGaZxEXDw5adWQKAXbbgUD2E3+0LKDjxDDWoppOa557+v2pCfpxZ8HYs\r\naetrFvhdlw7h35GIUkDemBC4ggh7ZFxXDYzHXfBTsut2kJx5k29KqVRBRWHD\r\nPn9lLxo92l3pyYLPqe6PsywHHaNhUAdDchEZdMXxLws0scDT4EEOkFF6fqkb\r\nNprd/GEti/XCHHpgsKqgkJNZQEUn/NibANlIUv3Hvc6V5ANmXoZVvK/9lbqY\r\n8Eq4fHfrwYEFbpS1lLwYdvDXbFE26iSTOVzq8cQu6D7XMK2K6anTyrWE3M5N\r\nMcAOzjxaTvUdhzXs+vYwGLRKaUYAXMvx9b5DBjMdwSRnZhv+3tiNo8TqP9rA\r\nLxlZYqiwInGUZGA4m739F6ME3q68h/EiyPWfs7ka7aoD7/pCQ4ZZPYPEYa/F\r\n3Adl8uCyiFEG1XcabnTbzUOUh1DhAjc7c6CylbUnqLy4LVbC0ewLk3w6kwKN\r\nt77iOzw7TBvj3RmoasxlYzVQ/n5Hpx7Ya5pWq1tdnEv1SvfNd8lh0e3dZGPl\r\nNoGlrsLtlCIgTqMOAQpyAOiwpEfFVKXxXpPpHyDNCPdnpoZMjkEzhmrPQ8/H\r\nua/pHrHAl7fmBj7LO4+0emNxP5wPG6Qh948=\r\n=FzI8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7y2OdOIk0K1oL5z2uSqK9tuP7Ejb2qTw4LULrMF75EwIhAN6cO6mTw0rS813GmuR+xv+lma2o6Fj23FgtFLMpBBrW"}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_1.0.0-alpha.1_1648099583007_0.7698881565807576"},"_hasShrinkwrap":false},"1.0.0-alpha.2":{"name":"caz","version":"1.0.0-alpha.2","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"jest --coverage","prepare":"husky install .github/husky"},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"resolve":true,"entry":"src/index.ts","banner":"/// <reference path=\"../types.d.ts\" />"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest/presets/js-with-ts","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**"],"moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"transformIgnorePatterns":["node_modules/(?!(node-fetch|fetch-blob|formdata-polyfill|data-uri-to-buffer|env-paths|ora|cli-cursor|restore-cursor|chalk|log-symbols|is-unicode-supported|is-interactive|strip-ansi|ansi-regex))"]},"renovate":{"extends":["zce"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/ini":"1.3.31","@types/jest":"27.4.1","@types/lodash":"4.14.180","@types/node":"17.0.23","@types/semver":"7.3.9","@types/validate-npm-package-name":"3.0.3","adm-zip":"0.5.9","cac":"6.7.12","env-paths":"3.0.0","fast-glob":"3.2.11","husky":"7.0.4","ini":"2.0.0","jest":"27.5.1","lint-staged":"12.3.7","lodash":"4.17.21","node-fetch":"3.2.3","ora":"6.1.0","prompts":"2.4.2","semver":"7.3.5","ts-jest":"27.1.3","ts-standard":"11.0.0","tsup":"5.12.1","typescript":"4.6.2","validate-npm-package-name":"3.0.0"},"engines":{"node":">=14.14"},"publishConfig":{"registry":"https://registry.npmjs.org","tag":"next"},"gitHead":"9a720b352b0bb7329b0fb21c2bee99927dac5aad","readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"https://user-images.githubusercontent.com/6166576/88473000-af5fa800-cf4b-11ea-8ce4-59f1b1f09efe.png\" alt=\"CAZ\"></a>\n  <p align=\"center\">A simple yet powerful template-based Scaffolding tools for my personal productivity.</p>\n  <p align=\"center\">\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/workflow/status/zce/caz/CI\" alt=\"Build Status\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"Coverage Status\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"License\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM Version\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node Version\"></a>\n    <br>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"Code Style\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"Install Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"Repo Size\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/librariesio/github/zce/caz\" alt=\"Dependencies Status\"></a>\n  </p>\n</div>\n\n<br>\n\n**English** | [简体中文](README.zh-CN.md)\n\n## Introduction\n\nCAZ (**C**reate **A**pp **Z**en)\n\nIt's a a simple template-based Scaffolding tools for my personal productivity, inspired by [Yeoman](https://yeoman.io) &amp; [Vue CLI 2](https://npm.im/vue-cli) &amp; etc.\n\n- pronounced: [[kæz]](http://dict.youdao.com/dictvoice?audio=caz) 📷 ✌\n- written: CAZ / caz\n\n_For more introduction, please refer to the [How it works](#how-it-works)._\n\n### Features\n\n- Easy to use\n- Light-weight\n- Still powerful\n- High efficiency\n- Zero dependencies\n- Template-based\n- Configurable\n- Extensible\n- TypeScript\n- Use modern API\n\n> I'll give you specific reasons later.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Features](#features)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n- [Recipes](#recipes)\n  - [GitHub Repo Templates](#github-repo-templates)\n  - [Local Templates](#local-templates)\n  - [Remote ZIP Templates](#remote-zip-templates)\n  - [Offline Mode](#offline-mode)\n  - [Prompts Override](#prompts-override)\n  - [Debug Mode](#debug-mode)\n  - [List Available Templates](#list-available-templates)\n- [Official Templates](#official-templates)\n- [Advanced](#advanced)\n  - [Configuration](#configuration)\n  - [Create Your Template](#create-your-template)\n  - [Create Your Scaffold](#create-your-scaffold)\n- [References](#references)\n- [Motivation](#motivation)\n- [About](#about)\n  - [How It Works](#how-it-works)\n  - [Built With](#built-with)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org) (>= 14.14 required, >= 16.13 preferred)\n- [npm](https://www.npmjs.com) (>= 7.x) or [pnpm](https://pnpm.io) (>= 6.x) or [yarn](https://yarnpkg.com) (>= 1.22)\n- [Git](https://git-scm.com) (>= 2.0)\n\n### Installation\n\n```shell\n# install it globally\n$ npm install -g caz\n\n# or yarn\n$ yarn global add caz\n```\n\n### Quick Start\n\nCreate new project from a template.\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# caz with an official template\n$ caz <template> [project]\n\n# caz with a github repo\n$ caz <owner>/<repo> [project]\n```\n\nIf you only use it occasionally, I recommend that you use `npx` to run `caz` directly.\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### Options\n\n- `-f, --force`: Overwrite if the target exists\n- `-o, --offline`: Try to use an offline template\n\n## Recipes\n\n### GitHub Repo Templates\n\n```shell\n$ caz nm my-project\n```\n\nThe above command pulls the template from [caz-templates/nm](https://github.com/caz-templates/nm), then prompts for some information according to the configuration of this template, and generate the project at `./my-project`.\n\n```shell\n$ caz nm#typescript my-project\n```\n\nBy running this command, CAZ will pulls the template from `typescript` branch of [caz-templates/nm](https://github.com/caz-templates/nm).\n\n#### Use Custom templates\n\n```shell\n$ caz zce/nm my-project\n```\n\nThe above command pulls the template from [zce/nm](https://github.com/zce/nm). This means that you can also pull templates from your public GitHub repository.\n\n**Public repository is necessary.**\n\n### Local Templates\n\nInstead of a GitHub repo, you can also use a template on your local file system.\n\ne.g.\n\n```shell\n$ caz ~/local/template my-project\n```\n\nThe above command use the template from `~/local/template`.\n\n### Remote ZIP Templates\n\nInstead of a GitHub repo, you can also use a template with a zip file uri.\n\ne.g.\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\nThe above command will download & extract template from `https://cdn.zce.me/boilerplate.zip`.\n\n### Offline Mode\n\n```shell\n$ caz nm my-project --offline\n```\n\nBy running this command, CAZ will try to find a cached version of `nm` template or download from GitHub if it's not yet cached.\n\n### Prompts Override\n\nCAZ allows you to specify prompt response answers through cli parameters.\n\n```shell\n$ caz minima my-project --name my-proj\n```\n\nBy running this command, you don't have to answer the next `name` prompts.\n\n### Debug Mode\n\n```shell\n$ caz nm my-project --debug\n```\n\n`--debug` parameter will open the debug mode.\n\nIn debug mode, once an exception occurs, the exception details will be automatically output. This is very helpful in finding errors in the template.\n\n### List Available Templates\n\nShow all available templates:\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### Arguments\n\n- `[owner]`: GitHub orgs or user slug, default: `'caz-templates'`\n\n#### Options\n\n- `-j, --json`: Output with json format\n- `-s, --short`: Output with short format\n\n## Official Templates\n\nCurrent available templates list:\n\n- [template](https://github.com/caz-templates/template) - for creating [caz](https://github.com/zce/caz) templates.\n- [nm](https://github.com/caz-templates/nm) - for creating [node](https://nodejs.org) modules.\n- [vercel](https://github.com/caz-templates/vercel) - for creating [vercel](https://vercel.com) apps.\n- [react](https://github.com/caz-templates/react) - for creating modern [react](https://reactjs.org) apps.\n- [vue](https://github.com/caz-templates/vue) - for creating modern [vue.js](https://vuejs.org) apps.\n- [vite](https://github.com/caz-templates/vite) - for creating vue.js apps powered by [vite](https://github.com/vitejs/vite).\n- [electron](https://github.com/caz-templates/electron) - :construction: for creating [electron](https://electronjs.org) apps.\n- [mp](https://github.com/caz-templates/mp) - :construction: for creating wechat [mini-programs](https://developers.weixin.qq.com/miniprogram/dev/framework).\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: for creating [jekyll](https://jekyllrb.com) site.\n- [x-pages](https://github.com/caz-templates/x-pages) - for creating [x-pages](https://github.com/zce/x-pages) static site.\n\nMaybe more: https://github.com/caz-templates\n\n> You can also run `$ caz list` to see all available official templates in real time.\n\n**All templates are currently hosted on GitHub, Chinese users can [use the mirror](#mirror-for-chinese) on coding.net.**\n\n## Advanced\n\n### Configuration\n\nCAZ will read the configuration file in `~/.cazrc`, default config:\n\n```ini\n; template download registry\n; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; template offlicial organization name\nofficial = caz-templates\n; default template branch name\nbranch = master\n```\n\nThis means that you can customize the configuration by modifying the configuration file.\n\nFor example, in your `~/.cazrc`:\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = main\n```\n\nThen run the following command:\n\n```shell\n$ caz nm my-project\n```\n\nThe above command will download & extract template from `https://gitlab.com/faker/nm/archive/main.zip`.\n\n#### Mirror for Chinese\n\nDue to network limitations, the template download may time out, you can consider using the mirror repository I configured on [coding.net](https://coding.net).\n\n`~/.cazrc`:\n\n```ini\nregistry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}\nofficial = caz\n```\n\n### Create Your Template\n\n```shell\n$ caz template my-template\n```\n\nThe above command will pulls the template from [caz-templates/template](https://github.com/caz-templates/template), and help you create your own CAZ template.\n\nTo create and distribute your own template, please refer to the [How to create template](docs/create-template.md).\n\n> Maybe fork an official template is also a good decision.\n\n### Create Your Scaffold\n\n```shell\n# install it locally\n$ npm install caz\n\n# or yarn\n$ yarn add caz\n```\n\nwith ESM and async/await:\n\n```javascript\nimport caz from 'caz'\n\ntry {\n  const template = 'nm'\n  // project path (relative cwd or full path)\n  const project = 'my-project'\n  const options = { force: false, offline: false }\n  // scaffolding by caz...\n  await caz(template, project, options)\n  // success created my-project by nm template\n} catch (e) {\n  // error handling\n  console.error(e)\n}\n```\n\nor with CommonJS and Promise:\n\n```javascript\nconst { default: caz } = require('caz')\n\nconst template = 'nm'\n// project path (relative cwd or full path)\nconst project = 'my-project'\nconst options = { force: false, offline: false }\n// scaffolding by caz...\ncaz(template, project, options)\n  .then(() => {\n    // success created my-project by nm template\n  })\n  .catch(e => {\n    // error handling\n    console.error(e)\n  })\n```\n\nThis means that you can develop your own scaffolding module based on it.\n\nTo create and distribute your own scaffolding tools, please refer to the [How to create scaffolding tools based on CAZ](docs/create-scaffold.md).\n\n## References\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\nCreate new project from a template\n\n#### template\n\n- Type: `string`\n- Details: template name, it can also be a template folder path\n\n#### project\n\n- Type: `string`\n- Details: project name, it can also be a project folder path\n- Default: `'.'`\n\n#### options\n\n- Type: `object`\n- Details: options & prompts override\n- Default: `{}`\n\n##### force\n\n- Type: `boolean`\n- Details: overwrite if the target exists\n- Default: `false`\n\n##### offline\n\n- Type: `boolean`\n- Details: try to use an offline template\n- Default: `false`\n\n##### [key: string]\n\n- Type: `any`\n- Details: cli options to override prompts\n\n## Motivation\n\n👉 🛠 ⚙\n\nJoking: I want to make wheels ;P\n\nThe real reason is that I think I need a scaffolding tool that is more suitable for my personal productivity. The existing tools have more or less certain limitations because of their different starting points.\n\nNothing else.\n\n## Concepts\n\n### How It Works\n\n![Scaffolding flow](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. The picture is from the Internet, but I have forgotten the specific source, sorry to the author.\n\n#### Main Workflow\n\nThe [core code](src/index.ts) is based on the middleware mechanism provided by [zce/mwa](https://github.com/zce/mwa).\n\nThe following middleware will be executed sequentially.\n\n1. [confirm](src/confirm.ts) - Confirm destination by [prompts](https://github.com/terkelg/prompts).\n2. [resolve](src/resolve.ts) - Resolve template from remote or local filesystem.\n3. [load](src/load.ts) - Install template dependencies, load template config by `require`.\n4. [inquire](src/inquire.ts) - Inquire template prompts by [prompts](https://github.com/terkelg/prompts).\n5. [setup](src/setup.ts) - Only apply template setup hook function.\n6. [prepare](src/prepare.ts) - Filter out unnecessary files and prepare all files to be generated.\n7. [rename](src/rename.ts) - Rename each file if the filename contains interpolations.\n8. [render](src/render.ts) - Render the contents of each file if template.\n9. [emit](src/emit.ts) - Emit files to destination.\n10. [install](src/install.ts) - Execute `npm | yarn | pnpm install` command if necessary.\n11. [init](src/init.ts) - Execute `git init && git add && git commit` command if necessary.\n12. [complete](src/complete.ts) - Only apply template complete hook function.\n\n### Built With\n\n- [adm-zip](https://github.com/cthackers/adm-zip) - A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk\n- [cac](https://github.com/cacjs/cac) - Simple yet powerful framework for building command-line apps.\n- [env-paths](https://github.com/sindresorhus/env-paths) - Get paths for storing things like data, config, cache, etc\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - It's a very fast and efficient glob library for Node.js\n- [ini](https://github.com/npm/ini) - An ini encoder/decoder for node\n- [lodash](https://github.com/lodash/lodash) - Lodash modular utilities.\n- [node-fetch](https://github.com/node-fetch/node-fetch) - A light-weight module that brings Fetch API to node.js\n- [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner\n- [prompts](https://github.com/terkelg/promptss) - Lightweight, beautiful and user-friendly prompts\n- [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - Give me a string and I'll tell you if it's a valid npm package name\n\n## Roadmap\n\nThe following are the features I want to achieve or are under development:\n\n- [ ] config command\n- [ ] cache command\n- [ ] all lifecycle hooks\n- [ ] console output (colorful & verbose)\n- [ ] more and more official templates\n\nSee the [open issues](https://github.com/zce/caz/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\n1. **Fork** it on GitHub!\n2. **Clone** the fork to your own machine.\n3. **Checkout** your feature branch: `git checkout -b my-awesome-feature`\n4. **Commit** your changes to your own branch: `git commit -am 'Add some feature'`\n5. **Push** your work back up to your fork: `git push -u origin my-awesome-feature`\n6. Submit a **Pull Request** so that we can review your changes.\n\n> **NOTE**: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information. &copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.md","_id":"caz@1.0.0-alpha.2","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-v0bCDpaop6B7KVldLv8d+sOcjybejQCg4G+gu4BSJSjtXYH6S6Z9bgyKsDBVtz7UvnE5TDwWBQRC1DWju29osw==","shasum":"39d6d00fef67874274b7d3e6ae55974bbd05babc","tarball":"https://registry.npmjs.org/caz/-/caz-1.0.0-alpha.2.tgz","fileCount":11,"unpackedSize":603223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPEetACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJ1w//atyX3Ia2xYKC2G4oB34ex6cfIYg9I1/AnyEWYii5gsU9LeIh\r\ncSOEpG+eauD0+69ZRa9KxnU8tZkFstwuTYKZaD5mfEx/jo0jPADEMJTLsZpF\r\nvw/qDJprLE4ntKKo3ztH0v27hXqnAcG8FNAb1W8Qe+AJaTvEd/Bh6Kw9sVGO\r\n22OLGfQI0eOXyX54MGkl1uT/Ney1PbIARG0bGk1estwWfCccYVOc7pVTRkXY\r\nwbHM2vw9ZM6ZqjR2nhr6Ddksp14c/flK81ZpgXVL+I9rJGj+2HNko5vcwale\r\nNBwDUy65kNKhp4MDGiKg2Vq219rSMM/bXl/2acfEYYGamB2PBsCqW3UgSA+U\r\nKCG5P2cWdfHcPHT3lN11CR401uGRCbHpmme3OJ4B0wPt6ND3SYf0BghBEWfg\r\nyUAYDUvPfuLQv6OB54hAnIE2camtN5RJsTx9BJOyJkqiNRzMEX0Kmfc+cTym\r\nSN3zwHCINuaFZ5L/ashSJQde64gTdjjpgeCJb2z0vNyeF0lILZCPAOrnZjwz\r\nK3c05mdW5QDmOv8uu7wpM+5IYPmonIWxeHsjCEyTmprj7fN/iJPaGtT327Ex\r\nL6F98zwXzFBeSeb6uhCc+POkt0L0cVvuExKMKH2ggRrppngXTnyY4ha6Ue1C\r\nEursNFDakbaucnczVuER+RtpOctv8KBzYzE=\r\n=RMJk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBL2trBaf9O9oNYwQ4pOybrifk7pnku8DugH1DyDJfWuAiEAopZgs7zzxDOBHspNGexY17oTWzKcqc3fH4T0FLiEmBE="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_1.0.0-alpha.2_1648117677007_0.2340191967267209"},"_hasShrinkwrap":false},"1.0.0":{"name":"caz","version":"1.0.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"jest --coverage","prepare":"husky install .github/husky"},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"resolve":true,"entry":"src/index.ts","banner":"/// <reference path=\"../types.d.ts\" />"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest/presets/js-with-ts","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**"],"moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"transformIgnorePatterns":["node_modules/(?!(node-fetch|fetch-blob|formdata-polyfill|data-uri-to-buffer|env-paths|ora|cli-cursor|restore-cursor|chalk|log-symbols|is-unicode-supported|is-interactive|strip-ansi|ansi-regex))"]},"renovate":{"extends":["zce"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/ini":"1.3.31","@types/jest":"27.4.1","@types/lodash":"4.14.180","@types/node":"17.0.23","@types/semver":"7.3.9","@types/validate-npm-package-name":"3.0.3","adm-zip":"0.5.9","cac":"6.7.12","env-paths":"3.0.0","fast-glob":"3.2.11","husky":"7.0.4","ini":"2.0.0","jest":"27.5.1","lint-staged":"12.3.7","lodash":"4.17.21","node-fetch":"3.2.3","ora":"6.1.0","prompts":"2.4.2","semver":"7.3.5","ts-jest":"27.1.3","ts-standard":"11.0.0","tsup":"5.12.1","typescript":"4.6.2","validate-npm-package-name":"3.0.0"},"engines":{"node":">=14.14"},"publishConfig":{"registry":"https://registry.npmjs.org"},"gitHead":"79c085cd16eef1c26dd61dbb308e0a540ba2b29b","_id":"caz@1.0.0","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-wQqITh0ujoxUouxof8CDfDsteF4OfrefJ2mRyCeCxRmBEglwwEtzbiWSjZxln+ptL2Ht2aq7WE6cbDFPCHnAfw==","shasum":"45831b267d3a1b14234a4b47f32aca5e256d3232","tarball":"https://registry.npmjs.org/caz/-/caz-1.0.0.tgz","fileCount":11,"unpackedSize":603188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPEplACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoAgg//VFHf3UyTieHEO/EfmyPCP8Jpdp2g0yxsZjZOgRrkXuWbKyuK\r\ncbiZzGzgpeS2aoJmhbiI6iIJML+mxF0FSVNckntQ4Qjwowe6C+rwkTFnqSGq\r\nNbSFhaxe36CMIfMQriuT6tov6HBWHk6qtWGOhK4QzBXNEzTfV31LPWtO274b\r\np7u8F1UoEoiD2boa5Rx0RpKkor/UHiZCVFFF6QZN6kYUo8KiMSTtUmLF2paO\r\ndT9QIbvhkiPVDaQsCA+KVLCQBMT4Ti5CfJHmfGe85ec0AmNFUSYgd7trAHEy\r\nUIqFJAQ41QkhbzNm1RtRIzYioJvnRg6u+s40pBT1sTtPWOlY2Kawcn6+sJ9Y\r\nHBu4NqDWvto9o7yWhiNCzcJI4sg0R6o2GxpNccpqobmNOmW7k8rTRbQlT4Tq\r\nwak64eet4XE4aMH/ApbRqI7s0ECkBHxNlT0V4AqyWMI9JL+eJZsGnHA9czYx\r\nI9qCY005w7BBqGV5H+C3weSH5VCR2uKWDGWolcVZVJ+THxfRmO8l9cCsBTQ7\r\nFVkTynrCWoTQ1DFxfvGOYPH/5/5CvrUkdDNT7GOrxXlzXHP5ZGSZ/ayAWDzy\r\nQ5BAF4QrZRLX7TMzvzIQmPlxla10NVxzjJncMps1g2H5RBh67B8fFNbLX3w2\r\nt/5O5+bwPU+0OvCUlAB7AInVTanX9bu4qI0=\r\n=Xd5v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbTpZxYl+5OLYQKEoq4A0KhYNhRqIcSb298P4BWV2atAiEA607iSmbiOcH/bnvhBcqHNzlu6ugrc4g9qUNsZ6sceA8="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_1.0.0_1648118373413_0.046521773153224366"},"_hasShrinkwrap":false},"1.1.0":{"name":"caz","version":"1.1.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"jest --coverage","prepare":"husky install .github/husky"},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"resolve":true,"entry":"src/index.ts"}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"jest":{"preset":"ts-jest/presets/js-with-ts","testTimeout":20000,"testEnvironment":"node","collectCoverageFrom":["src/**"],"moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"transformIgnorePatterns":["node_modules/(?!(node-fetch|fetch-blob|formdata-polyfill|data-uri-to-buffer|env-paths|ora|cli-cursor|restore-cursor|chalk|log-symbols|is-unicode-supported|is-interactive|strip-ansi|ansi-regex))"]},"renovate":{"extends":["zce"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/adm-zip":"0.5.0","@types/ini":"1.3.31","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"17.0.23","@types/prompts":"2.0.14","@types/semver":"7.3.9","@types/validate-npm-package-name":"3.0.3","adm-zip":"0.5.9","cac":"6.7.12","env-paths":"3.0.0","fast-glob":"3.2.11","husky":"7.0.4","ini":"3.0.0","jest":"27.5.1","lint-staged":"12.3.8","lodash":"4.17.21","node-fetch":"3.2.3","ora":"6.1.0","prompts":"2.4.2","semver":"7.3.7","socks-proxy-agent":"6.2.0","ts-jest":"27.1.4","ts-standard":"11.0.0","tsup":"5.12.5","typescript":"4.6.3","validate-npm-package-name":"4.0.0"},"engines":{"node":">=14.14"},"gitHead":"75889bf0a7bd26b9d0ec5cc36f5f596d1b2b72a3","_id":"caz@1.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-vEqHeZlS2qsXR87nsWl9iweZ5mFwqrUlLpDwsJtmDtZISIvLhr2htYmN6ZEYcaQD5hsDen9c07sHHoAv8GWr8Q==","shasum":"0d56e979e228fbc2b082b489caba7c81b318ff6b","tarball":"https://registry.npmjs.org/caz/-/caz-1.1.0.tgz","fileCount":10,"unpackedSize":651036,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfDuog7Aa5ekNaZKXCxi8Qn1HACYZFi01FgEbH1WE7DAiBGFr4OSai016fWPTpsHaqTVS+AtHrZUWSPGcaMFwjArg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXjr0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJbg/9EbRRlu/V+K9WxSvMAuSiIDmjMBCpV6YKH8qByW8BsXIQbXf+\r\nStPwZXA7n4goZNIkmIzxWBP51970EQS2o2SwsArTcd0e9IBQTe68YY0CquSY\r\n2KaI0Pe3iB3UMRLq/dTpdQ83cDhRgoo6w6PtYGLc8Soo0eeOUdK14/IHl8qG\r\nThe2WEgemO7YwHYrMdR0ukEShKZ8Egpvc9KOK0FzhgxdrItuBHYci/mtziGX\r\nvLc2crYqrSTvzDcAQvhYCGnTG47CtGiMbySI52wVocobUADIUfypoLlKHhol\r\nJXKTuVzsodjjw1FnabyANcXzUgosbhurOqJ9xrTsWfxxfDr87nWh9a4pF7s0\r\nWwYdxfWtYcMQZni8rC7QLzmrONDdnEcAsJly3WJhFLP/wFdOiJDSn8ets+lR\r\nibnkz8uQjbJ3fdrtg2u/KUu0aF73CgHpYAF7n7gyyNajxe7xf6CQoo6TSUaR\r\nJit5wBIrj9tvp/5Eo0FOnP9Bj0h9sJaaWb5sNigkoaFOOyLEP50QVWfczoml\r\nU/rW17z0b0WzCElkALbZ5HdoglE2P/RaIbR20nANiwdmVY+4ilZWBSCD0Wx8\r\nwqqGOXIZNP4Ga9vhxVxymHhiOA2Rapcn8YJh8fjgKOZOoKHccr3edHRx6Red\r\njsUnjq3FygQsasSdTQXbuWWOEvDHknkA/kw=\r\n=C+z6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_1.1.0_1650342644021_0.5658314099870017"},"_hasShrinkwrap":false},"2.0.0-beta.0":{"name":"caz","version":"2.0.0-beta.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"vitest run","prepare":"husky install .github/husky"},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"entry":"src/index.ts","resolve":true}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"renovate":{"extends":["zce"]},"devDependencies":{"@commitlint/cli":"17.6.7","@commitlint/config-conventional":"17.6.7","@types/adm-zip":"0.5.0","@types/ini":"1.3.31","@types/lodash":"4.14.195","@types/node":"20.4.4","@types/semver":"7.5.0","@types/validate-npm-package-name":"4.0.0","adm-zip":"0.5.10","cac":"6.7.14","env-paths":"3.0.0","fast-glob":"3.3.1","husky":"8.0.3","ini":"4.1.1","lint-staged":"13.2.3","lodash":"4.17.21","node-fetch":"3.3.1","ora":"6.3.1","prompts":"2.4.2","semver":"7.5.4","socks-proxy-agent":"8.0.1","ts-standard":"12.0.2","tsup":"7.1.0","typescript":"5.1.6","validate-npm-package-name":"5.0.0","vitest":"0.33.0"},"engines":{"node":">=16"},"_id":"caz@2.0.0-beta.0","readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"docs/caz.png\" alt=\"CAZ\"></a>\n  <p>一个基于模板机制、简单而又强大的脚手架工具，用于提升我个人生产力。</p>\n  <p>\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/zce/caz/main.yml\" alt=\"构建状态\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"测试覆盖率\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"许可证\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM 版本\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node 版本要求\"></a>\n    <br>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"代码风格\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM 下载量\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"安装包体积\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"仓库体积\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/librariesio/github/zce/caz\" alt=\"依赖状态\"></a>\n  </p>\n</div>\n\n<br>\n\n**简体中文** | [English](README.md)\n\n## 简介\n\nCAZ (**C**reate **A**pp **Z**en)\n\n这是一个基于模板机制、简单而强大的脚手架工具，用于提升我个人生产力，受启发于 [Yeoman](https://yeoman.io)、[Vue CLI 2](https://npm.im/vue-cli) 等项目。\n\n- 读作：[[kæz]](http://dict.youdao.com/dictvoice?audio=caz) 📷 ✌\n- 写作：CAZ / caz\n\n_更多介绍，请阅读[它如何工作](#如何工作)。_\n\n### 特性\n\n- 简单易用\n- 轻量化\n- 依然强大\n- 高工作效率\n- 零生产依赖\n- 基于模板\n- 可配置\n- 可扩展\n- 使用 TypeScript\n- 使用现代化的 API\n\n> 稍后我会给出具体的理由。\n\n## 目录\n\n- [简介](#简介)\n  - [特性](#特性)\n- [起步](#起步)\n  - [环境准备](#环境准备)\n  - [安装](#安装)\n  - [快速起步](#快速起步)\n- [配方](#配方)\n  - [GitHub 仓库模板](#gitHub-仓库模板)\n  - [本地模板](#本地模板)\n  - [远程压缩包模板](#远程压缩包模板)\n  - [离线模式](#离线模式)\n  - [命令行参数](#命令行参数)\n  - [调试模式](#调试模式)\n  - [列出可用模板](#列出可用模板)\n- [官方模板](#官方模板)\n- [高级](#高级)\n  - [配置选项](#配置选项)\n  - [创建你的模板](#创建你的模板)\n  - [创建你的脚手架](#创建你的脚手架)\n- [参考资料](#参考资料)\n- [开发动机](#开发动机)\n- [概念](#概念)\n  - [如何工作](#如何工作)\n  - [用到什么](#用到什么)\n- [路线图](#路线图)\n- [参与贡献](#参与贡献)\n- [许可证](#许可证)\n\n## 起步\n\n### 环境准备\n\n- [Node.js](https://nodejs.org) (必须 >= 14.14, >= 16.13 更佳)\n- [npm](https://www.npmjs.com) (>= 7.x) 或 [pnpm](https://pnpm.io) (>= 6.x) 或 [yarn](https://yarnpkg.com) (>= 1.22)\n- [Git](https://git-scm.com) (>= 2.0)\n\n### 安装\n\n```shell\n# 全局安装\n$ npm install -g caz\n\n# 或者使用 yarn 安装\n$ yarn global add caz\n```\n\n### 快速起步\n\n使用模板创建一个新项目。\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# 使用官方模板\n$ caz <template> [project]\n\n# 使用 GitHub 仓库（自定义模板）\n$ caz <owner>/<repo> [project]\n```\n\n如果您只是偶尔使用它，我建议您使用 `npx` 直接运行 `caz`。\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### 选项\n\n- `-f, --force`: 如果目标存在就覆盖掉\n- `-o, --offline`: 尝试使用本地离线缓存模板\n\n## 配方\n\n### GitHub 仓库模板\n\n```shell\n$ caz nm my-project\n```\n\n此命令会从 [caz-templates/nm](https://github.com/caz-templates/nm) 拉取模板，然后根据模板的配置，询问你一些问题，最后生成项目在 `./my-project`。\n\n```shell\n$ caz nm#typescript my-project\n```\n\n运行此命令，CAZ 将从 [caz-templates/nm](https://github.com/caz-templates/nm) 的 `typescript` 分支拉取模板。\n\n#### 使用自定义模板\n\n```shell\n$ caz zce/nm my-project\n```\n\n此命令会从 [zce/nm](https://github.com/zce/nm) 拉取模板。这意味着你也可以从你的公开 GitHub 仓库拉取模板。\n\n**注意：模板必须使用公开的仓库。**\n\n### 本地模板\n\n你也可以使用本地文件系统的模板。\n\n例如：\n\n```shell\n$ caz ~/local/template my-project\n```\n\n以上命令将使用 `~/local/template` 文件夹作为模板。\n\n### 远程压缩包模板\n\n你也可以使用 zip 压缩包的模板。\n\n例如：\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\n以上命令将从 `https://cdn.zce.me/boilerplate.zip` 下载并解压模板。\n\n### 离线模式\n\n```shell\n$ caz nm my-project --offline\n```\n\n运行以上命令，CAZ 将尝试从缓存中找到 `nm` 模板，如果找不到该模板的缓存，它仍将自动从 GitHub 下载。\n\n### 命令行参数\n\nCAZ 允许你通过命令行参数来指定提示问题的答案。\n\n```shell\n$ caz minima my-project --name my-proj\n```\n\n运行以上命令，你就不用再回答接下来 `name` 的问题了。\n\n### 调试模式\n\n```shell\n$ caz nm my-project --debug\n```\n\n`--debug` 参数将打开调试模式。\n\n在调试模式下，一旦发生异常，命令行将自动输出异常详细信息。这对于查找模板中的错误非常有帮助。\n\n### 列出可用模版\n\n显示全部可用的模板：\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### 参数\n\n- `[owner]`: GitHub 组织或用户的别名, 默认值：`'caz-templates'`\n\n#### 选项\n\n- `-j, --json`: 以 JSON 格式输出\n- `-s, --short`: 以精简格式输出\n\n## 官方模板\n\n目前 CAZ 可用的官方模板有：\n\n- [template](https://github.com/caz-templates/template) - 用来创建 [CAZ](https://github.com/zce/caz) 的模板\n- [nm](https://github.com/caz-templates/nm) - 用来创建 [Node](https://nodejs.org) 模块\n- [vercel](https://github.com/caz-templates/vercel) - 用来创建 [Vercel](https://vercel.com) 应用\n- [react](https://github.com/caz-templates/react) - 用来创建现代化 [React](https://reactjs.org) 应用\n- [vue](https://github.com/caz-templates/vue) - 用来创建现代化 [Vue.js](https://vuejs.org) 应用\n- [vite](https://github.com/caz-templates/vite) - 用来创建基于 [Vite](https://github.com/vitejs/vite) 的 Vue.js 应用\n- [electron](https://github.com/caz-templates/electron) - :construction: 用来创建 [Electron](https://electronjs.org) 应用\n- [mp](https://github.com/caz-templates/mp) - :construction: 用来创建[微信小程序](https://developers.weixin.qq.com/miniprogram/dev/framework)\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: 用来创建 [Jekyll](https://jekyllrb.com) 站点\n- [x-pages](https://github.com/caz-templates/x-pages) - 用来创建 [X-Pages](https://github.com/zce/x-pages) 静态站点\n\n可能还有更多：https://github.com/caz-templates\n\n> 你也可以通过运行 `$ caz list` 命令来实时列出所有官方模板。\n\n**目前所有模板都托管在 GitHub 上，中国用户可以[使用在 coding.net 上镜像](#中国用户镜像)。**\n\n## 高级\n\n### 配置选项\n\nCAZ 将会读取 `~/.cazrc` 配置文件，默认配置：\n\n```ini\n; 模板下载地址\n; {owner} & {name} & {branch} 最终将被相应的值替换。\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; 模板缺省 owner 的值，可以理解为官方名称\nofficial = caz-templates\n; 缺省的模板分支名称\nbranch = master\n```\n\n这就意味着你可以通过修改配置文件来自定义配置。\n\n例如，你的 `~/.cazrc`：\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = main\n```\n\n然后运行以下命令：\n\n```shell\n$ caz nm my-project\n```\n\n这样就会从 `https://gitlab.com/faker/nm/archive/main.zip` 下载模板。\n\n#### 中国用户镜像\n\n由于网络限制，很多时候下载 GitHub 上的模板都会超时，你可以考虑使用我在 [coding.net](https://coding.net) 上镜像的模板。\n\n`~/.cazrc`:\n\n```ini\nregistry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}\nofficial = caz\n```\n\n#### 请求代理\n\nCAZ 支持网络请求代理配置。\n\n`~/.cazrc`:\n\n```ini\nproxy = socks5://127.0.0.1:1080\n```\n\n或者在使用环境变量:\n\n```shell\n$ ALL_PROXY=socks5://127.0.0.1:1080 caz nm my-project\n```\n\n### 创建你的模板\n\n```shell\n$ caz template my-template\n```\n\n以上命令会从 [caz-templates/template](https://github.com/caz-templates/template) 下载模板，并帮你创建你自己的 CAZ 模板。\n\n创建并发布模板，详细可以请参考 [如何创建模板](docs/create-template.zh-CN.md)。\n\n> 也许 fork 一个官方模板是一个更好的决定。\n\n### 创建你的脚手架\n\n```shell\n# 本地安装 caz 模块\n$ npm install caz\n\n# 或者使用 yarn 安装\n$ yarn add caz\n```\n\n以 ESM 和 async/await 的方式使用：\n\n```javascript\nimport caz from 'caz'\n\ntry {\n  const template = 'nm'\n  // project path (relative cwd or full path)\n  const project = 'my-project'\n  const options = { force: false, offline: false }\n  // scaffolding by caz...\n  await caz(template, project, options)\n  // success created my-project by nm template\n} catch (e) {\n  // error handling\n  console.error(e)\n}\n```\n\n或者使用 CommonJS 和 Promise 的方式：\n\n```javascript\nconst { default: caz } = require('caz')\n\nconst template = 'nm'\n// project path (relative cwd or full path)\nconst project = 'my-project'\nconst options = { force: false, offline: false }\n// scaffolding by caz...\ncaz(template, project, options)\n  .then(() => {\n    // success created my-project by nm template\n  })\n  .catch(e => {\n    // error handling\n    console.error(e)\n  })\n```\n\n这也就意味着你可以基于 CAZ 模块开发自己的脚手架工具。\n\n创建并发布脚手架工具，详细可以请参考 [如何创建脚手架工具](docs/create-scaffold.zh-CN.md)。\n\n## 参考资料\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\n使用指定模板创建一个新项目\n\n#### template\n\n- 类型：`string`\n- 描述：模板名称，也可以是模板文件夹路径\n\n#### project\n\n- 类型：`string`\n- 描述：项目名称，也可以是项目文件夹路径\n- 默认值：`'.'`\n\n#### options\n\n- 类型：`object`\n- 描述：选项参数 & 预设询问结果\n- 默认值：`{}`\n\n##### force\n\n- 类型：`boolean`\n- 描述：如果目标路径已存在就强制覆盖\n- 默认值：`false`\n\n##### offline\n\n- 类型：`boolean`\n- 描述：尝试使用离线模板\n- 默认值：`false`\n\n##### [key: string]\n\n- 类型：`any`\n- 描述：命令行参数覆盖问题答案\n\n## 开发动机\n\n👉 🛠 ⚙\n\n开个玩笑：我就是想造个轮子 ;P\n\n真实的原因是因为我觉得我需要一个更适合我的个人生产力的脚手架工具：简洁、强大、高效。现存的工具因为出发点的不同，都或多或少有一定的局限性。\n\n再无其他\n\n## 概念\n\n### 如何工作\n\n![脚手架工作流程](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. 图片来自互联网，但是我没有记住具体来源，这里对愿作者说声抱歉。\n\n#### 主要的工作流程\n\n[核心代码](src/index.ts) 是基于 [zce/mwa](https://github.com/zce/mwa) 项目提供的中间件机制。\n\n以下中间件将按顺序依次执行：\n\n1. [confirm](src/confirm.ts) - 使用 [prompts](https://github.com/terkelg/prompts) 确认目标路径可用。\n2. [resolve](src/resolve.ts) - 从远程或者本地磁盘中找到模板。\n3. [load](src/load.ts) - 自动安装模板依赖项，使用 `require` 加载模板的配置文件。\n4. [inquire](src/inquire.ts) - 使用 [prompts](https://github.com/terkelg/prompts) 询问用户模板所需要的问题。\n5. [setup](src/setup.ts) - 只是调用模板中定义的 `setup` 钩子函数。\n6. [prepare](src/prepare.ts) - 过滤掉不需要的文件，并读取全部将要输出的文件内容。\n7. [rename](src/rename.ts) - 如果文件名中包含插值表达式就重命名文件（替换文件名中的变量）。\n8. [render](src/render.ts) - 如果文件是一个模板文件就渲染文件内容（替换文件内容中的变量）。\n9. [emit](src/emit.ts) - 将每一个文件内容输出写入到目标路径。\n10. [install](src/install.ts) - 如果需要的话，执行 `npm | yarn | pnpm install`。\n11. [init](src/init.ts) - 如果需要的话，执行 `git init && git add && git commit`。\n12. [complete](src/complete.ts) - 只是调用模板中定义的 `complete` 钩子函数。\n\n### 用到什么\n\n- [adm-zip](https://github.com/cthackers/adm-zip) - 一个 JavaScript 实现的 zip 文件压缩解压缩的库，支持内存和磁盘上的压缩解压缩。\n- [cac](https://github.com/cacjs/cac) - 简单而强大的命令行工具框架。\n- [env-paths](https://github.com/sindresorhus/env-paths) - 获取系统存储路径，例如数据、配置、缓存等。\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - 非常快的和非常高效的 glob 库，用于 Node.js\n- [ini](https://github.com/npm/ini) - 一个 Node.js 的 ini 文件解析器。\n- [lodash](https://github.com/lodash/lodash) - Lodash 工具库。\n- [node-fetch](https://github.com/node-fetch/node-fetch) - 一个 Node.js 的 fetch API 的封装。\n- [ora](https://github.com/sindresorhus/ora) - 强大的终端加载动画。\n- [prompts](https://github.com/terkelg/promptss) - 轻量级，美观的和用户友好的提示。\n- [semver](https://github.com/npm/node-semver) - 一个 Node.js 的 semver 库。\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - 一个 Node.js 的 npm 包名验证器。\n\n## 路线图\n\n以下是我想要实现或者正在开发的功能：\n\n- [ ] config 命令\n- [ ] cache 命令\n- [ ] 全部生命周期钩子\n- [ ] 静默控制台输出 & 彩色控制台输出\n- [ ] 越来越多的官方模板\n\n也可以查看 [打开的 Issues](https://github.com/zce/caz/issues) 中有关建议功能（和已知问题）的列表。\n\n## 参与贡献\n\n1. **Fork** 一个仓库在 GitHub 上!\n2. **Clone** 你复刻的仓库到你本地机器上\n3. **Checkout** 一个特性分支：`git checkout -b my-awesome-feature`\n4. **Commit** 你的修改到你自己的分支上：`git commit -am 'Add some feature'`\n5. **Push** 你的修改到你复刻的仓库中：`git push -u origin my-awesome-feature`\n6. 提交一个 **Pull Request** 让我可以看到你的修改\n\n> **提示**: 请确保尝试合并你的修改之前已经拉取了上游最新的代码。\n\n## 许可证\n\n基于 MIT 协议开源，有关详细信息请查看 [LICENSE](LICENSE) 文件。&copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.zh-CN.md","gitHead":"3f9791420511429aecde72ad52d32850685e16da","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-5uJVGkbv0Dy3cdg2n8mH9ylaA+/So9J8nKdC9byiHRBKQZELtn82PyeTxmKjbWtyLCvZmCRlQAjhd8biLUJkcA==","shasum":"16c2835b72f699897bdc9c5783ec9cfee94de668","tarball":"https://registry.npmjs.org/caz/-/caz-2.0.0-beta.0.tgz","fileCount":10,"unpackedSize":638690,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwZw+XpRE0ngq71wZoMpoymEhMDX0E7OVPUzyhqQMzNAiEA17znP4NQf41MDOzJsPvnjZAtxt1hO/xWSbqkR8Zc7AU="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_2.0.0-beta.0_1690356743648_0.4096249340867537"},"_hasShrinkwrap":false},"2.0.0":{"name":"caz","version":"2.0.0","description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"homepage":"https://github.com/zce/caz#readme","bugs":{"url":"https://github.com/zce/caz/issues"},"repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"license":"MIT","author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"main":"dist/index.js","types":"dist/index.d.ts","bin":{"caz":"dist/cli.js"},"scripts":{"build":"tsup","lint":"ts-standard","test":"vitest run","prepare":"husky install .github/husky"},"tsup":{"entry":["src/index.ts","src/cli.ts"],"clean":true,"minify":true,"splitting":true,"dts":{"entry":"src/index.ts","resolve":true}},"commitlint":{"extends":["@commitlint/config-conventional"]},"lint-staged":{"*.{ts,js}":"ts-standard --fix"},"renovate":{"extends":["zce"]},"devDependencies":{"@commitlint/cli":"17.6.7","@commitlint/config-conventional":"17.6.7","@types/adm-zip":"0.5.0","@types/ini":"1.3.31","@types/lodash":"4.14.196","@types/node":"20.4.5","@types/semver":"7.5.0","@types/validate-npm-package-name":"4.0.0","adm-zip":"0.5.10","cac":"6.7.14","env-paths":"3.0.0","fast-glob":"3.3.1","husky":"8.0.3","ini":"4.1.1","lint-staged":"13.2.3","lodash":"4.17.21","node-fetch":"3.3.2","ora":"6.3.1","prompts":"2.4.2","semver":"7.5.4","socks-proxy-agent":"8.0.1","ts-standard":"12.0.2","tsup":"7.1.0","typescript":"5.1.6","validate-npm-package-name":"5.0.0","vitest":"0.33.0"},"engines":{"node":">=16"},"gitHead":"6d74537b3f92e0a67fb69add76bc35c8e794f6c6","_id":"caz@2.0.0","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-HztmeXcTgBYUxafXGWq6NvTkot0A/ZdvPeTkQ5COZFPdBTbX7P0IELb6LCtKZjNodb80aGOjwJMiMP1XVyS41w==","shasum":"41d029d4d76df3c72837d1bd7a7024c788a91a6b","tarball":"https://registry.npmjs.org/caz/-/caz-2.0.0.tgz","fileCount":10,"unpackedSize":644009,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJjGTsFt5Fa8xeBHgr3MLispI1Cv/5jx3/DOMIuYVKFAiEAveQ0L+JeROWrbBNuaaFKQcO8aQ3hbVWEopZ5LBqjua8="}]},"_npmUser":{"name":"zce","email":"w@zce.me"},"directories":{},"maintainers":[{"name":"zce","email":"w@zce.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/caz_2.0.0_1690358652051_0.6803904958834976"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-06T09:42:26.987Z","0.0.0":"2020-07-06T09:42:27.107Z","modified":"2023-07-26T08:04:12.468Z","0.0.0-alpha.1":"2020-07-25T17:48:06.179Z","0.0.0-alpha.2":"2020-07-26T05:47:42.253Z","0.0.0-alpha.3":"2020-07-26T11:53:41.275Z","0.0.0-alpha.4":"2020-07-26T14:58:31.650Z","0.0.0-alpha.5":"2020-07-27T17:14:23.365Z","0.0.0-alpha.6":"2020-07-29T16:56:35.379Z","0.0.0-alpha.7":"2020-07-30T18:11:13.743Z","0.0.0-alpha.8":"2020-07-31T08:14:38.281Z","0.0.0-alpha.9":"2020-07-31T09:19:51.533Z","0.0.0-alpha.10":"2020-08-01T16:54:47.903Z","0.0.0-alpha.11":"2020-08-02T13:38:05.881Z","0.1.0-beta.1":"2020-08-02T14:48:14.628Z","0.1.0-beta.2":"2020-08-02T15:02:11.476Z","0.1.0":"2020-08-02T15:18:25.798Z","0.1.1":"2020-08-09T04:38:29.667Z","0.1.2":"2020-08-14T09:39:36.661Z","0.1.3":"2020-08-16T14:00:35.150Z","0.1.4":"2020-12-04T10:10:37.525Z","0.1.5":"2020-12-10T06:52:06.053Z","0.2.0":"2021-01-29T04:47:41.616Z","0.2.1":"2021-01-29T08:39:33.784Z","0.3.0":"2021-03-17T10:43:21.735Z","0.4.0":"2021-03-20T14:56:04.088Z","0.5.0":"2021-03-21T11:16:23.975Z","0.5.1":"2021-03-21T12:42:57.255Z","0.6.0":"2021-04-02T04:58:33.115Z","0.7.0":"2021-07-26T11:52:33.888Z","0.8.0":"2021-08-14T04:05:54.110Z","0.8.1":"2021-09-22T14:25:13.019Z","0.8.2":"2022-01-20T13:39:01.051Z","1.0.0-alpha.0":"2022-03-22T10:59:57.522Z","1.0.0-alpha.1":"2022-03-24T05:26:23.260Z","1.0.0-alpha.2":"2022-03-24T10:27:57.193Z","1.0.0":"2022-03-24T10:39:33.635Z","1.1.0":"2022-04-19T04:30:44.204Z","2.0.0-beta.0":"2023-07-26T07:32:23.860Z","2.0.0":"2023-07-26T08:04:12.284Z"},"maintainers":[{"name":"zce","email":"w@zce.me"}],"description":"A simple yet powerful template-based Scaffolding tools.","keywords":["productivity","scaffolding","boilerplate","generator","starter-kit","templates","template","caz","cli","zce"],"author":{"name":"zce","email":"w@zce.me","url":"https://zce.me"},"license":"MIT","readme":"<div align=\"center\">\n  <a href=\"https://github.com/zce/caz\"><img src=\"docs/caz.png\" alt=\"CAZ\"></a>\n  <p>一个基于模板机制、简单而又强大的脚手架工具，用于提升我个人生产力。</p>\n  <p>\n    <a href=\"https://github.com/zce/caz/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/zce/caz/main.yml\" alt=\"构建状态\"></a>\n    <a href=\"https://codecov.io/gh/zce/caz\"><img src=\"https://img.shields.io/codecov/c/github/zce/caz\" alt=\"测试覆盖率\"></a>\n    <a href=\"https://github.com/zce/caz/blob/master/LICENSE\"><img src=\"https://img.shields.io/github/license/zce/caz\" alt=\"许可证\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/v/caz\" alt=\"NPM 版本\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/node/v/caz\" alt=\"Node 版本要求\"></a>\n    <br>\n    <a href=\"https://standardjs.com\"><img src=\"https://img.shields.io/badge/code_style-standard-brightgreen\" alt=\"代码风格\"></a>\n    <a href=\"https://npm.im/caz\"><img src=\"https://img.shields.io/npm/dm/caz\" alt=\"NPM 下载量\"></a>\n    <a href=\"https://packagephobia.com/result?p=caz\"><img src=\"https://packagephobia.com/badge?p=caz\" alt=\"安装包体积\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/github/repo-size/zce/caz\" alt=\"仓库体积\"></a>\n    <a href=\"https://github.com/zce/caz\"><img src=\"https://img.shields.io/librariesio/github/zce/caz\" alt=\"依赖状态\"></a>\n  </p>\n</div>\n\n<br>\n\n**简体中文** | [English](README.md)\n\n## 简介\n\nCAZ (**C**reate **A**pp **Z**en)\n\n这是一个基于模板机制、简单而强大的脚手架工具，用于提升我个人生产力，受启发于 [Yeoman](https://yeoman.io)、[Vue CLI 2](https://npm.im/vue-cli) 等项目。\n\n- 读作：[[kæz]](http://dict.youdao.com/dictvoice?audio=caz) 📷 ✌\n- 写作：CAZ / caz\n\n_更多介绍，请阅读[它如何工作](#如何工作)。_\n\n### 特性\n\n- 简单易用\n- 轻量化\n- 依然强大\n- 高工作效率\n- 零生产依赖\n- 基于模板\n- 可配置\n- 可扩展\n- 使用 TypeScript\n- 使用现代化的 API\n\n> 稍后我会给出具体的理由。\n\n## 目录\n\n- [简介](#简介)\n  - [特性](#特性)\n- [起步](#起步)\n  - [环境准备](#环境准备)\n  - [安装](#安装)\n  - [快速起步](#快速起步)\n- [配方](#配方)\n  - [GitHub 仓库模板](#gitHub-仓库模板)\n  - [本地模板](#本地模板)\n  - [远程压缩包模板](#远程压缩包模板)\n  - [离线模式](#离线模式)\n  - [命令行参数](#命令行参数)\n  - [调试模式](#调试模式)\n  - [列出可用模板](#列出可用模板)\n- [官方模板](#官方模板)\n- [高级](#高级)\n  - [配置选项](#配置选项)\n  - [创建你的模板](#创建你的模板)\n  - [创建你的脚手架](#创建你的脚手架)\n- [参考资料](#参考资料)\n- [开发动机](#开发动机)\n- [概念](#概念)\n  - [如何工作](#如何工作)\n  - [用到什么](#用到什么)\n- [路线图](#路线图)\n- [参与贡献](#参与贡献)\n- [许可证](#许可证)\n\n## 起步\n\n### 环境准备\n\n- [Node.js](https://nodejs.org) (必须 >= 16.x, >= 18.x 更佳)\n- [npm](https://www.npmjs.com) (>= 7.x) 或 [pnpm](https://pnpm.io) (>= 6.x) 或 [yarn](https://yarnpkg.com) (>= 1.22)\n- [Git](https://git-scm.com) (>= 2.0)\n\n### 安装\n\n```shell\n# 全局安装\n$ npm install -g caz\n\n# 或者使用 yarn 安装\n$ yarn global add caz\n```\n\n### 快速起步\n\n使用模板创建一个新项目。\n\n```shell\n$ caz <template> [project] [-f|--force] [-o|--offline]\n\n# 使用官方模板\n$ caz <template> [project]\n\n# 使用 GitHub 仓库（自定义模板）\n$ caz <owner>/<repo> [project]\n```\n\n如果您只是偶尔使用它，我建议您使用 `npx` 直接运行 `caz`。\n\n```shell\n$ npx caz <template> [project] [-f|--force] [-o|--offline]\n```\n\n#### 选项\n\n- `-f, --force`: 如果目标存在就覆盖掉\n- `-o, --offline`: 尝试使用本地离线缓存模板\n\n## 配方\n\n### GitHub 仓库模板\n\n```shell\n$ caz nm my-project\n```\n\n此命令会从 [caz-templates/nm](https://github.com/caz-templates/nm) 拉取模板，然后根据模板的配置，询问你一些问题，最后生成项目在 `./my-project`。\n\n```shell\n$ caz nm#typescript my-project\n```\n\n运行此命令，CAZ 将从 [caz-templates/nm](https://github.com/caz-templates/nm) 的 `typescript` 分支拉取模板。\n\n#### 使用自定义模板\n\n```shell\n$ caz zce/nm my-project\n```\n\n此命令会从 [zce/nm](https://github.com/zce/nm) 拉取模板。这意味着你也可以从你的公开 GitHub 仓库拉取模板。\n\n**注意：模板必须使用公开的仓库。**\n\n### 本地模板\n\n你也可以使用本地文件系统的模板。\n\n例如：\n\n```shell\n$ caz ~/local/template my-project\n```\n\n以上命令将使用 `~/local/template` 文件夹作为模板。\n\n### 远程压缩包模板\n\n你也可以使用 zip 压缩包的模板。\n\n例如：\n\n```shell\n$ caz https://cdn.zce.me/boilerplate.zip my-project\n```\n\n以上命令将从 `https://cdn.zce.me/boilerplate.zip` 下载并解压模板。\n\n### 离线模式\n\n```shell\n$ caz nm my-project --offline\n```\n\n运行以上命令，CAZ 将尝试从缓存中找到 `nm` 模板，如果找不到该模板的缓存，它仍将自动从 GitHub 下载。\n\n### 命令行参数\n\nCAZ 允许你通过命令行参数来指定提示问题的答案。\n\n```shell\n$ caz minima my-project --name my-proj\n```\n\n运行以上命令，你就不用再回答接下来 `name` 的问题了。\n\n### 调试模式\n\n```shell\n$ caz nm my-project --debug\n```\n\n`--debug` 参数将打开调试模式。\n\n在调试模式下，一旦发生异常，命令行将自动输出异常详细信息。这对于查找模板中的错误非常有帮助。\n\n### 列出可用模版\n\n显示全部可用的模板：\n\n```shell\n$ caz list [owner] [-j|--json] [-s|--short]\n```\n\n#### 参数\n\n- `[owner]`: GitHub 组织或用户的别名, 默认值：`'caz-templates'`\n\n#### 选项\n\n- `-j, --json`: 以 JSON 格式输出\n- `-s, --short`: 以精简格式输出\n\n## 官方模板\n\n目前 CAZ 可用的官方模板有：\n\n- [template](https://github.com/caz-templates/template) - 用来创建 [CAZ](https://github.com/zce/caz) 的模板\n- [nm](https://github.com/caz-templates/nm) - 用来创建 [Node](https://nodejs.org) 模块\n- [vercel](https://github.com/caz-templates/vercel) - 用来创建 [Vercel](https://vercel.com) 应用\n- [react](https://github.com/caz-templates/react) - 用来创建现代化 [React](https://reactjs.org) 应用\n- [vue](https://github.com/caz-templates/vue) - 用来创建现代化 [Vue.js](https://vuejs.org) 应用\n- [vite](https://github.com/caz-templates/vite) - 用来创建基于 [Vite](https://github.com/vitejs/vite) 的 Vue.js 应用\n- [electron](https://github.com/caz-templates/electron) - :construction: 用来创建 [Electron](https://electronjs.org) 应用\n- [mp](https://github.com/caz-templates/mp) - :construction: 用来创建[微信小程序](https://developers.weixin.qq.com/miniprogram/dev/framework)\n- [jekyll](https://github.com/caz-templates/jekyll) - :construction: 用来创建 [Jekyll](https://jekyllrb.com) 站点\n- [x-pages](https://github.com/caz-templates/x-pages) - 用来创建 [X-Pages](https://github.com/zce/x-pages) 静态站点\n\n可能还有更多：https://github.com/caz-templates\n\n> 你也可以通过运行 `$ caz list` 命令来实时列出所有官方模板。\n\n**目前所有模板都托管在 GitHub 上，中国用户可以[使用在 coding.net 上镜像](#中国用户镜像)。**\n\n## 高级\n\n### 配置选项\n\nCAZ 将会读取 `~/.cazrc` 配置文件，默认配置：\n\n```ini\n; 模板下载地址\n; {owner} & {name} & {branch} 最终将被相应的值替换。\nregistry = https://github.com/{owner}/{name}/archive/{branch}.zip\n; 模板缺省 owner 的值，可以理解为官方名称\nofficial = caz-templates\n; 缺省的模板分支名称\nbranch = master\n```\n\n这就意味着你可以通过修改配置文件来自定义配置。\n\n例如，你的 `~/.cazrc`：\n\n```ini\nregistry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip\nofficial = faker\nbranch = main\n```\n\n然后运行以下命令：\n\n```shell\n$ caz nm my-project\n```\n\n这样就会从 `https://gitlab.com/faker/nm/archive/main.zip` 下载模板。\n\n#### 中国用户镜像\n\n由于网络限制，很多时候下载 GitHub 上的模板都会超时，你可以考虑使用我在 [coding.net](https://coding.net) 上镜像的模板。\n\n`~/.cazrc`:\n\n```ini\nregistry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}\nofficial = caz\n```\n\n#### 请求代理\n\nCAZ 支持网络请求代理配置。\n\n`~/.cazrc`:\n\n```ini\nproxy = socks5://127.0.0.1:1080\n```\n\n或者在使用环境变量:\n\n```shell\n$ ALL_PROXY=socks5://127.0.0.1:1080 caz nm my-project\n```\n\n### 创建你的模板\n\n```shell\n$ caz template my-template\n```\n\n以上命令会从 [caz-templates/template](https://github.com/caz-templates/template) 下载模板，并帮你创建你自己的 CAZ 模板。\n\n创建并发布模板，详细可以请参考 [如何创建模板](docs/create-template.zh-CN.md)。\n\n> 也许 fork 一个官方模板是一个更好的决定。\n\n### 创建你的脚手架\n\n```shell\n# 本地安装 caz 模块\n$ npm install caz\n\n# 或者使用 yarn 安装\n$ yarn add caz\n```\n\n以 ESM 和 async/await 的方式使用：\n\n```javascript\nimport caz from 'caz'\n\ntry {\n  const template = 'nm'\n  // project path (relative cwd or full path)\n  const project = 'my-project'\n  const options = { force: false, offline: false }\n  // scaffolding by caz...\n  await caz(template, project, options)\n  // success created my-project by nm template\n} catch (e) {\n  // error handling\n  console.error(e)\n}\n```\n\n或者使用 CommonJS 和 Promise 的方式：\n\n```javascript\nconst { default: caz } = require('caz')\n\nconst template = 'nm'\n// project path (relative cwd or full path)\nconst project = 'my-project'\nconst options = { force: false, offline: false }\n// scaffolding by caz...\ncaz(template, project, options)\n  .then(() => {\n    // success created my-project by nm template\n  })\n  .catch(e => {\n    // error handling\n    console.error(e)\n  })\n```\n\n这也就意味着你可以基于 CAZ 模块开发自己的脚手架工具。\n\n创建并发布脚手架工具，详细可以请参考 [如何创建脚手架工具](docs/create-scaffold.zh-CN.md)。\n\n## 参考资料\n\n<!-- API Docs -->\n\n### caz(template, project?, options?)\n\n使用指定模板创建一个新项目\n\n#### template\n\n- 类型：`string`\n- 描述：模板名称，也可以是模板文件夹路径\n\n#### project\n\n- 类型：`string`\n- 描述：项目名称，也可以是项目文件夹路径\n- 默认值：`'.'`\n\n#### options\n\n- 类型：`object`\n- 描述：选项参数 & 预设询问结果\n- 默认值：`{}`\n\n##### force\n\n- 类型：`boolean`\n- 描述：如果目标路径已存在就强制覆盖\n- 默认值：`false`\n\n##### offline\n\n- 类型：`boolean`\n- 描述：尝试使用离线模板\n- 默认值：`false`\n\n##### [key: string]\n\n- 类型：`any`\n- 描述：命令行参数覆盖问题答案\n\n## 开发动机\n\n👉 🛠 ⚙\n\n开个玩笑：我就是想造个轮子 ;P\n\n真实的原因是因为我觉得我需要一个更适合我的个人生产力的脚手架工具：简洁、强大、高效。现存的工具因为出发点的不同，都或多或少有一定的局限性。\n\n再无其他\n\n## 概念\n\n### 如何工作\n\n![脚手架工作流程](https://user-images.githubusercontent.com/6166576/88473012-d4ecb180-cf4b-11ea-968a-5508c6f84502.png)\n\n> P.S. 图片来自互联网，但是我没有记住具体来源，这里对愿作者说声抱歉。\n\n#### 主要的工作流程\n\n[核心代码](src/index.ts) 是基于 [zce/mwa](https://github.com/zce/mwa) 项目提供的中间件机制。\n\n以下中间件将按顺序依次执行：\n\n1. [confirm](src/confirm.ts) - 使用 [prompts](https://github.com/terkelg/prompts) 确认目标路径可用。\n2. [resolve](src/resolve.ts) - 从远程或者本地磁盘中找到模板。\n3. [load](src/load.ts) - 自动安装模板依赖项，使用 `require` 加载模板的配置文件。\n4. [inquire](src/inquire.ts) - 使用 [prompts](https://github.com/terkelg/prompts) 询问用户模板所需要的问题。\n5. [setup](src/setup.ts) - 只是调用模板中定义的 `setup` 钩子函数。\n6. [prepare](src/prepare.ts) - 过滤掉不需要的文件，并读取全部将要输出的文件内容。\n7. [rename](src/rename.ts) - 如果文件名中包含插值表达式就重命名文件（替换文件名中的变量）。\n8. [render](src/render.ts) - 如果文件是一个模板文件就渲染文件内容（替换文件内容中的变量）。\n9. [emit](src/emit.ts) - 将每一个文件内容输出写入到目标路径。\n10. [install](src/install.ts) - 如果需要的话，执行 `npm | yarn | pnpm install`。\n11. [init](src/init.ts) - 如果需要的话，执行 `git init && git add && git commit`。\n12. [complete](src/complete.ts) - 只是调用模板中定义的 `complete` 钩子函数。\n\n### 用到什么\n\n- [adm-zip](https://github.com/cthackers/adm-zip) - 一个 JavaScript 实现的 zip 文件压缩解压缩的库，支持内存和磁盘上的压缩解压缩。\n- [cac](https://github.com/cacjs/cac) - 简单而强大的命令行工具框架。\n- [env-paths](https://github.com/sindresorhus/env-paths) - 获取系统存储路径，例如数据、配置、缓存等。\n- [fast-glob](https://github.com/mrmlnc/fast-glob) - 非常快的和非常高效的 glob 库，用于 Node.js\n- [ini](https://github.com/npm/ini) - 一个 Node.js 的 ini 文件解析器。\n- [lodash](https://github.com/lodash/lodash) - Lodash 工具库。\n- [node-fetch](https://github.com/node-fetch/node-fetch) - 一个 Node.js 的 fetch API 的封装。\n- [ora](https://github.com/sindresorhus/ora) - 强大的终端加载动画。\n- [prompts](https://github.com/terkelg/promptss) - 轻量级，美观的和用户友好的提示。\n- [semver](https://github.com/npm/node-semver) - 一个 Node.js 的 semver 库。\n- [validate-npm-package-name](https://github.com/npm/validate-npm-package-name) - 一个 Node.js 的 npm 包名验证器。\n\n## 路线图\n\n以下是我想要实现或者正在开发的功能：\n\n- [ ] config 命令\n- [ ] cache 命令\n- [ ] 全部生命周期钩子\n- [ ] 静默控制台输出 & 彩色控制台输出\n- [ ] 越来越多的官方模板\n\n也可以查看 [打开的 Issues](https://github.com/zce/caz/issues) 中有关建议功能（和已知问题）的列表。\n\n## 参与贡献\n\n1. **Fork** 一个仓库在 GitHub 上!\n2. **Clone** 你复刻的仓库到你本地机器上\n3. **Checkout** 一个特性分支：`git checkout -b my-awesome-feature`\n4. **Commit** 你的修改到你自己的分支上：`git commit -am 'Add some feature'`\n5. **Push** 你的修改到你复刻的仓库中：`git push -u origin my-awesome-feature`\n6. 提交一个 **Pull Request** 让我可以看到你的修改\n\n> **提示**: 请确保尝试合并你的修改之前已经拉取了上游最新的代码。\n\n## 许可证\n\n基于 MIT 协议开源，有关详细信息请查看 [LICENSE](LICENSE) 文件。&copy; [汪磊](https://zce.me)\n\n<!-- Acknowledgements -->\n","readmeFilename":"README.zh-CN.md","homepage":"https://github.com/zce/caz#readme","repository":{"type":"git","url":"git+https://github.com/zce/caz.git"},"bugs":{"url":"https://github.com/zce/caz/issues"}}