{"_id":"@aliretail/epoch-cli","_rev":"85-d1a272c0948a412932036824a702c3ed","name":"@aliretail/epoch-cli","dist-tags":{"latest":"0.3.3","alpha":"0.3.2-alpha.5"},"versions":{"0.1.0":{"name":"@aliretail/epoch-cli","version":"0.1.0","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/13/03/ce50dc12-8b47-4b6a-babc-b9ba82c21c92.tgz","_id":"@aliretail/epoch-cli@0.1.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Rzbp9xV8EnrRqzWTKVEf/RFDcZw9yKlI6eiHtf8l3unQ7yA3IK0ckldHf+1hXN+Nf/u2jOub9eNHv63mADVeLg==","shasum":"0bfb25a88d0ff49cc76143960ffcbd246627a468","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.1.0.tgz","fileCount":102,"unpackedSize":201623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnJq/CRA9TVsSAnZWagAAlvYP/3LTM6tQ03wWnhZZC3hG\nGG2u2Ymj+ZB6tTGg/AbM5UlIDboO5sEQSR5zssBjhThPrWcf0BMW/+LIi9GV\nuNKsJ55GG+P69YGOBR6Fc2bMkfy+5UIN/cqhua0+IraohAbfUfmtYBMjLXSI\npVIXzM8DrCqZ7Xq+G4NINTN6xp/PkOO3ru5Aor1VP+Ap3YE81cjWErB84zS5\nRexUOAeJaUJEkTD7uouR9ftIKZwbwtjEmcjqhKkS7cPdODqMcxpPRkMMtZyE\nMo3rrRIF9CDSm1xm7/Ijyv6JlpAspxHZtBOnjIvEa/RAdl7Amf7DpJXHIyFC\nNn8rv0YvNhUjLnWYSz2qrZOMOTANj1R2szfbS5eS0/2hE1RrjvKz6ciyGkNF\nIgWzSt9frg/ZgoiZzcfRefgCvuiAZoevHtVst2SB6/+9lA8XcSyvvGs1+/r0\nV7x8gwT8ptKtJnGhgVpF+u3YtmwEnMupT/RC5Ixjy4mnqS3PHHWs8JF0N1FP\n1dxNid4eWVJDjhbve/RWURW2tmhWdVGUkRBwST/PggJaC/5ggeQNCXsEcZzu\nZaxQU8VFCC46/MwMxoxRff+2+1s+9YiQIOoCwNJXgXc5IKN3PW7Q6ReoNFdW\nU06kvyEtnn0ueGe2IK+ys6fvRryks60RXevseZJjyKl1Lf8/o0kn1Yxdq3xp\n2TUW\r\n=wUFT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZ7G0Uid2AmoQk3iJByWcEAzq4+gvPlEISBQRdl7vX2AiAiS4GzGGMr6/+msTzj77MjjCCBgKVNKQQoty8eBR7LQw=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.1.0_1620875967467_0.13546118341259983"},"_hasShrinkwrap":false},"0.2.0-alpha.6":{"name":"@aliretail/epoch-cli","version":"0.2.0-alpha.6","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.0-alpha.6","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/25/08/3ada4929-ad53-49c3-ae23-6a37a05345ab.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.0-alpha.6","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-dEvClf66yGiLnhyyBrcSGuxDs/wjfsl/+dWtOiazR+Bxd2l96jQgFjm8xlpPFv9gDam6ls2L0rEUxk+LbB0vQg==","shasum":"60f80f8e3ff5a14450af05d2dafd81b18bac4d20","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.0-alpha.6.tgz","fileCount":146,"unpackedSize":247625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrLPuCRA9TVsSAnZWagAAOJcP/iZPH6XqyOyMI22Q0lpr\n+JglGBLsTMFxH48eVurokZcfeHI5EWP7J+pT4F3LOdGtduBeph31+HxpnPiA\nNrI6+9ELi5m/RLQ0ISSjy5WY/OVIvzjH53O7TDXGHvKbCv4iXg8/k5So+Ykv\nnaxqLMNt7o58K0MXcrUIx5mrSYUKSGY0TEwamBwtzOb0P2Ll11B5wsRxWFZX\nr+zDfd10VxyMeUdMtgkRFpeWR0rgI2LW33O8bRjiUWRHF+zY5VSqiLB27/lq\nbq4jkDgvF8/r/eQPIBT4NwfHX3AiIEkCWJZhjS0ivLNSOcs2HwYpMO7FPGKP\nP9HQ/EAPPCogiqKL0XvgovbB1XOLVGjbwWRkGGJHJ2k3MknjF8MoxZPLx9Pq\nCpPWeihLEM5RoyKzN/rW8FFyMyrt3PP16QCkfrgCg/JJ5dZnxERP/SIZ9QtR\nQi1PaU+pjtW+nJVW3135Z/0LWtO/aO3vJEu0u6JHLjCWMK6FEMZrocTElYqO\nu3InFAWzvK4PekKXaKb8qe90YJJ394k1dHoyFF4bR87LTFkUuMeHHXBWNF+x\nL9k84Dcl/nD1VmJTmoEXH6T1FsQEIFZS0KYunTUmPWO97bU7v12pPRiMxloA\nqq4zAffzEag2NnnrffFEntFd2gGJ10J1cqwK8li5huPhLE/WOOC+8OJniBgo\nC7YO\r\n=hJVi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXXnhlOfy86Dp0U3P8BR9roGtol3w0E0jJli/FqnyxwAiBAgkWFNa3kiZTPh/RVkIC5MVXbBZdiWJq6JgMDG2zxrA=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.0-alpha.6_1621930989824_0.6494285981105523"},"_hasShrinkwrap":false},"0.2.1":{"name":"@aliretail/epoch-cli","version":"0.2.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.0-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/25/10/36213664-7974-48f9-a391-193a2793a0f0.tgz","_id":"@aliretail/epoch-cli@0.2.1","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-aM70ZMElR4+GHeTWTNBWAlXakoVzWkrelWN6VYNkgCXiD0h63Ky819CKMwAJtCtUMsa8ICQDg8Cq9t11kJpRCQ==","shasum":"f02e368dd06c18e673c07d3be99223c5e5b7d703","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.1.tgz","fileCount":146,"unpackedSize":247618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrNFyCRA9TVsSAnZWagAAeZUP/jDCGp3zKBEBPAkXELJn\nQCadG0Lkq4govsAWOpoQC/rKC7MJi51XJgOciEHpRyzVAX4qmIcgHjTZt1tw\nAF3Rt1xUspL7NU77Y1w1o2f4o16zYLkjCchnrDSs2dCfzSVI2L/ScZZ1T7Ks\nDn6q7G//fXBryBmyIbeoBB5BzBnlPe2fOWD8cVzB+TM7QLwqGwaMkcoWCOH/\nsludxfbkaSdYb+fXoKdhr9daqDFTTlIaqBM+TinH2YPcPEG5Bt6vYm97wlI8\nfui+Pgt9qvQ5r90H3AN8xJG3/ZDY3sadC1UmIsZeT3lKKb2KYOcc+v4uBoPG\nH1SdZEtrAsqkvAp7P09jMzfOHrCblvlKDi1Z4zRIeFIDV7RGro+DcB6s+HVx\nZDqI1L5T1fZ9jhHOAe55u9MAQK4I3tC9mYE/Msfn+u6KJ7gcTs8UNeDmqZY+\nUVMY3xdFaURzr+Q9S4yovXbJyT5tpxTryvvmJXNOsBciWsjGNJ8GiJRwJFs3\naLFY3Cp4t0LW5epH9v0NxUJPhCpuay4uT9SejRwHrwoozImoVWhgX9avUv7N\nO3RIROFY0KlHKh1roaIeRcQjQbjSnEaMOCrM7UeuY7rsrgV5H16usqjomfxc\na/0wEHBjpuIrCXXE6LWWqL/OCE9v8+175oXVowCIB798KTQC+hdkxuIxEIrI\nK6MM\r\n=3vh7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2tk424S91ip+4gQu0zagt3fKkJdRZv2P8InlMIIjrQgIhAKvzAdgapMzq4d3N41kDbBH5F3LGYR1ch8/IAqSb7EMa"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.1_1621938546211_0.4438519913068162"},"_hasShrinkwrap":false},"0.2.2-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.2-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.2-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/25/12/d15e9549-a9c1-4797-a8cb-556fcde247b9.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.2-alpha.4","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-F5a6ABvdI+7ALIwYTvd52L7j6CgZ1WBuRhrp3lTAxwBj+WoaSOePag/ntCB47/pMiVt0Uh8Uu39BalwwRYCOGw==","shasum":"c7e9c8c72b54a509caa20a6da34f699970cdf416","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.2-alpha.4.tgz","fileCount":146,"unpackedSize":247660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrOhbCRA9TVsSAnZWagAAotIQAIYJUv8AEpxnLPg+5kHF\nZ8CtPas+V3B7XI+AoCY2tjcjb1XRQsPFQI9PlLcohi5ZpKvel7t9o3ieYIyM\n2+03bYJIkuEIkj1oOKiog+2OBEKU0O3l3Hge0j9ajv03AN+obp8WZK0xtq2W\n0mYLJrgKkE6wfuDvrWzpUZuEZR7x/0VPzE/EDzwWzIaJ1z4jcQrU0jYtgxNV\nPT6ZRuxF7Sd9+Zb4pZjg7nRHvJNWDYh4V5Wvl23ZPGSEJTBWY37Y1g2wMFIu\n4HvthoEKIjmReIf/JUjNLVcffEA+ABC2/BP3A1FETkfa9FUswYQ0kLbhJF4y\nXOcrPfRnDD8oCJHGPUH4jcDiVEQMMEm0dx6HqPu1fykEPW1WqjMARJ9dSkao\nVJuIt0gO/mFHOebJ2h0QiW6+VPbTKoDWgl24ejM0ua65qrhqDx8owg7ZweRR\n/zgKItu7Yygh7upLE+OOrdG/qDUfVFTebtMSTswVuxukFYT+Hg8QrOeAWosx\nJQZuMB1HRolEn/vEjRW3+hipcGqSMtRb7FBfwWSgezqntZRYC2Bvo31C7adD\nOenZf3bc3+WJgDhNPDHh+LcwYPXkP4oVk9V2WEFX66xLWffQPUmNXcXdz7zO\n7dpE4GvnDRoHMIXwNLZNxpFQZ5B73gaDL1DRHxwsDSfhhRaMSBuRRQhA6+Zd\n4bwL\r\n=q0J3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7S7fCBSrWCu/CedS1UvPwlz6q6X1ptSdInfQsdoKeygIhAOxQOfvbqFRmgaVq2YllRSZ14c+RP1KdZypnEqI4yCKU"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.2-alpha.4_1621944411375_0.925158642303616"},"_hasShrinkwrap":false},"0.2.2":{"name":"@aliretail/epoch-cli","version":"0.2.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.2-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/25/12/662386bf-8c48-48a6-a545-a71e0b0a5675.tgz","_id":"@aliretail/epoch-cli@0.2.2","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-AOKZpgcUPA0vkQh2ENN5vBGz7+2a+Ixp5yLfcXYa7Tr+m/LVrzUyMTmRJtfn9ybhilH9zgqFCrxooUYuOOqY1w==","shasum":"68943f344c515d785435920f057ca7981a4e78b7","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.2.tgz","fileCount":146,"unpackedSize":247652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrOh1CRA9TVsSAnZWagAAK/QP/3GFXDzqCSdoj1Th6xhK\n22kHZyUqv9rbClAz3e7bMr819R3+ciwaw3yi9F2Yod8PBWrN4pKeF8uo45oN\n1/Hgc42IwhpbtEY0x3BMHB9Nq2bMHpH7Vxv0xyKqGMqj796ZX0UCvCbMQzK/\nkzNJBiDWKFjZDto2fMTuVp14Uj4CLAypR4ZTE26MU3E6N3xDTWz2EsQCRrfz\n5s9ZKK9qz6bb1H7tAHLdfv/dlGTXGJ5KAE9p5J8/NQQ2xrIo+YIqBGsKyRbR\noC4ahwzlVdnR6pVvK3Lwu9tdgczdpqE6o5FBlgb8PDKq9D8bMT+uB+Os25aU\nfjbwuhvJsMe43wTsqmJYgcKPD6HrGrVHKXvVJaVtX6w/zaCYZ64/c7rbV/dv\niLTcVwHs4NAflWNX4dNhFYlMU3Bd3d0qysucHIvKW/aw1HWYoH0oxnD1BluR\nMQXzKUBu1jrzpWcSjG86XRWTxSLTOJwGttNRUsi8SYiD/8v5hr+O3wuk1DB2\nW0S1M3u7Ir2Ysaiy+vueVMj74kevDDvKUbY0fD13Q5fBUaSSs3IE/85hgh70\n7K+UDyfve88Qh0WfszJSYnpu3XTrv+Ee8a28Q6iKUfd6BjQLX4pbo4M2cwFa\n9n7V+Tu8T3CMjTAYZYKMIsqhf91xC8eJRw+IiG2Ter7YxH1Xh6Kvd10eru+3\n7IZm\r\n=++Tq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTMWPgYuTPcjvbv0nxVSFF4WSGpxP6wdufCFzrUlyYCgIgAov7FNpWu54ergb3F8v+t05TT1QMpOhwFYoGAwRNp40="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.2_1621944436709_0.8766431946811397"},"_hasShrinkwrap":false},"0.2.3":{"name":"@aliretail/epoch-cli","version":"0.2.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.2-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/25/14/7d51ac7f-ceac-45ac-b137-5b07b48e2d0e.tgz","_id":"@aliretail/epoch-cli@0.2.3","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-bpTw8BeLi4gJsz9tAJYLsAZL4L64evZzXNSxhQIy7YbRezj97OjU87O4f1S2HUjhvRNBnH+ZrdrElfSCmviaIw==","shasum":"7e57cc658d7d7c31d615c12cca241b0ef0708aab","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.3.tgz","fileCount":146,"unpackedSize":247691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrQyOCRA9TVsSAnZWagAARRoP/1vAtjEkjCR1Jx8xPGlw\nCfOoC1eypTS48TghLWBQrtZ8ofGE72NqKJ4Cz3ArrBAExZEUagD0gjPCOlCT\nJo7Ygow7LED7Rk8RUZpDiZPYX7oZjMRa1fPZqgFw8axiVaZVP2RRbMns+NCW\nEERsGMHpZLRsFhKd3g+ctjHRnfBdoUkDZU3l20PtxFanSrCbaYVZrSzymu0p\n/kRDRwEpvN6W21zOVvhmWXr5ymRA9vD8n/WqC32XI9+IULcR8f78dfWPgFBy\n/iXQFFc+26QqPOXKI+sd/cfkfFhCOAbeVQRC3pksKvnUAiwJrjVNGo1W0eFZ\nXxa9IXgRjGIDkxDhaOkhTgud7xR9dPyKrD8VRzWT8khPXp6l2iC3ltXtv21a\nj2jaclpLJAHPfifbMj8GhBEyllaoe9NQpH9lhLr09rDZQHCeZRnvbNbu5YWL\n70zsQD2H7uRZrFmnkfNbLeNmrcYtb1etiiJ9KSyLU4bEbqzxq6CbqL2GHh34\n/V2KKkAVrY0M/Fo93mRtGjMlyTEVvVdtI+bG4ifYPaomAToqKgv0sKuQjUos\nsmou5DLJXPI6gSGXzhxsm+0uTK5A3zV+cDIXn6R46y2yKO4u3iOjOLq3ojjW\nd0smM2YA8XE28dy1qxc22AsKW9zdwsy9+xrohuUQYZLlbpTj2Ik2mp5gyjMf\nNeDQ\r\n=1Ava\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARd91IlAjowIESG9r9CgoraNvaYXr8H74roumWIlva9AiBZ4U/Wq5RnH3P2v1PUqtZdXxKHn5iu4AXzRRpahTVXqQ=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.3_1621953677501_0.2066996393999212"},"_hasShrinkwrap":false},"0.2.4":{"name":"@aliretail/epoch-cli","version":"0.2.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.2-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/05/26/12/e90f7462-6f03-4910-9bd0-4fc8941067a8.tgz","_id":"@aliretail/epoch-cli@0.2.4","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-I2sde8iGQtcfPMqEGxZ0yOaJZcMFbcofbHBCFOHP1fqgZOyEEe+P1x1U47S07oMWYJGmVUlKnjxsXbyqpWOh/w==","shasum":"e9fee3d3e81a3d0ff5a3b93200673a0df6d30c4d","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.4.tgz","fileCount":146,"unpackedSize":247846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrkVSCRA9TVsSAnZWagAAkAoP/3PqRE9LKNscuShGnYPL\njsysuFZpKaSe18t43qNfaPTm42KgkgaIAtqFO4OPTbzbC5FDrxF4CKX6+V2e\nYUtsEh7BypFhMjktA6E+RqPhIYSSSm4eR1kDAQVXJ/2QFmBgg45HR90PJIDD\nIG2mymWhzAcMmulZnWBvd8Ph0FzCwtVrjp96jrXf5qM7r4/65ym+KYAAPJ+R\nGhOj20wiEamfhaeTgBnpLc5lYMYRq075O7oOm/VoAqfW/bOO5i0/IVLzpkfk\nq23P8cqn31+kWZc+vbvpF0hf5EBxTrI09bT043PEwXKe6mgW67qAOL2L8GVP\nIuM/e03tCICrxCML/C3g9yRKZgkH1l2Xh0ahk9DP9apaE6FQeuAIKVBO/3b1\no2BhYPeKhyrlnQ70y5/usduXlvmDJ9pVHmRhb8XIqboZJPIs6KZBG89SwA97\nr8CLHnjqzLgHN3Va2RAdVaHtsckqg7o/DyIzffwvkLqKqy7MJNg/+/ASSgR1\ndrKqY4bukm2t/GFBT1TJmnICJn4t5wW2ZXzny6LS7DCJT1pJVVOfjMNJoOOx\nNJAwtjj75KQ/WODukiHmhszJSuWeRFm659a3O/QSF+7mTZknQMVYws83I2YP\n6YKyLTwIh4J3Lw5YpQ+uvm1cx/TGcIepuGCcxs4YfZw8F9gcTrTtNjGMu2oe\n7myL\r\n=V8Ld\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5GTgYGRZcN896As9cPnsOGW7phvMeMT0gm5G5I73CKAIgQ0/084aYO6aR3xu8fBba9jo07dUrexetP669XTSimfE="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.4_1622033745521_0.7918319295719318"},"_hasShrinkwrap":false},"0.2.5-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/06/15/58bd3712-6362-4ee8-8e22-d5c974e93112.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xNM7I+MbAMjwnort8b0zOrvuael6jwlSq3lG820yEfs8JBfB2xuFuZnCetPdtt1qnksw10e9/7SK5VK0wGe+oQ==","shasum":"f92e4e008ec7629bcafbcaa70b95117f71b265f5","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.3.tgz","fileCount":151,"unpackedSize":266111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvOZrCRA9TVsSAnZWagAAz7MP/iVElebTfvTUDqZTWjLJ\nzjgPGMz63rl3qJ108I2qVHl7kRBrWNUg63gY7eBUvn4Nn3LfYupGkH7ivJn9\nszFtYhqG2JEcrwsqfZlG3ZTh0M8Yt58xWcUUtT0iTgtnilVqP6X4TFMzxSd8\n7VNMbEmxfH1vhgiLvlZ6BjZUi58aAw13VAOI7IT/cceO8FmYSA7rWsN3Iikw\nIQG/2GB34yfsu0i4ZsKvs29yaod1YxdSjloZocDFkgSOB/2cpdnv22J1SDw8\nfJjRGH9YgZDFhN2rMwyZLJf+bq69LZUI6JLpdJAo2pfsa/fYHzHldtI36lOs\nx+RLwM1+P/ti3/Uk2TqkmJbwBHh9i3z6vcWrsALvRPDB4nHvRnHMZXa4EIHe\nBm+Mza7lfTKOu/VwDKsZZNwVYCIDl4kSKqouIGKGrAGs4nSmT3ksW07jHPxf\nmOt4YwK6B4BSIydxQVy6i7WCRHQzH1Q3UIL+ELMoBtUZoqBYkV61u7lAETZs\nb8XE/Frx5IHJ6hxgCmitV0NGEaa0G93zySiyPUfOTMmRs4iQIHd+Rz8nbYey\niyccWfsTo5LUihcNYaBlsBGp8c0b932/lqg7QMgzVeBlP2Fc9JPXvA8q8c7C\nY+H8OzY42zve7z+DJVL1wFHxWd0DoLrBaDuepSXZ64je3UZaP1YOdeGcb9h3\ncnZd\r\n=OrAJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXBQnAFQjPZIcCUMAMYCtf/UuDa7loOgZ0xFug87W5CQIgeS7Nmw+bDn1m0agWmHysV7fv2CeCojUhJKiVzkHzWU0="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.3_1622992491157_0.06116165675707208"},"_hasShrinkwrap":false},"0.2.5-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/06/16/4388624c-077a-46b2-bd34-39b5453e5957.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UlAq9qRz66ZUuBQqQrDi02L/6ivVKn/gIzd9foCB3SU04viCI/xQFjfxL+Lrp0j7abQWvcaZCk8ImKibz+S1Ww==","shasum":"e880919bb1c242a03a25e61ec784ae83935d5312","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.4.tgz","fileCount":173,"unpackedSize":276395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvPOBCRA9TVsSAnZWagAA1v8P/3N2CLT1hlZvX9CTUNwd\nKhCCySSGAs9qpTyD/uI1D99dZB/HgsV/qY1z/SELfkpBS79OefM9T92U+U5J\ngjGH8FsrXY2uJbKXr04g2S986sgvRcvFYmtGXU8YrypEGF6Qufb43KnrgTOR\nv8p/t7ggQy7l7+eLdVHsRZ5AfztD1aLIKU1p60CY0JIRfsYbnKQHOqeZnss6\nmDulRfoa+xCjG6jxuRWpk7/yjhSse2jnSDZ7KPq0ISvSYomML28pJM7AWUk+\nIJeoszFHBnHhsz0uT6k/sk4DVh7jm7AATJE73NbYk/DaPKDEyIcKvziepm5o\nlSwajPYJaS9C6Ztb3x1HYvigQQW6wbS8OhVFNNPlfYw3sDTGAY9o9RAFvCi/\nr03BPHcNm4u29fY8Y7NWYZo2IXWWHL4vW+qt0KU5ONZJqXVvDrys7/+Aornd\nxyq2V4W8N26AqiVI444VhWqU3N5x0s9WD0xNkVJLHc4/7sDXii1C+4IVsWiE\nyKiocRMP2upYPekvE7ZDX+MwV/loxv9eKiXcMwagZJzl8XwfDrbG/SO/WJ8g\nDrtH5XQN7G9hb8i7whcclap85k99+QwJ9GefBqKLjXcArirrnbiua7YufVTh\nvmljKzvaMFUQSqmyasa4e+uWZ0+mM/OhEXOVYsJKoVuvq+sSfiayuijCkQQV\ng3TV\r\n=73eN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCScc1B2FQ28RlTywDGeYBI5MHg8CkbJ46CgJd4JLcytgIhAJkXNPq75nEpB86w9ED01rKoL1V8teegVL64ni5EvrAj"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.4_1622995841233_0.09116390105161276"},"_hasShrinkwrap":false},"0.2.5-alpha.5":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/08/03/738a8c77-4eae-449b-91d4-899ecb0712a0.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2YT/18YQSZlvU362R8FDb2AWa4NGRwx13bhQKFQizOlC59JR9JAz9d9sCZoEEUuNr8Ups03EnIoEdAE2SnZztA==","shasum":"38c84c52b8098a401455802b9e0edea183d3b405","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.5.tgz","fileCount":154,"unpackedSize":253049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvt4gCRA9TVsSAnZWagAAcSwP/A2WEjF7RqdGIIc33Ufv\nUf+bTaMcHn7YF11JtnNPdA8tceak6Ss6QADKb2zZmAtfTlyJCCz82KUeHK9h\n1no9erYnihYuMxtKy61s0qlpkJ0GJXMiDO3GGgva2UEUvQS0TCMmCaQ69uq7\na2fAC9uYa/uWnkCP8Emuorjnjdoziwy81Pb1/rf0ry5fbnO4uTujoLAD96YS\n+hhNEnED7CNDEdKFM5NNzpDBMv5ShBAfCBgj+wa9d5QRIS+AnGy2je0/SrwE\nqfpKXGWxydkk4Hsjq5dsXq6v+4nWSIfrCXWI79OJbAG8qnE672txKofDHN1N\neEXMnnqz8PnIIx37vkrRBAV4EvYqgQs0g6pT/Vx16FIlVkimjZTPkM1Qns10\nspii1VLW9AgepPJ+HvAu+v+4GLO9Whu5fKuJzqSSRgqQnsFDFG4aX6LiHBPX\nXEaxNf9yXZFMrFXfBecMW595yJNae6MQQhSKOUY6+wfhYIq3OjXpPOtMnUFj\nhyHcPdtXGjOMJPpBcnk8xfY35Jnb+RbnVyGFZujmhvfavBhr44P4x9XNV80d\nTqLl+6IUXF1QDLOMrlbTrkwepyPn19uqvjWWvvo2opudEPyTH8Fai7W4Wlbb\naiYA+pG8GN+9eAvOKXYaOSaG+C6+ZvQ5++FsSU6F1t34pz2TlHw0pYO20K4F\n/MO+\r\n=rfzD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6bquxUGHTMRro3z167Bc0ayyu/nO3rj8/7IgYae0ShAiEAgRD4gHi0UV1e5cbwkzgVyJl2VZsfUVtZHYJKrBL9AA0="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.5_1623121440364_0.36566443813503136"},"_hasShrinkwrap":false},"0.2.5-alpha.6":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.6","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.6","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/08/03/644b6078-524b-4250-b635-b58f96b45ac6.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.6","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-p7yaZrzXobNC3XjzPBqtxgeas54CshOGIjC6ZwhBGNXpukKNura+LJxFCUbDpMfkfB3ElPeVRom+a2DxUxTtcA==","shasum":"156b0269b87837baae3ecfe633566465f8632423","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.6.tgz","fileCount":154,"unpackedSize":253049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvt5DCRA9TVsSAnZWagAAFSkP/2s9VbGgLOX1/c5Hta38\nfoZh6E3qKPLi/eNG5I2qbppuyJo5K3GPWe3dTf4zHfOYKDbPnlmCiAzXFONZ\nzA+p4etsNzNAGcDgOQz2RIRBOUH4yJX3o/KC0ok2A+BNq1RW54DJxhhFhLaB\n+yooiY4qxB36NFYNAc4z+MXmdQQnzhZVViNQlDVaBf7WfZ+z9zADoynsicXN\ntp/deNVyOjXgoJT+1rzV0IshPVNW6dp1Obba15P49l1DxxNDgV/Uv/knoatC\nkuCTyrZt45livtGaU81aY3kEhfBwUiY+UsLg17QpptgkmcTQZLXmbXAEOe1R\nVcg8rBsKqr9MD+aLYKCxrh7u9tbQf/hSX2gMByBFY6znB6VD61RdPCWcT5r6\na7QG8+ouPDyyggceNriS0kXDLzWmclm/cwvGMesVEVJS+A7AC5o2xiub7x8m\nWIsOo6gShCzTZW5dw7yN06GdCTTjwCm8nXbZ2BHrRoLD0WELFqFs4dHeKtWV\nUSuno0bsu23Yx/CT8aHBqUVUpQKgll2vOQAOZDF+0bItDWgyPnBq8hRbtkEL\nTAsk78oxL+NqzFATjKDEgBEL9iBnK35D6QTwJT2oku4XbGQrjQOjXSOp8bno\nslbsp76uKH0aoMR6SPiKCYvofxQufuXztb7x8gfEeKQOrOLWB9iiXt6MgV6s\nyJCM\r\n=d7He\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZ5gbR1TwMxtMEHoHBmrXWYmIdqogqTNCogo/jhmyhdwIgMNqPhHUrQvHKYfr/ncoXodc8dZwQeKJnTj0n9jmPg3M="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.6_1623121475038_0.015703379196393197"},"_hasShrinkwrap":false},"0.2.5-alpha.7":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.7","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.7","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/08/07/243ad722-74dc-4293-9274-f3f11b939abb.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.7","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-paf6goa7T+K9NAPib8IFTVH8pSbixZ6QY3qjQr3+DsgQJUZbI9htCd3HgExAYTQwo8y+NzO/p/0OqcydyL8ZWg==","shasum":"eaaf7a40f6edb5d98a516784a6f3ad02003d8105","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.7.tgz","fileCount":154,"unpackedSize":253024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvxe6CRA9TVsSAnZWagAAhIMP/2+lB068XA+H3LdxmmTV\nP69N9sAPs7Z3KcjPk6ISezHx7ZIybuvGqtAmVugclvUiUasvrnW6CkKNu7iD\nWufcnJvREp5ZdkZyHd1Lhp2nQj4SZFvhD4YzgzYtNkxRhiRNB3LxOkJ3XHvb\nvC0qYg0lH9DT3ELyXQR/gq3l0oK6subHNTtBgPhf5xdPYFfhodar7PtU/IJZ\nEAFS/hodcIijDzgsBJglM35u/jvoxdc3o/5GgXKNiqyhVT0mj2fLamEuUquJ\n6ElVtgPgHWK3ii0EkZP2yT4s+hKHttmG2M30FdchyRtcu3Z3HqPu3ulz7V5H\nrAV23xkEV3fOJ53W76CgB/QouEGvAWmcPLGgcuqRxsNGgxB1I0sCOP8w/orF\nZjzdOLN8+R/Pbn5FxLrb5JTV94qzolyPxKpL3UZKAmz/Y/NutCp2X2A8BaGs\ntM3iNrXJ3G88Fd8bbNtOyIkSxP2d5o4akkKKtHT5oU/EUnZkQM7O3VzOe5EP\nEnjwJjOeLOCUdl534RfL55rtpJGcj4oItltOmgJd+98ezNM823CpFe6MsW4d\nu12fYfB4YjdSCBjs1g3HA4KMNkNe16YDXuFuZsdKAfFtrbm2AtOLcm7/2Hmw\nf3ihLx6wIgoMlEKAjXsRFcL5CqnJIdOv8So9aK/tLs152dvHzDYqqG+NzXFV\nx678\r\n=XrsC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHIWMirrl2ggyK7H+OPj6+Unr0Z85DGAx0mko3+7C4zgIhAIgHcj2qACD+Pw7lKzI95wice7XzH4l/Hr8V1EQprkdq"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.7_1623136186438_0.4960316735423982"},"_hasShrinkwrap":false},"0.2.5-alpha.8":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.8","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.8","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/09/11/76703b08-ad70-43b6-a03e-a7d32677199d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.8","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yeJRJYQxvNbBKd2z3RHzXycwdHG46Jdj52p1USveKBeEjfcpunyh38QmVVTCwQuhaxkqLMPbz+mjl7pV+rTMfA==","shasum":"fa2f9d5225172aaa9ab0d2258b2aabcac536cb71","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.8.tgz","fileCount":154,"unpackedSize":253033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwKz4CRA9TVsSAnZWagAAn1wP/j0Axr2G1Trzz+o4eOdB\nE42uhD1lyto8lvB6oqMpIK/XMHXFmVAfC4Njh66Cmc96MD8mbWyECdCeoct0\ndmItqaI8758fBuMeZ8rPW3mURJjUJtXV5rLKHC1twXsHdF/vR5yl5UgCzLSa\n+sHmDCt/AVcTXSR9LSqxKgbftoNnzREQPtAF5Z2Rqz1iK67spSqRxzwmyJOZ\nKyRcVMTrxA+iWPb/SonflZEmYBg6UuhlCqDIU6NU3wAlp81eDcSH+iIKoNM7\n1lYaXNeUAM76HO3PsQAkiMMeoLem6yqjfBNd36FlTkMYyN0VbleWDw6KRa5i\nb4d3wSwwDdvJ3t2p+Ap/pmxOP0TbckHCbum1X2k9QT+YK5LnhnuU+oRdLuvQ\nS+4U5fV50TCID1ETceVfcOAEXwTwt0EIEjjRFoRCAF6KeBRgfx+xMf5zt1fz\nIeTtG4GslyJTqEPkc8ZZKQxd1PSotTmxO9c4s+V/OxBoVbnPnt1ePv3lOB7I\n3eeZlHl7jJEhx2yqDr096gTnXrPNUiW7U0U2XtkwUp9dYBLhhumAnP0NyhcN\ngGzzLcC/62a7+dbrzCn8K8X6GWT0gJSlW14DlkXdJCci9fsmmL4FfS527f8Q\nORLadeQhpBGKHo/k3BaVPpc7fAVXJQ6hnmH7Ie+RT5c+IX2O7parp+MiUJR1\nz5CP\r\n=sAeA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIET3arpUruvjO+2+kLWBMT3XJtx4SN17FULSjSGNw0tRAiAluCWVjOEaFp+eat01H63DOkic8ivZeSjMqKiyLZq7NQ=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.8_1623239927995_0.25107240272421527"},"_hasShrinkwrap":false},"0.2.5-alpha.9":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.9","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.9","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/10/06/1c997fa0-d9e9-47c6-b051-2339e6d3647d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.9","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2tVCDARy5KzKxR5UCLsyRQdnOIBa30d6IkzmcYjFTnwNldEuhZiRHGKvGNLAveu95Bl2tCtsweu9uY6QXwJQwA==","shasum":"a802d0509c3c4d4c3fd8af1f08acceea97113510","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.9.tgz","fileCount":141,"unpackedSize":236762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwbG5CRA9TVsSAnZWagAAwXkP/26RrF9NcY0ehTd+UBYF\nxIUV5ViN7w9fbipONwDIq/fijyN3BFtBnCObskDU8oGbDE3I4gvnED8EZHSk\n6xiU68P6fZxLJUxtylvZ+DrsElE0iMV6Hi0UMsEkTAdltGnALH3TZMK4AdSN\ni1JhNYOIYAc2p9BDi8/v5kifHjbEJN5oHUfeYtX3g2NkVDnZKzAVZpgdGIIf\nRlb/lf38+xHQAC9mbrQ9dK6j3zyydAV6Jkdo0La1ggI2kwnkzydChI5kIwwf\noClqaN/UI03YlVPTKVkUEADAKIf5PZrjgUAKbUi8lK0t+bCjeQEnzNV7Kic3\nD1XT1lu35Z/Zh2fj60pWMPfyWJ30NrxYUXNaLbxD+to9rZ1AIhCUVzXVY+8v\nYKs6X1WWR70P2g9+SiaxPAEHAJ7O4I5xb8HhWgsTYeQOKZHq2hAK9Cxi5WVx\nZDfEe0PrQTPmQjZV27NY31WwX3jeRjpM9GndwdmTavGvOBqKLbNj2HR687u6\n5XVFRLW5a5hAF/+epEgD2hTJz3fdT2TGlr+4uDtmwpMaAy+5nIxFt3+pLN/N\nhZ7TMXoryGVuvXhA5IUmk3qn5vS6pesICPwW0++v8XfRaD/ZpzmQAlp6iwjQ\nNCAtxEGONzVl+Es5TRI0mhSBIO+inOpnTRqWAqFG63cU/ziRuIiS6eHGKoi5\n0OXa\r\n=yoGB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJbjS7waBQi4qibmCFT72CCKpHTyLALh1llYSqzigtxAiEA33rIAscDcRHy1ExGiGDApdkdb1Npzz239YE5yWzf99g="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.9_1623306681108_0.6467306866440137"},"_hasShrinkwrap":false},"0.2.5-alpha.10":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.10","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.10","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/10/09/0f3a7051-4112-4951-ba42-1b5653325a12.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.10","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-b9VeovlKagO6og0PAWIcnJfSl4uE9/ROwCktObowqYFIGznXIkgCgjD8c5aHRZrnr9sxAYkOgCfcbBaWtDpMdQ==","shasum":"51ff017582c97932baadd7d786b09a9f7a42a74e","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.10.tgz","fileCount":141,"unpackedSize":236771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgweDxCRA9TVsSAnZWagAAfpEP/2W2aQRnLvKNfV+HUc72\nT3oOIz7NtYVAGYnykZPJ3B8OykSOLfzLA1zwlW49BkCGZAtLhSmtkmBIRA6T\ntSir8eog4YZO76TXPpIYDCuRbPICfMfMNjx0GaquAF4UYmEos68PqfXHC4a9\n7TcnEzRcJ0tkRSfPTLVEQ6czxrwhft9jG3MQQwDJhSRmwEFyt0Zs/VgMYLR1\nhl+GkUQNuu3/bX77RvLXbkMFBcsB3E/T77C7fcPxkvAFi5b2jgLtLJ3qnCGb\nN5XWCsv0RZt28bCMDJsCRIqqNtuiSs34W24RmcXkpacEg7zv2k/Xt0LV4odx\no69Ci8vSuJPIV7JoPDDTmtNPhdXAT2KVZpm4l7xoBNLj2wPnWDFcu2K4EATZ\nQPZfy9Osqnczes/TWPsowp3vSoVM+fqhabWzOa45DxZoETG+WGEPI1SEbAi3\nldRjDtNiO0ziIKUu+kiZVIaHIEAvP0VoWnVrxs5biFG+240qAU3ThyxF3O3a\nGIeQMrJiIDpsx1XFHoTOJD6vWM4Zc12eQDFiOx1axkCaonCvX+zuLXsDeHpF\nv2iRuNLPZ9ngQPxclSl/FKcxao4SjuMcmTINSb8k1D9OQRNoeEwS8331559t\nrPfcspD/gVe15GEHPL5s0hKy3yks39ZI+EislIZffgv0H/R2GORVVus5C78c\nk890\r\n=QNTu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFmQyytMWQehmICjIGvwyG1Ecm1seCUu2+NunjLZRvTQIgLy8XvZa24TuuOBUVUdjOG2TyN/HrHqLVllg76gE4k7M="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.10_1623318769608_0.46013467364446203"},"_hasShrinkwrap":false},"0.2.5-alpha.11":{"name":"@aliretail/epoch-cli","version":"0.2.5-alpha.11","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.11","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/15/09/823a26be-3e81-410a-8ace-cff80877188f.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.5-alpha.11","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-B527P+YXaYa2DNZ82tZodMcKCEOqHLAgKWO6BM41q/Y9QOeECq2A62SFfV1aIz0ueAeX40f1k7J3SEnTsAeDHA==","shasum":"d50d229a256de493e036f1d2ea845e6a32be659d","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5-alpha.11.tgz","fileCount":141,"unpackedSize":236771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyHZfCRA9TVsSAnZWagAAnGIP/j8G8lEcHzDMto5au7j5\nDIk8h71Ckxg1bNIU1uzsDT8r2hGtKhMUU3AjMM23NwcexZmI++K5/JoRNh72\nyGUPZOLFhmf69nGEEi+jPOV7lvw+l9Gw6LBlVSKqWUma30rgoRtJqUVB+3UU\n3sbdx1gpgyUowtlW2lImXpqhinW9et9jX9Hk7pahNZXudjaRa29xzDnUA3ZR\ny8dq/rSXM+KTp/7RS4qIfRuRjSJyj99d5yYIyZlaW53h2m7lb1hwyhHBMgn3\nR0aKzTE2c0HryUNSIX4pG564kCj7dCMheiAfxN58GRsHuX0waWd4Og7Y9DeK\noPQDIJjo4KjLJZ/TyUhO7wLxtFiZ06VcMSNFfQWuIKUzAoqvw5DN3mghS7Lr\nBtAGFWPG8whdtXZQHtKNIkDwUI4KaOINKX788T/iHwmIEV5NFnDgPh2Sffbz\n56BDq2YqyJWWspzPKAUEtp/RpwqSytkzUc9+58Ar4ydBOwxpLl1ZUFSXMkTS\nL6kUWfxjPAx92mY7Fz9x9MG+md/a0jSVECDfNLuTeJOO6hPmEU7SsGUHEcmu\nakabTK52MOf7//HIOPUN2gFBT9L5W6gbKXG/BYA8Qdv/+sfnXdeW8nqwMyuI\n+sGSK6AB1X6+wmryGIz2HOiQ4mR+EjSIgonQTgAKz+A+uPp1cmjfqIsDJ6E7\nZpYo\r\n=vST9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKZbrHTcvxUtvNV77gqnjjist9iBSPlGH8N35MSDTOKQIhAITS40a+dpqu/S7b5P/Cjo+ISVs9KfIKwT9aadsh3OhA"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5-alpha.11_1623750239516_0.7293270172660795"},"_hasShrinkwrap":false},"0.2.5":{"name":"@aliretail/epoch-cli","version":"0.2.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.5-alpha.11","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/15/09/65700ae1-5ee8-420b-ba6e-737eae18386b.tgz","_id":"@aliretail/epoch-cli@0.2.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-4NLwlilLW+/L7NLxnKD8Xj2IjCG8wDWDsSPWxBqZd2nkPb3N60Jq1l8NJzxRNzjpfxibNkrqZvXi/SAAUYhTBw==","shasum":"2964ad531309c21d7f95f8d14971d3d757800680","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.5.tgz","fileCount":141,"unpackedSize":236762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyHeLCRA9TVsSAnZWagAAuK4P/05nnAQuwl4QpxVLsTdh\n2mMUKurEd833CrR9vMmE/Dtg2qn2kgbxVeF/RHPOh5IV4esTDflixBh2mbt9\nySyErOKw62Q6pxfTQkcmM9U5Ntkn6NCboKN8OUqSWdmNP+7sC3bEZBsc0aan\nNkPkYQXN+bXH2V4yVH7fHBC5FjuxXXRpR0s0jScxQiL3cKYTC2XilO9awaAi\nV1BVtd+qINykkqIHP8y5GwytSIc7kGT+UsFsiZtJYhlTG8vPY4CqrroTqni3\n7ZKcO7NT61HnnFLVNNSum6uE5ePpMqg85fEN6xs6s8hkMfxu7Iezu1H1hoAd\nJBEb8qPw+D4UZJ1gSiVLFtXdmP9zmFnfziDHxFFMGooIyqiD3sWlRfGvfImQ\n8K6J1o9JXYkJZPFDQPTMDFgnd62J9cgomJbchnb0JUJ0h6LCNK3QgJRsRYRe\nWrnfbxDjwSP4QXTKrqjvT/ohIOIG/NkAvyja03kEqPczaRj29O/vp63AXX0L\ngBpkHOLu3pQKyIqsX66geN1aPnx53juaOz+HHT3gQ1avuHaoW6nFCjs7Z13q\nKaIAHgjQLfwLOBZ5+eS1v5VoSO2HjaXrng7OpNKFrMgmLGO6nMlu/8UTUeP+\njeK6sWH+ycd6c9URsWpqxNIV0aXNexUUfowNNrgS7NrYWa+vU1qzJzMaIN9S\nkV86\r\n=I//1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvC52rqHzxLJ1fGWkyuWkIJTL7jUXq5vqeZ5tADimj2AiEA4QqtV5avACAX4LKpVHdUIreAfS32DWaWuyFZqIxbtmU="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.5_1623750539294_0.11135798559627208"},"_hasShrinkwrap":false},"0.2.6-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/17/12/9130e1cb-2aa8-4874-bc08-3100fcee8cfa.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xOUDih2U2Y2V1r0sL4L0GTuvz92Fa99GTwUfxAvsBe3dcHrpvSc0MiPbuEHsj5ocJ1lJx3qucJhf+uEPWm+RlA==","shasum":"59875fbf61e581860b66ab632450f19a8316eec0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.1.tgz","fileCount":141,"unpackedSize":236982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyz+pCRA9TVsSAnZWagAARsIP/0ah6QWlgs08MklQ3kc2\n6bE8VDC7SBFTI2N3npD+caZ++jekDXL0FdxGTwI32s8JYIgFa0SSrPmTyf+F\nJksG+VdasvCi+2QQZ2fp7SPoF8nxqu94ayKVKIpH+l8wBNjSS62awz6ujd3T\nEiLknNmPcnExnxsyV9A/qQJl6hJg19lu0rdUifGh0ZFVtFnL1sG9iEYeLrLp\nuWFhx+zyWKtTfeBc4sJqsUy4Rq/o0U7ofWNDYFwDqvZGp5Zi2C+a+TyUTQdU\nMA5WN9IueY2FmgKwOLjpWDx+v1lf53LIIyuQI8Ly9DJ/QpxUA4JxQNZ4pPnS\nMlnGQgQPv1GDH+2D5yIXMWXzhp8yetrDD76l7Qb2H8n14xOfdK930vM8jFuR\nIPtLRHiyE0AR3X9ay91jzyiLq80wFiXR4V6k9W5YZ9QVi3x7jb1PRbIehb4g\nULl5pfAnA/6Gjt3Cisp06BrL0axxfYPAOLXMkDW4SGy9Q4JUSWKQpH+S48Qf\ntUAjE7X8oS87C4XgeFJRt3pv9O0yuBPSuTTaUOPKAy6Rsr79d0a9Y3+u1jN8\nJ5meJABAiVNCVvbbZ3mRSnLF8VvkT0xk2bRo43R+VLZYYXCDGJgXYI1kRZQ9\ni2MAb+4WdWiVCbm8vpDMZeN2+kSDwjI2db5SA/DCGRtPvZyNAmdWz1u+Cucc\nZ9KL\r\n=MhHT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNNB3EG5wa/j+DJ10kVn9tZY12kWTLzFoV5CKSsoSiKAiEA/HaRcK4RG9f9Z9FDavL1Z1BUdzZAnHOHUnY84BDhSWs="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.1_1623932841241_0.9102311087772288"},"_hasShrinkwrap":false},"0.2.6-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.0-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/19/13/0202c438-f074-4f79-91bb-bced5cada10e.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5AgpxnA5rg9wOihYzmPm2zl01F3STgYbl5fOulgHLNz3GyHkwQhlpmfomVa5q4EAdgvLi6UVQ8pFOdCP2c/rjQ==","shasum":"d387e81b8e431758958170edd258e6e054124164","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.2.tgz","fileCount":141,"unpackedSize":236983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzexWCRA9TVsSAnZWagAAifkP/i9CWDpIOMgGmH/eduij\n1T0GEbwDeBpqKvFCceO/5KxR5K8pq7wcjcInY46N1ysq7Pqb9gR4ZJelUSxw\nd/ZQIrpl+SRqEsDaDAzl1HLdLphbGUzuYdXd/EI5rbgD+ZM1s8YhcV4vbBfz\n9iP7HHU1FDiwrCu3AEotxqZ4Vhp7+VQ6qO3U/h0bKPwWlsoAG+zZ106fPp+M\nH2ItNwCKY3a61bMWQS2P/pk4ek5NcfziEx/eQukkcdKxcvHUw/jchQXYkBSs\n7kcWtwSAfwPtaXarbrdqcUSlaTJO3NAnYrValdgDDa+t/Ncwf4NOCLNys5Ez\n8E7gTFkScMR4JmksEZ/5QBPbdMALsmZw6xkAKrwQgrp0vvChGVgtfmqKKw/M\nmmVnAkZo+8EnIkhhHTK+eyXE8OAOVxW9LylgJ74+s/E5t3jXjj3xhALEPzpF\nNDG/GBNsF6WMp3Yqm96d6fUv07PVEURZQAQsSEfsajTOX4cxJl/7HfVszyuH\nAP4aLqmW33RG4xKmDrHMTyEq04wOk9mP0LlBQO/zo+Eh/h1OgsXRNPwmA1yH\nif0Dwc2tx2RtvTn/Hup/fhqPGnaoR0lwSFwYToQNxm4SJDPeGTkf1DobcYul\nPOtfDFXBmVnCjmXhhNILvbnCoZQ/Fqi3B5/VcxGNCWYTumrMhEw8jFsGSCEL\nj+dk\r\n=yXYQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6zO1WmwlnM3VH/UT5IYqlKNZ1MGGGUmq6tQ7RCX2HugIhAKK99SulskCdpzQLO5KAXyvtvQmjESHoQrkKtvK7H4QV"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.2_1624108117401_0.9316607802240262"},"_hasShrinkwrap":false},"0.2.6-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/22/10/989ebcac-b0d9-4dd0-9e98-39e7c56ddc13.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-puCP8rcEQv/fbK36zvbiTIaXNThmv0XqNVATA9QiNf5sZLbS4pRt59WTYP4ia7REC4BcpZuQjm4DGL2sJZv7jg==","shasum":"62e1c568418b7f0d9353999317362f844d605f09","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.3.tgz","fileCount":141,"unpackedSize":236983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0b40CRA9TVsSAnZWagAAmTwP/1TJ8/h7Qg+iHLo5NMUJ\n/wrcwip4eEMO4IwHXY83P+IWfQm5qrLI+e6rE0aBy2Nke0+CaGTDobI49bRH\njiq6PpSpSGF8ssBLoOllFNTGRT4pb1X+9tOIsqr7hBC1esdan3UZIqlykH9f\noVvLscJdMkeuuc38mADJJBb27cdCj03pcn5HxlHuuoaZBTta2OjgG8qBLnEG\n4xtJbEwjlehgQKjUNboHzyCckQu1XJSTWmnQkQ/YrdIcfUyH3YLgn+lrs18d\nSrOkkTiqI/VCBZIDN16Yy9YDD7Xr7TxHfxxGFyy/Af48kJdBcFxPziNBHNrL\nKC/GyPSZFnmZqHrPrwFpEF7teBWwP24cx/1i87UJnUHm4G/UgbDHxs3JV9Ye\nAGwVGrbkX1XwZ/RzAiJiEJkEaN27Wqf2ZKmOnb1qecJtWDHQ+EJwoAmXtNn3\nHHwhZlKzc5X2tGZ4T3K53jjvwCU92PQqYuIwODs273UXrBhOPBxVI9xzDq8q\ncEGOndyIFCNRmXr8rA2m5njKBUWfrHGrjvZwnrGbclej7TbTV5WyVm4aMVQf\nq4Cyh05OhmNMO4nZ7eBVuysivJGNVyTPvTf+SlsvRDLR7tBDjnjNeMQE9f95\n13kqUa0S6HpPw6yygEAEgcsirOgZ24dYzfWaSwJuNPYZY+Z6m/QheJPg+YcV\nIWJ3\r\n=uMOq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVPahDQQkhnail/nVXrm95+kLFIivARDKMJ+lgtjAO0wIhAI+Q7O076eC+sn1umhWCBKenXD/9AH1GxzxhD14WL+zR"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.3_1624358451693_0.5271907588632385"},"_hasShrinkwrap":false},"0.2.6-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/23/09/ecff16bb-ad5c-4176-ad8d-c763963085c8.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-kuegh4cKPwIBbIGX5sWwpOaTzKCX8CLoEsIo3HZxl1dhbT1hgKoa14Fo1mVxzekIKeJOhLmY6DXSTjWwS8744g==","shasum":"6d1d467b73afd38b2cf032d55f0ab26dfe1dac98","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.4.tgz","fileCount":141,"unpackedSize":237204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0wKbCRA9TVsSAnZWagAAOGsP/i/u+BizYRByGe5+YqO+\n70YtLvGHEmolHKXUd92rxVGBfrcQDfTJ+LXCclVRHF0ntaHyfu79aguSw3Au\nDllLy1CEAi1KRP8t8+kmsLA8Rk2oC508+kb7wfjsuDadJgeXbhBtJgw4ihCc\nXhllYCexvKqIQrzl4vnI2KEhEV+E8svmL3EYnhdQSESWQXLeUTSzu1hS2Vww\n4T+Jt0v6hpPwd+sGENQ4wrEiTcrj0hI7GH6z33tPzf7ycWxA+C5kvwDX9ec+\nVxn9zu4JGxSYgIbMAnEhyy/t+d7Ba4WFvG244wxlceSkGqnZ1iefBIevouL/\nzFGuvOFkXAsmxy1sBvZXlpQmVQzXllaxtE1QQlnufRNU/7x9vKFZJeeL7s+O\nvnuvAeofQFPiPW5nCJySoKauDHVDofA8jsctvieb+fZg0z8ClefCGCzcaraC\noBimDJ8htUQEIGkyMZQ/QFaEKRSqs6bgbamWd8GMWdwvlxBIUw4YgSb9FFpE\nFd08Q+aMHrlWtzEacTTYDuIeuAugZeNkaxkqyzJuDvJrkBUJ7AJHC+yiJ4TM\n3SN/8NezJ3lFT+Iwu92F59oLXCsHiJWUo5omeMdijS/M5Ve4I+mQKL46NzWw\nGL7tTKsLAiUZSl8MDzYiacdaAQOuJrnctIWJ/sWlrrAW9gDgA7D/9Kv7qqBv\nitF1\r\n=X4jp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+6zNAm0nN2lSWwAyHtDhFKDic6QuPjahI8nZtnaV2zAiEAg5gQU+hVGktCRDb5Bz52OIyvEdWOZm9s9uj3lwojxCg="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.4_1624441499326_0.16661647963167714"},"_hasShrinkwrap":false},"0.2.6-alpha.5":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/24/11/5f951eef-1e33-4af5-817e-83c96c20d388.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UWrDRrEbxgWErvsTDxrXDpuSoVNl2gL0+XhQefsX+it/ROArwN1jSds1XhL5BRPoAMjXFJuNvYnzOyrkTcxlzg==","shasum":"ea8a8c6211418185ddbf56fd172c43a752c2f6f8","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.5.tgz","fileCount":141,"unpackedSize":237204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1GqOCRA9TVsSAnZWagAAOjcP/Rxy/HP7brfcT2k1TRdy\nbYSoz8dpcrWnkpluOxbKILW2PkvPA6dYpV/AfwiJ6swmNbCI4UiECmxDYPt8\njfbf6aDs55wtyAWnBAqHDTIw+9Jb6QQQ/bomCsRQzfd9SDKo1AvxYUYpxO2J\n4nfLEHMNx56dM5vutGaipg/YDOUds9ACv5HCOrXV+Hqw+SdO0bA0uFO9eir1\n+st8W8Uck9USbluqPXomEjFdBeKNBhE7U86OQFAupFDCnfn6P769Li7UTbzw\nB4PetM8p2NZp2OYxcZ+xkcsJmeJiOFy2Kbr0Up9htRuHU651C0OUMJIuu9Lb\ndQGuBAiSiaMyswT7zqtK6T0ZQPNYCNrCCVzTKAa4+tANYxeRQ22iuHXfxE8A\n3LSjlA+hxHGmxcGkdQH2Q50kpB+XoJVCu+JGYtcngjSJIgH5wW8NAvSDVsFm\nUPvss/gRHeiaLpULiXpm4pB2Hmjr4WmjOr4GLFJw9JXdjTF/QkRJQEQXJ1qa\nFmXBieIiQ9ceYzSDk8T2CiCC1g4/Msq2A1vvVw+QsFpxa7MHTouciHeMzD0E\nW0ihfkmZ7QAlVFdxXA7bCrnCTXiBM+W2Ug0PraNCfgrmINgIHB5KBjVmlkqj\nZBecbdS3emRL2p2X1cpmtxFUSY1YB0aozqlzVh6YjOJLVUsxSEjKqeSCkkX+\n+Ifg\r\n=CPel\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgHEgQWmfm/efkKM5GHryuyfcMpHSrdDGIe4Wo83IBtAiApRI7mjNRU6FaHHmAF44Bxhsq0r7BlSgeixnvfVX+sdg=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.5_1624533646102_0.11180123006047205"},"_hasShrinkwrap":false},"0.2.6-alpha.7":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.7","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.7","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/06/29/07/fb065533-d03f-4bf4-ba88-0f6f62c2743f.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.7","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yom+SnCzU08XWQByA/bVOagQ0gLDFSJd0jCoA068e3nfrpCJHy2t/B6JpUFXn3hrSZH1qjJj8vW2rg9H4gYRSg==","shasum":"fec01c189717993183b7844ef8c84a012abc4ee0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.7.tgz","fileCount":144,"unpackedSize":239081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2sk6CRA9TVsSAnZWagAAv5EP/RjJAQIK+oW07Py7EosB\nSLnnxFME328qGXQX+7LpBzqI0P3jhOcZrd13TiXz50mcAtfyGVCZXeHGbT8r\nBddyPZmQNY4Gzj9FeQFjzQ7cAUAUw1o4hkul7/PmA1ZXx6diY1bt5Pcrl8je\nAyBDXGBkG6tX0mQSBcJ065iadjHKvmFh64Q/h0uBh2uydSZ8BKuiJwMK1hhO\nDbOrli9AeVK8mbmFdHzZH4lmbhjC58YH6KwUp9tKIciYC9n2I2SYs+ELVMm1\nTKD9zOR7Mtwe6HBKj2ppctTfzqPUMcGPWMYp76s1xdmV3RokRebsFOmJF8/M\n3rsRxFI7vpDv+G0+FRSEjznehj5Fpnyhph/FiJOC3Di4ykPnlvKef6RJu8yF\n4e5nGDEEnP3IAZ8yM/hCZemdiVlbaKjosNTDjQVtlmHABWAZ5o1So2Twbtvh\nXGsm8UMcdBEGNw8Z+EO4lP83xTQJp3VH4amB367h1rGk8rjMhEXF4hMVEUeI\nvmhT+o58yvG0XswoU7XaIQeL8Y8ugXZw9ldzm+EPV6JLQnitDQOYAs+bF5oK\nPj9CCoELWlykavTLyhz/E6zMM9pNoACUrPD8Cs3uYaYMA5uHT+XiV38ItrRm\nwfLjBOblavc93FkNyIqXUzVCX+eHd66xnj5xqAf1nqp/SwbNiEExT+Pn0SY/\nNgBE\r\n=UBP1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgkSCRe6UXwsyPwxOU3JC3iZkGkhvCenDJXdPPpXPjUwIhAMdpcfir480e8sa4KV44/QH5TPjtdonRai7LVkI+8aWC"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.7_1624951098174_0.5830007040391407"},"_hasShrinkwrap":false},"0.2.6-alpha.8":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.8","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.8","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/01/07/d25456b9-14a7-4175-b8fa-0c7553d9832f.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.8","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-22gtBcCXMCzjLzQ3CVJcrCn4yK2QSDRpZ59Q/pKEy5pYq3yEpsGagmO73fcAx5CjYd2Xa+DRNxR1ee+AZXsDHA==","shasum":"0aaac9f18d67d3e40498fb90fb4c47b126203559","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.8.tgz","fileCount":143,"unpackedSize":239594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3XO3CRA9TVsSAnZWagAAt9IQAJmTEOcvFSaUYZfnp5bl\nKTDlONbTKblLjiP70jSTj5wzsmkPwnllp6Z7mZFmvjlRFMseKMKmEPRG6E2k\nbBO773Za9HqyNEevDQUu9rUi9Qz6CNYV9ja3zGuKtXLGOh9iI8lHdMPz5yQ0\nDIdhSZx/ISugWsCjvwMpvVEzFh6UWs2Y+45a6oTtwc+SFQ5xI4PJ3fvNK55M\n9PuScVmGfnerBFQqnPQncC/9OWptdbOE+XNoaSzBxrFPu3K1eNzB9Jb7XfmN\nxNLM8lHMlSBkdbFDvTIBijmcj+jfTIegWybYCmKPJzf4tFTWLQ9k745q9hyS\nzFNKDpvb0yxMw9hxjBXN2tXPdBjIbUx7IkiZYo0bOpWn5HbQc76pEnA6jAGa\nnJLfF8N5AEjZFy6aqTLVzMKquUutf2Y4rsPGzyfFfVq+xs3UX4ZFu0svwtbD\nQoGRkch+jwsT/Ip40I5rvNkUaSfknrJNmdzeXfMRdXLkn4OfSKSpaRZEWeEZ\nyhr4yll1bczqQxYSMlLPfauANcja1r1dINQeDqD2gTLGdGltolgmmsFMbzYf\nmJUsqvR9ZbdQi5tEmgWo9VizMCzyvS93MOnYsIrPesbL1NNTZBOhYobCwUsF\nUC7lTVESD08Ik/7EF34mOp9WAQsGnrNXUoLog+Z4Uqj+w8TovGdAuSGoXsSf\nXJD6\r\n=dH0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdWlXgAYKEUnEN+vqQSS1g82Es7JpatNHvdT3YXbSvHgIgO2PWVRewugNHLkMd8no8UV9RvEv6LLx2XMWcE8+uw5w="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.8_1625125815196_0.5578694731303986"},"_hasShrinkwrap":false},"0.2.6-alpha.9":{"name":"@aliretail/epoch-cli","version":"0.2.6-alpha.9","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.9","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/01/11/f2cbc050-0848-41e1-bf1b-6d3d74334979.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.6-alpha.9","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tn/6s7HBUleyf3qP6/yw3GWkuQ3LF8duyVN0ROQ4/e4JZyZQPEsCv4PbSXMgqfgacrjQQ7NDbTi7Bivsk/pKRA==","shasum":"f4a7e282bfc1dd2109cba4f869d05d9888932e5a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6-alpha.9.tgz","fileCount":144,"unpackedSize":240000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3abFCRA9TVsSAnZWagAA1/4P/32xHn/jJp2bRtgiaIRP\nAFUj8nPN9IU2Ve3NBxBRCFEsEq/ne57nvZclZhfxXb3jdHphnzvwqvRvu0Lw\nqEcpNg/v8E02KSj6/dU53qfwX/xXqVe6v48OVSreTtSNuvF5X2+GF+jRLadI\nYO3ZxodRJ6d6E3Pf3vbkX0lvp+F2U7H3p80paxuAv4yYHoFcDUynONSz51IV\noPnsgXKABTAnnuaKs7rYBIgqht9yMTpwkAP43rCiUiY/uBksTIZpgyiv8Hym\nocpx74KY2BWRJuTVKKEV/ejGXSmeW3BMBqEQARQMCZVTHDp32AJ+e5YPChEK\nVpEcgFJmL+GYCBdROW8qsmQU78juNWmcL3KfXDE94DFYJSP93zMPKfILe9VY\nfNxqHnhns4Gy5vuIk0yhKz+7ql2mjSwWXMKttbcrpbjg2GIxovpywrt1UGQ7\ntZh+0IaNw7MI5WqJuL89SMxo2N1Zs/rNaMNISWuScqP4Lq9w1aTW3nOIe2cE\n04emTRMO8uNQo9pe+/k6L+g8I7VYUTwfae8oHuNx0y3cJDY3BD+TDvReDEwt\npoPDMLj27OH7lKPNHmQQrTZbJbeb/Cqr0l5p4IHUn4wofH5mW0ksxaHkYnLb\nX9SVsSuvIu2iztNfnojun627yuTPv1fmAGdJTruHkdlBWPehVITgz/62hcli\nQnQV\r\n=dsax\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICXF+k6Uo/vLXvmK/IYy+HAU8g9wSA0MzDcQAFdS5IGTAiBJOCRk9sktArHWES0hF/utNR7HJs78DhPLJg01zXKRew=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6-alpha.9_1625138884711_0.6517236793283279"},"_hasShrinkwrap":false},"0.2.7-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.7-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.7-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/06/08/6e066026-924e-4877-ab47-c63ee17999b6.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.7-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-LjMZ12IhMx6VmwqbjHAABcqG0NUXVKb6XGReVFBRDPgKUPDN1ju79SdBtBXLUdDbWng9XB2RtupzRKp5942vHQ==","shasum":"832fa072796f6f287d256ba82bd37bdb4cd5eec5","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.7-alpha.1.tgz","fileCount":141,"unpackedSize":237391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5A64CRA9TVsSAnZWagAAGwsP/2PlGTUrb/eHSW5NCSLO\nH0N7M0zT5h7E9USa5nV9+qE1wDxb1oQTqiXJAWLuwfv8ZOtAfs0sDYLIorKy\nfFdu+OIrVrSYpbvCgu/+ysl6gaVSF74fw8pgzn9+GoOHt0JHtg0pnXpGP4u+\np6heGeluRM7un16OSWfeSMK1NrZ3xuCLcu5+McbolXblSCcc0Vkkg/AB4ny7\nHF0O9oGLuqMNqm+H3B+4/TYERxOkEsrv7wzVIwT1psF4x6D03Dz3PGJY2r8V\nyo8tVVyiW02IhnxJfpmJcE6r2fj8pUmdxpTGZnfOB62ykWInDv2UAvmksVW/\ne36dBXdPRMEw+dr3oXpTRKazF2hMlBXAe6qoT+K6m/XG+xdNJuDThw3UvBRu\nes1aYYr3Lb/ZtNBp59l1J2C+t5eeOEebwXUXqNVRO0ekMpyT0qjSC3NlyqGY\nuUqRRLC6TcaIOA5u5gO65CvGO3yVeXWWVHLmF4dPHWtoI9j+2AP1ruxW3d2t\niwI8+pUozJechzjQZ3tlJGoSml2FsW7Il8wv+VI3cXgpg6XK4F5UqbES87NM\nViooKr/CcghmPW98cO7rTu+Ck5QR0wqywTOFVqL/WpKvrDGvA73EkbSqDWZZ\neH3D/PXCSMX5O8/ricoXjyGR3+ak4hCfw7HpGbux7ZwngVZ15p/Aa4eQSetJ\nURpa\r\n=Ag1J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzraCbSaFbdUpwOewZqlXOIm5xIotKTFl2NMQgDQ+WiAiBrsFpkDj8XkAdAG+1za5vx+FWsxlcdbQXDMbcwBqZ3SQ=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.7-alpha.1_1625558711774_0.39062378452249624"},"_hasShrinkwrap":false},"0.2.6":{"name":"@aliretail/epoch-cli","version":"0.2.6","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.6-alpha.9","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/07/03/588dd110-01f3-42e5-99fc-126d21f1198f.tgz","_id":"@aliretail/epoch-cli@0.2.6","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-09/4uNGl5dCLiYaVzOmf7eeQ1ULv2yMJ6hK/FSX7s+tmKeLD2M2mQInJqQGeNZw9t3fK5NiTEV4uxZ/Jc3MEvQ==","shasum":"bd2e3f63a8b97eade0633269438fc9c231831890","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.6.tgz","fileCount":144,"unpackedSize":240428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5R1lCRA9TVsSAnZWagAAZiEP/jqW724t0okwh34roqxC\nwdwdyzHn71Fq6pw45Gu3ubsn5CB5vVAnYDNJGRbwkhiU19fw0Wt3asCoA3aX\n/udQj0Vky0NVBSy5jaJFpypWFu4NuM8+I9JMOuBLGViWsSkpCO65GRFx0KFt\nyKt0rHflAE/iirMh2g0du7Odq+0knIKv+86ZeZggMdlj6ZntFdeYC4SCYYFE\nRT7aN4CA6F6QnuLbn8NbK2Xjku0MhJgKryghE3R7z+va8N0UMsXZ1KzI8TSo\ntoGToFyfH6N4P2yVVzYbIuJmona9BNAwHEB3Cnnfoypi/YFgWDPgaIy4YveK\nd6pWJK3z7vuxwQsXfZYa6nm/eh3LUmzv65gMB9MFoUJd5ykZ7FoFJa0fFSHT\nred9Ks4q6ca2zSHAahrE98ucM0GYfKsqeqXeRKIG/y6hajoAKe3Z2u/4O0tm\n1B7ZC/yHmCfPqOCpCuEyfBPfMx3B+zTw2jVtWDqSfkr1ijZ+QPChOl0757NT\nm5PYYp/NLQtPQgA3ge+azfo2Y2f6I2XqDuuTmPxGXlG51k+QvjNmW5GK2dg6\n9NDMEJHF6lRzyVyvS15psWyQL8kPN5QC418LtnfXIzZGus54Bto/8bxzkVxY\nDr2w6eeIAysXgG70Dc0QTcYALqoWLbOuGPQuNHggtdtYWi2sE4sLHsFLElji\nQrRO\r\n=jh1k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYfqHRYtI9vmpOL+7UJbWLLeTFG8mdYHaVXsJlM5pePAIgKHB3j2mO7hWZDgd7vZsyfHNC18OzvqtQu4/btL3vKo0="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.6_1625628005321_0.4980345404106481"},"_hasShrinkwrap":false},"0.2.7-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.7-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.7-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/08/09/921d5138-40e7-4888-ac4a-fd50f46b4c1d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.7-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-w5ARLDZ5Z+x6x1wfkv8RE+JHsfcZGwiybcmtUkibHEo52Zje07T6V9KQuNFcE9Y5nmp9vfnWKYQTIgMPgIgB8w==","shasum":"86468366c7eca9e45f14bfe90b6b5a733a3277d0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.7-alpha.2.tgz","fileCount":144,"unpackedSize":241175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5sIsCRA9TVsSAnZWagAAAFwP/1FHr22VRThfuZuXz67o\nkhPCfahZyQqRaLMJnHkWNltwa26IFMOEMVwQBgnr9kGXXcXFkuVWQ0loK0cK\ns06tW33ZEdGeAjFJlWbX+bieJQEmThkF35N+vxnP15Cv4BbrL6cHWt/u1Vnw\n0+3f82ay047a543zNYHORqsyT1gwXPhpfhgum2s2XG7LCEcnqKOgd/dFIbVG\nBxT7l/oz4bEJzVWDnHatzwOFTqm1mIqHJFgEby0FVMz+aAsEOmBzLanL5J+n\nTERhoSDLRsVk5pgACEGsRpkjE2v04houUQDt/6CZ3hslj3iVSYEHipzVzeCN\nO8qy/rJvfEooUtzvO0x41rV/ui/xwkK0lILLIsFAYkcdF/CKESwyflWCD9ug\nwVaw2FRb2E6I0Yyi5iVv7CbH8jFqFyPE6l5S/AwyxLgcZtN5Za/rpvfPO+Qk\nxhfWZfkY8Xgr+eDy6H7rPwuH/4JNjpXyF6hPiakcC2wuluIvfJ3Rylyz7VHN\nMSaXOlv0OVAq7oHRxG+BeGM48D8piuR6UMG0ic6/OrBSsbHdmdR9XtY5xOgA\nWKLt6/LTuPEF3Bdt63c2IrHx3NB4Sb/Ke6uqE5APCBMG0Hw+qeAZD/gFuNxf\n70GW6IqQefD4xrJ8nfElMoNvf+wUgsFCfKzvxxIdD2jKNJkYNv+cTOvy4qYG\nF697\r\n=9n1z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChUJ0xPeHNcmGj0RvzwnhCQxPf2Gsa/Bm7N9sE77FRTwIhANrYa713i2xogj0XcFcPFTSfhDjQjxZ/RBtfEGfnfC89"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.7-alpha.2_1625735723660_0.8664268669488819"},"_hasShrinkwrap":false},"0.2.7":{"name":"@aliretail/epoch-cli","version":"0.2.7","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.7-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/08/12/db8422ea-fb3b-43e0-9195-2fdfbd30fb36.tgz","_id":"@aliretail/epoch-cli@0.2.7","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sRmWZQyZa0eFGeEBgwUHF5Sy4SNuTn8AGz0zZdXU7dagfm19AQKyAMcnjTSYr+QXOU7c0q75KuWFo6hv0qHh9A==","shasum":"3de60ba7a0d7a60103536e4f0a25ad4a067eba9b","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.7.tgz","fileCount":144,"unpackedSize":241167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5uwSCRA9TVsSAnZWagAAvmQP/01J+YnbRtiQ6T9B/Dgf\nFd/s2HTP6IuSpH61uXgi05pJU2DTKymdUCr5Xn/aiujgRDGlWPo3X9CETFCI\nvqbaXrIrLXr+28zWK+rrNW6Hkcs/BeFWCkOR4YiFjkYTY/M+dZj1eCSzm21V\nUi2HCmRLpsU5GXVchf5JdwyQW3AndHXHVi3pfMEAWStMMggsgFBAIzsZiytT\nq9KCDAYRcLEx2/44btf+JQ7tfhy22APfqi9X43d38Ufi0PqMyPAN9lcucHcz\n2K6GHkuAunLrn8dRuUv+A6lDLt9oYbyMmCAo5JsDso9i2MAwZcq+eQFxhMvk\njlnXO9RfN97zpDWNgTv3BV5ebbUBT4g9xr1bqoKFJkZaZEc9RzEEBiywyQgI\n4SckcbPeGkYSEZhEpE7AOgQ5/fut4xyR4PDrW4t1fTxtOREbiOUW1MFgUxCa\nGMh5HSDTkUNipP+Pn2koXMbvaZKLpNTr3IbdYqXuLdKpUf/Jj80YRpxnc7P/\nogfNt4+AOzvDbXWt/BcAfOvcxg6pnRyMy4J0GCd/v/Z7BHbUX4ioRbYyXobG\nUl+28AUI8V4+Q8/0TKp7fBW9eMJMWwAzwdjnvN9Iip+fctIzESb+sdo44TtD\nN0fP6kstiqgvljJ4EAYsjCe6bRetevtyRTXiVihZ0nmStYUj7YqAIDOL4s+6\n4HRM\r\n=7il0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPMJMz1kC+qX11XMP4AfZcQrhdrsVsNlKtIAyRg7QQ3QIhAI1DF85YIlKX48Q9kUDH1Z9IvuolNVrToj4I6Mf/OIZE"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.7_1625746450158_0.04156365874525969"},"_hasShrinkwrap":false},"0.2.8-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.8-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.8-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/14/06/f7d3d668-6d29-45f5-ab70-b61c41a51eb8.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.8-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mDxJS1CoLMweoIiPaHJ89/ZS0oaxRkBXme/BlFoYYz0HdYmrED17iFOAQ+o2HQy9sqVegnncByyvSTc7JWcuFA==","shasum":"056bc6410a2c7a7936f39320208b99804689d77f","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.8-alpha.1.tgz","fileCount":145,"unpackedSize":241915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7oLTCRA9TVsSAnZWagAAB/QP/im7khj/NIKTIAUOBRpR\nFKs5wVZZI6NYkTMl1j+gSq0OZpWYnKjg521T+80peBIPjJO4rHm6pDgBb/Ac\nKisM/mQz4faDrqeVC9KfD/t7qgu7SiMnecktrI1b2ICtewTi/blsX5XbrShx\nWlGDbKrC8DsQgZzaXQV1Oljo+OyjFLjTSz5MRuPvfJMzlbgFtJrzPoS/nlxE\nJcVojyqm4CgO8bAU79XHw0txWbG0Euih0d/PSmyVurFSnh6k81zpzxv91zR4\njvmZSVLkEvGU9gXYOFjAMjPizO/weFrh+WQ+8UFNPr8r+6imNKYeywdfGn8Y\nNqq7t2k+ZcQ4mAhHFutIjDD+R8+0aWuD9lT2LZHUgK507tL9XWQBe7IeNuEO\niytmFiLtjyFfSYjWgBflPj9Q8xaa0rxHqceEn//k3p5GtO7WoG2wa5H4G89L\nrVYCHDcSNS/A1JdBbVHurPT1nmka+8iZMa7zMsWcG2Xg1oSLTKwWgMlrppbS\nWplm5N1Y6S1N1U4YBk/ddQ6FtouwQaZNqc9TjJTgeBSwF4RQozuFV006XrK7\navty/5j/4Z4b23UxHpcBKdjIJdRtdNjUyPsbDTjM88GmljIj8FI6jlJZPdQz\nv8J9zyL2po0RzIX7ypOqXHHJRE0o8J05hH4C9QY9QEAO73OsCt/Hlg8iiDbf\nbr5R\r\n=UxVO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvoE6S6munZSLGTJ1YECUutob/GgpMUs8nF5X7myb5WAiEA6LalVdP5SZvgqCevbjELY7VnxhsYxoH9N7KlBSEVfBM="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.8-alpha.1_1626243795032_0.1220812171771899"},"_hasShrinkwrap":false},"0.2.8-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.8-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.8-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/15/09/adbca80d-cfc4-443c-a4df-ac5e293fc345.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.8-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-MiHvrxUPZeyTWu9z5qZoAompSnJVS5L7wvVokYdODNAyW44byHP2KRXXgg1QUTKUCa9cHTalX0i9q3bVP9fDdg==","shasum":"9c83c039c8113ff651cab569a999d576eed68e41","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.8-alpha.2.tgz","fileCount":144,"unpackedSize":241917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8APWCRA9TVsSAnZWagAA+HwP/2SgX8LCH2Foq5eD2IfA\ngnFh4F5VfpInGQT4Yu9ylSlV124zNbkxPFzEPScR/3I2/yRGyJxmwiz9R8sn\nrUBXKW7Ubl9ww37LIYHuTRATgX6xHjj/44PG6+g3H1a69SO3FQDQ8j4LwFoL\nClknD86YVqDV5DSvXJuNK767+EDryizJ9ixbbGYY6LOKi6kuUfPamwDTrQs5\nI+8H4/p7//TXZHYDSthGPAnBFWSSzL5wM994UqgkbHA+jtJYohij21FvzJ2c\nYhguH4ltebz5ahdja/8ZZ+HMp8BO7POAXl/L/xhaiYkBD0r0cC4dS4UyxanB\nloYuED4Fc0zQqbHQ4USykdGLfn+nNShN7C5UizzusLmQ9b/uvnprwlKs+pPE\natZtUhP9INjXcTVe3Pn14EMQP41oMpN2+nTEbSjT2ITlTAgHmjy/We9IoI1a\nJJxA4x/DXIfQhE2Yr3YiPR9u1NuqgbPLpcx6F3NF6MxWm9ntcoh2NZdsgs6M\nbjJpxH908ap3X31UfsFaavbGpkcXVIAJ3CaxCaiLj43QFJeqAoboaeEwy/Tv\n1Uh34fVJ2RZAFa4+u6L+TFFyjflXkhBj4MnU1XBOBUpc01VWv7EUV6quchs7\nd4QYRn5+FA120OCwU00LWd8E7nANRPNeiw6pTuHrxZv9rS9i5ExiAUuXkPDf\nDiao\r\n=yBen\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD36wrKCUuCiIkA/8UtJcRbevoW6Jepr09KN5RlgVKcowIhALto6cU3bpxEM1s2fMLjOET1cVLhZfKrGOZe0aoaYEBj"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.8-alpha.2_1626342357412_0.6458852051588797"},"_hasShrinkwrap":false},"0.2.8":{"name":"@aliretail/epoch-cli","version":"0.2.8","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.8-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/15/11/c874400f-1ca8-43db-a1d4-c92e50610402.tgz","_id":"@aliretail/epoch-cli@0.2.8","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5/liL+aZ9d3GrEsGTk9PQAXnmTM2ni7JVTTR6iG53b9hoAd1sgZwpT/OLfUxp1Z3P2WwmpLq+oOGr/3WWB3xxQ==","shasum":"c37d390fc72adf38548613202ecc147de95d0795","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.8.tgz","fileCount":144,"unpackedSize":241909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8BdxCRA9TVsSAnZWagAAhoYP/iau1Pw7KntYMgeJm/zU\n8LYm2GRDGUCIn1LDiPSP01yasYBzTWtf1Fe5RRh9J7tz+WD01A3EITqgO66C\nppjLQQlJjQeMGeC2zgBWjFBeMt/7+WHi/JEg/PtObWpAok12/c+49RHqOmh2\nQIoHE1vpwT0etKJkVGF8gxadKNWvtEFpexMk/OwXdZAAqeTZ1+R16FhjX5FP\n5o51Z3A0w2ZHef/0CWC4cMOetjwOZgcOFN9vYjovDThk9FIMO7SzooObbO2Q\nn4TjyNab8m6rFGLC9JTBdu5TZC+zo6mxO/zGq9/93QRhaQxhLeyguciDUi85\n7L+mmJMS5t0ug07JWWPigfa7nj9eXqpvpJgLkzMaDx+LacqxVPkOv9GOIe7N\naddxtTrMMDRbMsGcrTrxnD9gMV1osNpKbHZxxRsllZat9AqgD2XFTDaTcfa5\nNfCsX9U7a690I2AtDEni+LLv+R3inZ66ZEuhmRMlE9ddQKqmVE2Q1+lm+WyD\nuc9EUl+K3tLoEZfcicgXXVHBAh2gXF6zhzYeNMCHO4xf9N9/FQmzIUiyUsnm\n8sQec0XVVNVVSj+MMmTRAbPtdtLw0rYs+m8TDEF5D20UWR1ZjmKl5i+bcSxb\nkVWl3We5Va8hZZ/yiCWjXbz5Ae6Jzc2dayKaEY+4z9Rq+70kQtznd0muS9U0\noM9d\r\n=SUhJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZjzpuAWuK1Zcwnv9RXA5E4qDdhPUWK7ug8XPBKiJ1hQIgBOvGz+gHALdJrb4Rg7EscFSg0vP39pgvhYGzw6ccO/g="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.8_1626347377745_0.7312264328907792"},"_hasShrinkwrap":false},"0.2.9-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.9-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.9-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/15/12/2b151732-115d-4c19-9b80-3b8e6d645fc6.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.9-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KvqI91bv0eXREkHfe0YBtp7i07etZcEwa+X/IUE2D6xedLZ57JMS8JYP/d79qGC1iE3d4My28C0Eckoph5XU8A==","shasum":"06e67a2618a38577389587a3cdfad92096bc0767","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.9-alpha.1.tgz","fileCount":144,"unpackedSize":242021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8CZRCRA9TVsSAnZWagAAdLcP/3+4NSYrvYIgDPKDnsdy\nTefIqthcLue5KRgZ3EHF9z+YXBwImW1CY/8uDQVDLOAsMLdCEKAyB6ECWNQe\nHw6oINj+rHOSSEtJq19ZjWYORSHl3xnN9u2etbz1yMfnndWmUAx8GCE2Ls6y\nqya5Lcryw5KhXrmrxiMlJpwn/l5HzdI/U3alFDtfdSbcXu4LRN9zSkvMaThi\nNGJMezir/mXiq1I4doMvV4cTTRBkMVKeB46rA3ILMy0OIkCmlVN/pv8gZxTE\nN5Isiy9/Tx9psqWaFZVCeWvuq2hSn1vBqanOy8Pt7uuyUgB0gzeylICzsZKC\nvZNnvycJrpAkjLHaw/CQNnrvtmx0VAbdR4E++nS6UHX/R9NzeeiBjcZZQybh\n5auRbtSCXwdlikjOrzn3Tygyas2DI8GfaNRVz/7g8vGqaHpg5x5KwPz3FWDy\nwxFhP9LKabmTCukNZDrkATBvkZpY04kug0+zoe5w2gwBeb4DjQb+9XCS4tdu\nQ+e+KG9rQ30ZOHhr/fjIb7omF973SVQqySJ3KFk4OjNCQ+0TnJ+v+rE/bd91\nyiP3OjnFYe2kZt+xOSrGl1pw5Pn2q4rAB6Y0z6Udaarvt4dKqtqMsfgrOq0+\ndq3dZA2VU1zhwHUWAbUc1Lm14Ly6xP9T/dR+ZbbZQI9fqYUizm+wUzlSSsTb\nCssU\r\n=jrZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAhwtsoN5JgperypXZV9bAnCL+9p04M0vGFKQ9Zjj8rVAiBmKlDu2XlOsXT0XJxBOpfwptnCW4Xz7KRD2wWS43nhQg=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.9-alpha.1_1626351185431_0.0522761691327438"},"_hasShrinkwrap":false},"0.2.9":{"name":"@aliretail/epoch-cli","version":"0.2.9","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.9-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/15/12/5d111ace-0fe3-441c-b24b-abd54338dcf5.tgz","_id":"@aliretail/epoch-cli@0.2.9","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-A1UAG0aLMqlit3EUSodJBpC0h6kDo6L3UcyDDpy78t6UqGVTYGsTprRdQoEKceT015hKO6Hiq7umWKLcToXDbA==","shasum":"e4e3c423f9e70b26ba7036530c0e096f9f760c1f","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.9.tgz","fileCount":144,"unpackedSize":242013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8CwzCRA9TVsSAnZWagAAqaQQAJFXeAfP0vzl+0kJdvwL\nilTDwX+GyZ/hwzkAhzFvgQS8KOv1eiVM3w8v0+drn7hdHgUkmvZKDnQSQrUK\nwnYVScQTAQvjK6sRDbeTu0bYGOsnqOtBjX0DxGQlsyRLpdw2JNSYWPAuw5kS\nyw4YuoyeRV3PuO5aCEWoNOxVr2Dh6BoO2AwvZaKeeYmfwB+Z/zwqQeg7Apt6\ntAPjYgGsqmVWXGy5kOBo3lgiNgr1cHiPA/vx1zBMQet0bqDK7CImXUuw/4Ph\nLQXMgQpG7tYouRcYGcvDmJygvMqZSIe5LVUFwR12eO5CWO+/bHf6RHJIqFXX\nzdvRncJtR2aTMTIkWEroOA4dlvLtwJ2FAvE+gD0NYLrb0Kzjoy3o7ZmlcWEU\n2HMCXF4WMSZUnhJ1HXn3XhGm42cJjAxSVRkgFrhljIbZc9Ygn4jAYATTDZ+X\nGfUkKMXf1HJM0iVCWwP/CXAjvSxXALIT/4JbDV2A41SbmOcWz41qSkz98nkN\nwigrqyIJxp015bEHaR1UjqMsIbKtwplh4oRV9aJbxYEqbHJY58L4oC1XCtyr\nXctZpqc089Xkt26c1R8ywKHuvKGwgaRpJblheZwi/7gWzc+xELk/rSnkIJ+q\ndaRHkWOrmQ7nNWFkvGgYdvZFlE8BCP8b0OfsUhW5HSlG1p0oAf6LDbvA7AwA\nr+AE\r\n=qjwy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEiwspEwMcpzz9s39VOswPwyxLWaKcyMc1H8c+yqmuBJAiBu5QEcocIzyQh3Jq3ppMyRa857G3TsgOlL+UxdHeO76g=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.9_1626352691072_0.019319665968371647"},"_hasShrinkwrap":false},"0.2.10-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.10-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.10-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/07/20/08/8115ddcc-d0da-4f19-8a79-b929e4de0ab9.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.10-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-y5i6O1FFuviS3mROH9THkkBxi2gndVSDCDafIEsfwUwgK7tLjuYd8lRTLjrG7mu/7ZO4BoHqb/+83OhdEnBXmg==","shasum":"45581174589bec8bd68793f90bc14d32a561579a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.10-alpha.1.tgz","fileCount":145,"unpackedSize":240679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9oyECRA9TVsSAnZWagAAw8QP/0rzU9aOoDo+yiTAk1oD\nynFyrG2uzDkuggbW5pG0XeE9y5BXaOVO4y7dd04JplesT2fQdMxuOsoZEdGB\noYwZu6R/QLuMl5CVEOAM8CKRaDyseGxU0dHj8OGbSXwxK+Td0Nzitj3uiu2j\nrpNNJLCAPZP7HunhfFUxau04ZKmeZMuOBvtjpItQY2uPIxR313NuxEImeD28\nEUozAEXHeZ240zX9O18AhkovwuLooEEBSrMrIU5soC7gNpg/iqQiAm+Y4xNv\nr8e2ne0O+w2oic3oV17dxr/I4Bd1Gbf4h1WlBl7nj1NfMHQJ9evHZxwh8LFY\n65DJuh+qL4NMKtV1coxQWdYuamoP+k6uV5U19hGvcLhcpVxcEUP6SL5dGxQI\n7LJEYVp55RFciQl6iigqD28yfVmPAgdQ0kk5wtBUGn9ohWEQ4sjwbhod9fqT\nhoF8JgoPcpjfIkClKN2lbqtOCSJsgxvotS01udrxkW0TcF9wFJJ48HW9GCNV\niUWZEUrxx5pNDjFrswnG8fmD7ME9jn09T7hJHTaSED9Q+yEMBZtxYuOJ4xlk\nRSJ0mqlN/L7jFKa9JD1qgPcYZDHv0GA3XnTeC/peRWvtZlhOsfo0wgU5BItx\np4xLlJXyKVSaxGx77wILg8Wq5QhrmckAemLUeZ2Yf57pAMo3zNkSFWoq22eD\nSUqu\r\n=ekP5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+Of0dUSVPqPYswl3PxlENviAEYUbR//Ez9t9v1GQkGAiBZzf0w9k3qSapIMwnJWoT5oqh4G1UFlhQmcktY7SaiQw=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.10-alpha.1_1626770564361_0.2868080957760313"},"_hasShrinkwrap":false},"0.2.10-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.10-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.10-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/09/a6e0a93c-9863-4ee3-a7bd-0186cd52da1a.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.10-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Je8hfBPxyQYubYr7mUyXfvoOn6j0ily5QRZj5jYQwUbC45t3VibYx8Cu3zRCibF6nExCOhn7J25NLU8s/x7QHQ==","shasum":"57da52ac864d042b9d698c6fda7a87c6860763ed","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.10-alpha.2.tgz","fileCount":147,"unpackedSize":240798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC7JMCRA9TVsSAnZWagAAkxEQAILbumd3KRv1E++Wyqmf\nxuKPijDL7nHCcCHpV5kAdAqKJzYfMLqhAn9rGGNZAMiiDIcD9G+uRsWE8owf\nr2rCZz4Qg8OMz228HtpBPaj9LGoDcGdfMIXR0Km6vPcx9iKt5gmpwRL74rPW\njXlApPFkIZ/K09OBOa5ktXR5W4JbxGT10Qie8B1DDZk+C1UTs36SHBkBUBGq\nEwpUahZrbS2Uyn9O8n0kC9Y4KnphNmUBC++xmh5yIwey8q54xDepTDjh4eXB\nor2GKBeVC1fmXpf3roCNg+g5nCcrCoRorV38xJzW2/Ub6UXnY5auIrFwiPvF\n2peQ9hdm3N3lylyIE9Qwvkmec7QceiTZ3Oh05xUprqGCRnNJV4v5GwrPcDhT\n8ecyJ24wBdZ5T80Mu7vWfVd2zNfc/OkkR4sr0NHQfru/FYNBLTTBmPDluIhZ\nW7WIr1befd9+Dc5rUzG8cbzRMoATvNmN6qw2jJipAOTG8ZzlFImdOxIzCFhY\nNzyzUVIedWNr5RkKdTx1qjVhLKhtAE0GgB29yG8MoE/SQ6N4jhrYBw5beQmj\nwnqAinCfSktr8gci1jlNYQSjuItsAwwKr4LQxyVuyASlmAhrCOu8lqVkt9w+\nXmdWIkuy4N8IJsozrMdndJGla7QH+sIF8UGbSfGkj2kcSg+kHFqiEtIvdASf\nhPLC\r\n=GO0b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBhVJ7OFJ0AeANyf/Ry7ynax4p5sVmhL0IF6IpTKsR1AIgQZhe576fULUWLtOu8rtOBb7JxpmgxfruwsqItjXAA10="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.10-alpha.2_1628156491947_0.1019776627012301"},"_hasShrinkwrap":false},"0.2.10":{"name":"@aliretail/epoch-cli","version":"0.2.10","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.10-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/09/cba5c772-7c48-4ceb-9198-0fa77da2e4d9.tgz","_id":"@aliretail/epoch-cli@0.2.10","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-I7nNwtk++++cOY9vLG9Cipmu6sfWezFwWbZ9ZYe3R1Y9Mp3u3R/HIX2Q2pIz2vH2VMvPBIj0liiBSK3p0wv07g==","shasum":"1d633cfadda5a9bc0bb728f80bf58c6ae121fd73","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.10.tgz","fileCount":147,"unpackedSize":240790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC7UhCRA9TVsSAnZWagAA7FcP/ibijLMT2aONfXDLHKX9\n9oD6I+fCckdzq8jA39RRYqCc3OU/jFjTEJ8GrWLqFxiZw7yJHEX4lq6I7kZG\n0aMjmSLvtOgamTRxcIIFc4vUXh43b0k5SUIVwl+hEY3JgzNV/49u+l7BKnOy\nPFFT3MJKOqVKqgs9zecABTT1uAxYKt10nUmsqVMeYJXOHOlB0ORBVKmwF+n3\nXwIIt9LFcU/DRMdpIatMWQ3NajRtCtmO+fl/dt1nuPU0BKvDi+35UjwsZs3J\n79nBasA3w819rrPi4UxrhhrjyskLzmeAnP5ON8zx15LW14nFLVOkqWGJAYs1\nbJUVhbNwl7znTzrKxeG3zyuy85aWcL6h12vHFcTMrRlFzzN2mRS6D5XfcQPI\n3rZWEowHLf5fzUAqq//oXovM6maeYkBzI7Ds/yci9TMF4ZkRtGo6CWaFeR5X\nIVAC6bjsdIwYEMd3DHzxh4i4uyaNvnXTvJAnZwMlINuTj9ZBfl1EJg39hjAM\nIUjGYmtz+G8cekqCBCtwI8Cs10a5lIZQP1O43Kwin29nwFEuSEFS/DWR8bha\nz2bVrwBoH67PEPJttZJzS/Txq3nk9XxdZhMtjQG8l8fcv5wGrB5lIyh8Lglg\n5W4XBJMO/S2LKxEPX0c228faIsJ7MlquKvBrqh/JES3KM7vFDgdJajTCyNRC\n6Qz/\r\n=/JN0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC660Bf5skCcXOfu6AHG0sF4DUYHny+dFKQwZzxnQegPAIhAIqHpr74i2eKadFkHhRcmgBW+fDGq9xLjLcXKq9LWYU4"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.10_1628157216935_0.8311790694763685"},"_hasShrinkwrap":false},"0.2.11-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.11-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.11-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/14/a57f4c4e-10ff-4b07-aca1-d9f1e3bc1605.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.11-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KM9NvQw5fbJcjE50et+dkkAT+Ya4wgpPIoGn68qO3BAnbB2B7ir+PfN/psbyru3B7N69UpCfiiJdnsn+qBYITg==","shasum":"fe000f747df1de3cdea4497196aed249dcffac14","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.11-alpha.1.tgz","fileCount":147,"unpackedSize":240807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC/wrCRA9TVsSAnZWagAA2TcP/RozbYcaKyI/7mKXYMng\nh7DNKR8P/pKwDGrj0/5dkyIgjz6AXVdGCm4Hs62Hu4s16GfXVxc5w8Ww6USJ\n3WUhEA+/b00Lp6Ey/9ER0I846sqYWl53kZsvG2HlNiPyM/rn6rjz2/0YsM4m\nA2ybbFHm6PUpU3dO0+opJE5/A+phP1D4nLYNc4WGQajxuOavJvXu4y5L9AUm\nXj4lPDDUrgQPO2Om1k/6TUqOeVnsQ6HKfFc0MIWoWjZEqmSaueGuxs37tPYX\n65TTLVc2vdXQj6piMhDlXWTBnb8Bi3mB7A2cYae0uKDGW1zSlLoV9zYYsSGj\nlN+GjlnuhXiuoUS04nlElT0JrG/+2tdZMTtiOWk0iK8nCUhqL1ZkZfm80YtT\nvQXgX7Ru4wpn1RstVrxPPgH1kA3u3KQJGqhxtSEfIIgZrdSRgXRUds2vAfx2\nkbRbu8F5oKYFPhRAq08gC823nVHtDuELHmUYUbz2kgUWnklZeoT5NNK2Ft6l\nT0mvUsIWt7sVKWV6QUAJ01xqUWOsEHbg/osKnTzLNjAWm6e3sIzkSpO3QnPl\npzb7lWwD+cdLMQjW3/PpQDxMnRlUBCvFFCyuNMA9cgjisG1joTsYUoODUfoV\nKu6DMIi46v3t/4lWpq0G5AOybHfUX4rHbkkqBDuJ+dOblhX0hP0zPUUKyInv\ncHce\r\n=+9TC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0hrLonOMG+wv+aXf8a/A9AVYD7i5F1uEWhq6LHFZEcAiEA4TRcRlnzh8lYBQYDDDizqWKhm9o+vW2tcKIW6TkZfzQ="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.11-alpha.1_1628175403864_0.06800466197118293"},"_hasShrinkwrap":false},"0.2.11-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.11-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.11-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/17/db678b90-a5c5-4cd2-ab0d-7381b1888092.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.11-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-h3lZISBtgNT9xghUjHxnmO1tNfFLDJziKUIPLSz0lqQRrbRzgcDq0QG9zgwafeUW1C7ncKlLkJQJyVReyxBbRQ==","shasum":"73e3207cd60b10b48b592bf5eef0aecb46e1b01d","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.11-alpha.2.tgz","fileCount":147,"unpackedSize":240796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDBqeCRA9TVsSAnZWagAA9SMP/10FEviooC5CRoRwdYZF\n8c49GzqLOM+0UjFXStZvpFr7HwSATJnlAVOU1x5V65/auN8kB9iDKGV7vFAj\nq7Jem+QJTlVoeVsP9tMdMJ1kpz42j/YjOx7SYzUaek0HHeLb97/ndZGejMZ8\nqwueF0/RJXsaQEMY9xNJP4GRHP2Zr3deV4Q3gq3L9nHcXr7vjqI7/YwjKyr3\nDEabW9eUMe6W1MfGdDBcq2mPJ5+2CBCrS9x8jEJ/c4CHQ9f8E03MMlk2OXgl\nWYsZw6rR4RZYTqhSbfdnBc6fdbWsJVsVmurZ84h4MelbWUQOdOejrzZ43FcR\nPMkrO1cvfwK3rmcilsn/cwV/YTI6+8o1Nzbvzn6AuGyFQPcZNy2JknWjEEgB\nQFP9RdweKfZBkNp9GxP3mgrul6kZNhChXSeHWN885xXsJxSrmW0Ij4oOI6Xw\ne6pwSgIV1YOWH6GSkkUoNDRtdKhrkmjfz0/epIhr7VphnncdO0Zn6Q8Ka1lH\nNgtb2KxYfcAjhQ/dQaunITkLUSsfEdfylpdD8TX3HkTdhur+3LyCjeYDoi2u\nWcvLjPM5OoUpKM7q5YuiAr7/XqCyAbhjiiSNQO0DxHiRCRzuS25KajuSSTVa\nUZkOlRE9aDl71SCSu7qQjasJ3Nbuh/jQMKQigAgdJTrvjmpnHUu7dw+PIVGK\nwwuG\r\n=z+ny\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlaY3h/1274yRQluqRWMOacRaE34sqEsoLlnVNGWxhrgIgB00d6177D+knPRNwLW5teQUIMMVt0cMtNano4RT9iUw="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.11-alpha.2_1628183198310_0.9974361387432065"},"_hasShrinkwrap":false},"0.2.11-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.11-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.11-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/17/e849e702-0572-4623-9cbf-a9475509ea5d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.11-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-wRQGEDKEodmmp4G9oKiVUsDOGdGhPizzZrLSfpV1Eq0wtEWUUoAP+WtpCfmZj02wl4sYAhXyXvFkB6ttLyDDSg==","shasum":"48e294ca7ea6055109a39e51e0921f56783b8bd2","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.11-alpha.3.tgz","fileCount":147,"unpackedSize":240833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDBwmCRA9TVsSAnZWagAAHPsP/0grTajBcKk0k9BkSp4k\nc6kupUJygPHpmngmcOFOOuS0FAG2tvfDYAS+NdF0hm/FvLDvyv3i+MWChgWO\neBobPeH3AHmwnoOAnPl0aSLfsBR1YLZKTdcBrU1ASX/aV57ZS8hR+s3I9nfy\nmdYeUZ/p0J5F7IZovh3FzatlxpmOvtFMV53zdRcKQu37NrYj1WRGqoXCJE9y\nhsoIVrok92gZPksn7o+h7+cxc8laKLUwsDJKAEo3Do47gzHlhCIQSFoTQA0M\ne5bKWtRzNn4R/1MHoxJpH5zICZXsBUeO9nU3q+T0SMbdB4qEJ0MLtmFjYfdo\n3tujqqlV3mGHdvNa+ZhIL5CdOuNrxAa45gDJ3gVWGdEz//vvPzdUHwqsVFp4\nNRQUC0PIdSarA53RPQ4thnYZvIMvccHbhoaTvDyUtOELdLfjL+jAvgbGvUd+\nlr575yCeaASV5fsc29PZUZCFRKiErhjwCVYhjKKTw/271kHJnaBpnWAdpRDw\njdDg67H5ok5bCTyhagEdfmXjO0HUkF1epSFWqpcvtSBsYTIODfqLibct4d/d\n+OozqlgMpYOxwPw835iT2RdUfmlhRo6/nqli38v/G9ESkscrGbDpWAIsAt/X\n24rnrKY0O44GUo31ztG6x+EJb8Buj+G2VnoXiQhddgr1jMRt5zdl+D9VTXhN\ny4/k\r\n=r7dg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZzvubu8RaRX5c16tAfm+iRyBATVBKeKPAJFedv4pZLwIgCA11HfoK/ZOliZOvV+R4+yNB/co+K+jb7cnFxmJRJuQ="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.11-alpha.3_1628183589802_0.9117577859028541"},"_hasShrinkwrap":false},"0.2.11-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.11-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.11-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/17/6146b4dc-b6fd-4ee6-ab91-2f5c8afa88ca.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.11-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-M+j423cYj6IS6i1kFwlUqmfUSXxhCC1MfQz63MAGOuLNgEOiWou3hSjDge/Cpayd/nOJGpYmX4soqbzjVtItoQ==","shasum":"975ab3bf0fcca64f7168d5b31849a6725e85fb72","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.11-alpha.4.tgz","fileCount":147,"unpackedSize":240844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDBz5CRA9TVsSAnZWagAAZ9wP/RntP348RSUxFoW2lsvw\nxC6/vCIJ97DkV4iy39eYufRIQfkCk18xQk5bo4Bcee8TwgTdiUvkevmMmIkr\nBXmD97LeXC/vXeYmMMq4zNIdm4uZ2n0s1xNqGjQlgYHXXaoyhzBEMPqA7D5T\nyM8xUa/YjZGX4DjLFo9gfRjAryKiOhGk579CAIASKIO2JmwGs4afv/qoeif4\nIGUH2Mmgg+056skfqDITrN+2R/G7rp74G4fSRByvbrUbXmUqyj48dSf5tcbG\ncYDJbZjhbGnxr8Nk+3L92ikNNm3Ku5V8IfaMLGzmGe+z9UuuqmXMe6G6nUPG\nki41fHd5BHH84oW2nBbRDOQ9bdzMLkjUKanpFmsNB3WvmxxdFqsA3czNMzvJ\ni+2JzmqumbPPTUnn9w6hH2+JRPdwacZPCaKQlSGLl6MbdiBo3bu1cg2vdjUC\nDIeLDdNPJfVw8IcqkGLsjagkoE39H8QY9oUR6vjrzsDcZL1aT5SmQjeF5foT\nAQGvCZQ8zwWYs6LvsPGggqnZfWuhkApVR/+lH3AVUfV7vxEB/5OAWd8abtXs\nvshCZXwdP5Dm3lnOqedIIvjgJTHLBoXkTWrs3d/09bpFqTVWKXNtej+jEZvu\nEAfdsxis/isI5wl/Q6BsABDJuoXnfkNIdqrHgLQLcIXbujLu5ypG2eTxVau5\ny504\r\n=3en3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRoyRWz2XqX3/aM0hVCJAmfbgvfvPgd8J0yrxxaj+b2gIgTSDyn56r3dtZBtGYBuzCgLYfPsvcgKFsTjp6QrdeeRQ="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.11-alpha.4_1628183801701_0.8815942861855226"},"_hasShrinkwrap":false},"0.2.11":{"name":"@aliretail/epoch-cli","version":"0.2.11","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.11-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/05/17/4905cded-502c-427b-8c1d-59a591732257.tgz","_id":"@aliretail/epoch-cli@0.2.11","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Ui6EcgXw2gS6qHCMnNPhvMFFVoUkspfs/NM0ztfOIHGms1Vw2ajAEnN1AqJhqSSkBLkWIenvVCG3tPGn0OfckQ==","shasum":"360a9c7e2296a9d19ec160c30a4dd1f4084ba6dc","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.11.tgz","fileCount":147,"unpackedSize":240836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDB6PCRA9TVsSAnZWagAAWtcP/j5k7n7qAPZKWGxlMh64\nUusUENRho3nPMgUw3yh7kAiRKdt2MU2Jd1Uz1ff3/FKiDxTVKhi8NtvKy5iB\n5S/yUlYL0FFawffKCN3wSBSc9DeLip4CYKFmZ1qzPwybnNvXMlG9Y93fV0QM\nQFWJf8GGOfJgd40tMBBBpQ7I5jDqDVZBWoDOrJfxfK8KygBONbfiZRn4Jvrl\nFIetIBypAu9cgWZAi2/IhveCyfg3GgQC24cvRkZ9SBHSPaVypLIdhuzlxri2\nC5Sg8WHY9xVNan/++iX16taJ86F0CqFY5FwcDflNh91Yhu9PZPZEDBYgY1gC\nxJClToL49Es4DNVw2BvSCFbEOsw+pqOiOtj2R1fSj9A9nJ+IjaTH/oL3zNx/\nNGBZNsEI5JZwewTkopYeMk35A57NJgYjv0jaX9Pn88jcOoRL0o+/NyWqUndz\nFx5l9OUE9heV8+1hK/LgjsA2C+/JObMhMlw5zVKUtPaSUoiHbJg86zdBI4dH\n0vPahIguzqfKaUpmnsP3LRUSDYbh+cVSSExSL8aL4ZRRIXuM9qMaeKIfgq9C\n7W9tz1OVeARhFRA5INp2hp1LtzixMkp0CDqODoX7N0yKxv4VURmPMGIYo/t7\nQELEYrvd4ibyItzOmLzT7KydBQqQGD2iGmKcifwpJDSjXkYNGy64aR4DzvMj\nAbVB\r\n=mu+3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvu2CU3ac/015p9BnMRl645iEBJtuqAhyQc8gxdlZ5WAiEA+rWwoj5anBdV0o5mURhsXgckbVE6ajcTc9JAkRyU86I="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.11_1628184206719_0.5568377782231397"},"_hasShrinkwrap":false},"0.2.10-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.10-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^4.1.1","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.10-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/06/07/1049f3b6-c1b6-4af9-8e65-31d17d5ae2d3.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.10-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-O9YTJV3GNn8X9QY3HIBFiWKCy94jQAUi63BaO24kxJNNEI8HsE0hcZUXHyOvtWweSXCuEiEn5NhmdtVJVoLXLg==","shasum":"d0ee1c4a50ce4e801d256b867f7abc665106ece1","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.10-alpha.4.tgz","fileCount":148,"unpackedSize":240807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDOJxCRA9TVsSAnZWagAA6+QP/jPp5L80CvoELECQqCeM\nfqKO81Zm+JaGxQxp2kTKTvuQ8DDWGbWRNyXSz/3Mgo/twdpiTg52631pH0jq\nKkhqs3yFSkwCuLRdNiIZyWOwGhPrl01r84fWR0+VvHy64Le0OY7B+XD/3JRi\npRNzNr92LFl3cxvnsry/XtQrtnu86PL5w+G/p39TXKiVkGP4sB07ugcNWHCy\nBEew+LvmD46DPfq0cwgztaRjTFBu77H0iXapjotiH6C9OihBzcLHryQiP+DC\nu7hQ0dFDxzfoeCnwDrJRjvHWj+30GJTsGo7ZxU+dK7vB6p4DlaZKczUTXNgT\nvWXtDhw58T3Q5mGWpzAc302+JgvUo+6xUHBFuG+23CyGenujQOgT8EKbzCnA\ncP8t2ciK7jPiWsVHz9nOl9FnOR2iBFMPaCsIanok/5l71Z75FP6MmFxwNmij\nIBrBF3ZpkBsqTXAGqXJLHS9O/+/lEPHgqTT2Y2BK0WzihWF+iAuzwGfsUICE\nWgo9nBYdQKvGTPbCvh4oCsiDlMgtGq3UYaQvlbDyPRj3CbGJXfwmifNjfc9x\nS2wBOfvZ3s35CBblvdcbb9bUlCe1+5w30OTJ/OEEyt4t+Tgk23AlSk0iE1sq\neZzChsWft9xdWc24zXNw4peEfil4J5j4jDst/hGzAmYcTdXlYQ88DcMlaeLn\nDR72\r\n=/tS4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHTIZ47KpNVjeFtEwiTwZ/RhwzUVOTlTcyF00djeD6AvAiEAs4JrgXeWuuxVdw8lZi5hzfh9Zyy9hD2PSFidFKbeihQ="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.10-alpha.4_1628234353403_0.8398374927109487"},"_hasShrinkwrap":false},"0.2.12-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.12-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.12-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/17/02/840a871e-7728-41cf-b3a5-68a879662dcf.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，`@aliretail/epoch-cli` 作为命令行工具提供了完整的前端研发链路\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key 以及工号:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化\n\n选择干净的工作目录，执行初始化命令，并输入开发应用的 `appCode`：\n\n```\nepoch ui init\n```\n\n初始化之后的项目结构为：\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           ## 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       ## 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            ## 页面代码\n│   └── utils\n└── tsconfig.json\n```\n### 构建方式\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？\n  def构建\n❯ 本地构建\n```\n\n在初始化应用的时候可以选择构建方式，云上用户一般选择「本地构建」\n\n### 当前基线分支\n\n```\n? 输入当前基线分支名 (master)\n```\n\n当前基线分支在「本地构建」方式之下必需配置，表示在构建完成之后集成到这个分支中，这里会有一些规则：\n* 发布分支发布之前需要拉取并基线分支，确保基线分支上的代码全部合并到了发布分支中\n* 发布分支发布之后需要合并到基线分支中，确保基线分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n```\n? 是否从远程基线仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n## 开发调试\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n启动之后访问 [http://localhost:4000/](http://localhost:4000/) 进行开发调试。\n\n> 1. 开发构建使用了 `build-scripts`，可以在 `build.json` 中自定义配置\n> 2. 当查询参数 `_epoch_debug_=2` 时，线上调试会在线上加载本地构建的代码\n> 3. 本地起的服务是 https，需要手动通过浏览器的拦截\n>\n\n## 添加页面\n\n添加空的页面:\n\n```\nepoch ui add page\n```\n添加之后会在  `src/pages` 下生成对应的组件代码，同时会在 `index.json` 中写入元数据：\n\n```\n{\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 `name` 和 `js` 可以修改， `js` 中可以加入页面依赖的资源。\n\n## 添加组件\n\n添加空的组件:\n\n```\nepoch ui add component\n```\n\n添加之后会在  `src/components` 下生成对应的组件代码。\n\n## 发布\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n# 开发说明\n\n本机测试：\n\n```\n// 修改 package.json 版本号后执行\nnpm link\n```\n\n本机的 epoch 命令行将变成开发中版本\n\n发布 alpha 版本：\n```\nnpm publish --tag alpha\n```\n\n发布正式版：\n```\nnpm publish\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.12-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JDa19IKchRCF+lTyAm73FvV4ztVGlm/3kdMDEVFZrjFTpsMWuR4mscJwHAX+MkuS6gq5dnqCo+wburOxIIcBTg==","shasum":"6a567be6da5632a92768ec463eab89de8e6052c7","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.12-alpha.1.tgz","fileCount":147,"unpackedSize":241100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGyLuCRA9TVsSAnZWagAA+P4P/0b57ZVFBRkuVLLqh7K2\ng8jwxUbCVEi/STWi98ODrbVbDtA1jAt5W7b05ES0iRWsRjgnNShsV07YgEQ9\nBukg/u5S/KgFooLX3a9QtN4ocPxcxzY3VP9eAxHry7HchC/51y+5ogBD+hKu\nkx19TITZzACalSlm7QwIEkxsffZW/2BbMQelOma+x3Py9rdzXBmKoJznt9kc\nNZiTi2H10eo0W3x3hZl6rTICTie2+Omjw8AM1rFqMBxj/ncqGvP+kelsnQWB\nKB9gj3zuD7MaJSia3QewC3cB+K3HHvmReLXMVlL/IUgt1ZSaSR7KhqNWGser\npHz/TVLzX+znG7hOqn51oG5b3Uk5s/yYZNTySZ8tQnuCyOCy8cYzLDUQE0tX\nspui6gCme+ajGBw4k4Tkl0MRGi0KZBGljWOuZ76HXI2LXykXObG0wAoD3/dP\nttevvaRq9XBX+3u45umCVmiY+tkeVIP4EOLM5AmA8c0z+RNrBZ9kEeZaIocD\nnTz/aKeSWe/l1tfQ/fTjRsVGUZpWfySCrZEMk1GCVcXbx9IjDrw/bieW2laY\nzkO8k97LkOMlI0B5HIUQz5D+vlAK21rey5IyCVy4O0/Ba5uE3nVkzBn/G5rU\nKTSkiDtrJ24iaSn9mno9m8W74j4AwMNnPUGQGTXCAZ7mk2PjyHrJXLy/3P2W\nJZ1o\r\n=zijg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH+YZM8dGrorTYxa2Ke61n9MXiILuh1WwcArDIs2SIIgIhAMjFxfLkIe4aA0tIFzSMJiReo6ytlDa+fLqEo+VJX1mC"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.12-alpha.1_1629168365967_0.7183889004895323"},"_hasShrinkwrap":false},"0.2.12":{"name":"@aliretail/epoch-cli","version":"0.2.12","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.12-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/17/02/2ce7b63d-e23f-45e4-8c21-a8e09ae8377e.tgz","_id":"@aliretail/epoch-cli@0.2.12","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-k71XrKMKaijrAvF4U5XhnXmFTuu+SSewO7sFun8EOw1aS1qexOt1xM4QFIIiIEsDaFRNXuWOtuqs+4uPr6C6Tg==","shasum":"7ee1dd6278732d32f7a6eb4821af14fd2ab70718","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.12.tgz","fileCount":147,"unpackedSize":241092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGyTmCRA9TVsSAnZWagAAT3oP/A8PHEEHe3gsoFBL5Ofd\nXcofCwmpwUOJsihkXkmxwbEjtCwNxFN9gO1SwjCZy+G4yVDwDX5a3Tb2YPCP\nbTrOkIZuaSG//Nv5UTO2jQVHgeKkzV5lUHO3FRonMtqhKEqJUyjs2dysJr+T\nWlbiexUYtX7r0M9LIcHFPmroplzCN0TICGhkVA7TwsoHMbLfdBxFh/L2oCE/\nf7Jw+KPHtvZ4af6/YKgToTKHQkrH4xSy06DVVOQj8SjqX/VnE8Co98O6hHz+\nf7EQGi0kSW1f6j9gjk3eoZbEpiriYna1DfxY/T4a7CYVF8lKKNGbYQ8DuTxz\ndfSMOSCdAWYUETc4T3RKs+RlQy7c8XxdDiA6/TtO1fzkP38DcamV9pUMxdLb\nOuMAnnudJPis0wbmcylTCH9JcSQVvA8w5JhxgMZndRsj9ZbVmSUHXlsdEGd0\nluREcHjw8sreyqw3fa4QifzVeH5sVRuzJ3/yqifzGyYgsto60/HJqGpZ5Z1Q\nBw4SHOuBZNLojXFcGPpOi/pUBANPbhz5lo/cu4RLg+CEas7iuK7s23Wp7052\nExYzaDV6VrT8fXqkwYCv8aNce+/g7PJZMTFHz/6lQ8L8t85C52dHHsGjDEUR\n0gOQ1pp2DBt6ZdbXm+R2Fhe1SU6FzgXkILuvzKAHjEdRYQBYSA881sjPqxhz\ngDVh\r\n=0dLC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICUXExNl3F2vv1fhzr05dKOwgl9zERBQ+m3Sz4GGm7cJAiA3ghuuu8eQNbmM3Vr+aria7gLcpYPyRiG4qM7rJP6U1Q=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.12_1629168870095_0.48254370161399507"},"_hasShrinkwrap":false},"0.2.13-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.13-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.13-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/19/12/3b692bb8-fd93-4582-b33d-664152a5497d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.13-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iKMuj/WO4UT1PyrZkH4slQxgHcmvRCrvdRYzx+rHT1IZQf+Vbrke5RU6ml1iPVcEHDUtPb2vgyTzQHi/0YAJPA==","shasum":"301daf180d25fb18c1d5b8c17424a535182491d4","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.13-alpha.1.tgz","fileCount":147,"unpackedSize":244210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHkqTCRA9TVsSAnZWagAAsEoP/RfBCtCPHTEbx1+9URRp\n6WnJCLntu7GXzY88ghWIghNMXkTxq6kRO6HUR+5VEg65P9IOlPAIEyysyooN\nvtVglA3mhCuDYI/IcAyHS2ELYSCXWRYx3j+KzbLnbAnMWIwy8Xz3KWSMBhuq\nI+6mb0UxnZ7iFxyolu3331rEz4cXovlmhTQ05+PbQGCPHzlAl3mUzKGGhT93\negpVxytCy4vam7Dxbthe/HMU4+Cf61ZvxSKIJ6EQ0cQIgc1It6T3YYU2hh09\nkIpJbrHcQYt5JX2gQ+dZ4u1kd1sWv3BCvghV5tbWXZ1kOuN/YEdszK/Kwytd\n7GC0MrEK9m2yjWtUjiYoaQ153O4DyzSDDMyjStzhdwXfaXf0gjstaax5D38j\ny0M7o+NAMpfs1oNfAxlQQ9J3UWElwZeYjGDOJ8XNMefX27MW/eHjkz2PM5ar\nq8uF6hE7WY25er/uSXeIOk6Ir2dkYr9oLU4apCgKoGeOQ+/iVsvGaCLUKsYr\nmuJJMZZaAiUY7JQcUzAOgH6wT+z6eccazwLY8+dKaEneLKn4XBEc96iQerh3\nxdNcCkHXPrNDUU4d9FnMgqK3nZ3ASJhCIL8sIQzw1tiJ7BNaGwvI75BK8Jc7\nGEuxdKQiNNE1RCS4vw5i622LX/iLllfi0ofhLQ2oZR/fcVI3zddSfos3KXSl\nr61m\r\n=i86y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsHspmesELrcundUq4vS+z8KW6BS8E9/HGgwtyBRIKjQIhAJ7bq08bjEyPnWaYW8KM+IbJ/RWB5aUemzMNgcDcv9YZ"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.13-alpha.1_1629375123711_0.4730609997649353"},"_hasShrinkwrap":false},"0.2.13":{"name":"@aliretail/epoch-cli","version":"0.2.13","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.13-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/19/12/9da4bcc1-23ba-4af1-bc89-10166b2f10fc.tgz","_id":"@aliretail/epoch-cli@0.2.13","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+9W765Zas5bS9xrwI2xOLalfSYKPQ7GgBIOv7YVUmbsT+h5TIXM+FpBui2/cVYWOlE1nQQnW78V7FX6whvWTkQ==","shasum":"6eb5a0445a5597a6da86fe5259e0a2ee6750d7e2","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.13.tgz","fileCount":147,"unpackedSize":244202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHkrdCRA9TVsSAnZWagAA8s4QAKDPrRQ1BEFAOfEqhg2E\nNi4I7KpLGi9uD2m15paf6AbIjynJ/w18n7lGbLFhV5ybRij+iIfQPldZ1gK0\n96+1en+BGrWdtlHgkoDbOo86caOJdVa0976EwvHG1r6CBFX/dt5pAzgkpRX7\ngTu42YQoMK9lgVE1ZZ+qbhyrsZiEssVM5NHhpmJeqqLwFfGuEjAHaRq+RCVx\nk1l7PL2qMTsXIITxtGKOCphpXX6fxaA/+CP9EANAxPJ4Wfmo3joBo4382DYW\nEd506o1H9t3aeJ7YtLeI/YHP9B8WdZEktsPRk7ciMdwRd4I+uRJONCzX2uVW\n+1cv7SU5n0J3kZAjg65y2BcU4+T03xPRndHt6cIrqzl7mWpUBdFqfFmqxVgc\nDJ2u+ZGDM0Fu19MR35oYcE/cRpNG4u2TNOk7fAf9J08dzgvnmTYwTe9Nx2Gz\nw/RaW/nTxL0ncdsBPRtE6nexowG/UkorIsUZ8M8HsGo19XmaUhQZcvJ3maSH\nhuIzfWrrtiYc4JCwG/1ZQZNjz/8ZDnCms0tLVY+iWjurj82vFPUwLZIlagWX\ntXS+uZyeLybhsyOFVI/wfd/pimaw0AqgWNBertvh2aX9HRPuj68ZR4zXwSTh\nPV26J4/+9tm+FeQW0u3E4V8DE0EYhpcwBSxFvsyT7PpfY/LkJFKiwvdeTALd\nE42V\r\n=101o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsIClxrMH/kL1wtp925uVYuGlpUjuBThKrzj5shnYcvAIhAKfJNThGlRG+lTrrwI/MflVU276V44/ZwG8H9aNj9slf"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.13_1629375197772_0.8847613432835948"},"_hasShrinkwrap":false},"0.2.14":{"name":"@aliretail/epoch-cli","version":"0.2.14","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.14-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/25/02/ded1a16f-55ad-4d62-baf8-98c665859f7c.tgz","_id":"@aliretail/epoch-cli@0.2.14","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-HI/7o0OpY4VFllKtsjnqynlX3qhHpSBXg9Xh+RIFW9Cka+bZVkT9Bq8W1IDtRaIG3pjYvP1EVx3/UQdqvkixkQ==","shasum":"8aab85e6e3d55254d93bcff74996d506618381eb","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.14.tgz","fileCount":149,"unpackedSize":246352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJbDuCRA9TVsSAnZWagAADpEP/RKI733xjTCmUfhp1ilA\nJygpKlEI1ldo6RVhR6MFGTTHbn5gZs1G+KkqmdWvDX6GTL59aMS1XkHpNXJP\ntrsLy1A9HVWDJ8CdSfimlEKiLB0rJdSaWstfY2W+c9C1uQWAi6d5EPgDN0fb\nRxQR8Nb0mFlBjFn8xTFL2DlMXr9hVZXkKe3lpwtxgP19gaHhx7nngYf85fW0\nd+P88rPjXj52xUurpb639ZVKoZ60yHSX/t1aHGLYjAwMP5GsLxLLOKEWa4jM\n1CH/zXGkTIHOZRPvPClOb6Xb0pVE8NqSG3tI9wPJlHg24xZZZoT8SKqAwlgQ\n+WWom1OParUBv6rrr3TLDIdE41ougBvitRwKwu+7RaeEF1OOnp0yRLTQFpDj\nNKLPUK9p/HKzfWbZ26TtexJEHA0hqfMbBNHsyYNSDIMLwmf69qa8y4Rd/2ZU\nb79XXrTm7SJ8jHzfQXqqJ9sgBauh8uhFvG0K/AfIamszvdo+3ENbwuUlHejS\nYnnSMEcU9X7ztgnfjfKc/fkRwN4Umj6iCPeq7/zIVp9+u3S3auWYN6GRbKSn\nVPXCfSXY/FMVjmRPnFqGE6ecSSyLuMse6gUaU1ZyDSQqp9OHrR4kMuTFJGVd\nJL2D+6QErVOk6pqhytRYaKHmjpbgAOn3suuiKOuD65GSaUlo0nnDybhahq1K\nryvl\r\n=iyUm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoY2iRfNrNFA1kjQm3FDL7qX4awaJJDMbiXzrIxZtiKAiBbvEZ0StJIrjvLnGy2uYXV39R5Pzutu7nsYuyrVRxJew=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.14_1629860078448_0.963457603658262"},"_hasShrinkwrap":false},"0.2.15":{"name":"@aliretail/epoch-cli","version":"0.2.15","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.15-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/30/07/1c809281-0f7c-4a42-9d25-24d66b6815bb.tgz","_id":"@aliretail/epoch-cli@0.2.15","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-HCWjIt3364MXkPEkSBac9Vzj6DXkLm5yVlzYomu6YPgQ74rNqJZrGLelAoedrp9dgvPbkny4w/IFyBATB08Q1Q==","shasum":"01eff151db42b608f1fdcf24c59816734bd5836e","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.15.tgz","fileCount":149,"unpackedSize":246372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLI8HCRA9TVsSAnZWagAAPRwP/2FXjVkx4gw0DgzM9bBC\n7OtgxFdvpm/J0UKl+dNC3lxFD5ufd6ICsYs9xz09RRnPHpXD/DoSGj+OgGqZ\nSBcHdcwD8uTdZmUA5KyyQ/a/Ln4dwYcfkKIVotqhPHw4G3nBRKxIObKu/non\n7DPc5uyELGM0F8brt/JRWlwNpVQ1N6f1IyAMkNzk5spD7C6jg7XJNu+i6QbZ\nCV2SUcIkoi+51D+TC91i1iMXKMdnSZvOTvAoDLWUjGi4WpFLqxSTJgo6bBhN\ngV6y9fVXwlqd7CeQ4287ENq1KLI5QJvbOwzUmNn13W3/URopDkahNzNYVWa0\ncu357nWGjB1l1+oQRCI6I6UUw6pZoTYVdvpdERlH13ImUs85B964YZdRwEoM\n6DDmx7EOPA5JGE0EOiAIdqVc44RqUT3+zkpM5Jde1osvSoc8t65tjAWzD4w8\n/H8NMXEc40DU72dbE/yBLBEotOvWz/9sZEZNoLDiIleWRs8acK5bVtYWwoI+\nK4L5H/erwWqu7xph42iQRX+fhb4h7dcoi567DHHnqllRUC8gHXkifqAAdDpk\nMJjDSiUOnRn0Cmz8+toi5SQY6QiqiIWm8FQTbtMrYvYoeItug2TxrRlbbDxT\n+ZOzy0d61yFOaVZ61Q2NFuwP6o3LLFF4bCPUPD3Ed71t7TujbFHHQXifg2nW\nt9QN\r\n=J7UD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrmBJRWUGbyK6xesQStBYOAABdudFxb1hV/2D0FA3NeAIhAO9Z23evurfrFjUx13DlryXC7zPgB13TUQIar+V3xrtv"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.15_1630310151476_0.24350572489413147"},"_hasShrinkwrap":false},"0.2.16-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.16-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.16-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/30/08/bf1a72a2-d302-4b32-baea-952aa7823bdc.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.16-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-gkgfe+DooggDZCGqNPkeYIfo1cRY5WSd81+XDBYyyd2gjuETeg99v+Sybfqja3n+RVapBpUQxOBKNpmIK0SFjQ==","shasum":"ed4534eb06c0d7e10a7d421f35db2886dc4daf53","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.16-alpha.1.tgz","fileCount":147,"unpackedSize":244267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLJISCRA9TVsSAnZWagAA2pwQAIJCUGYRJHlkllgIpwke\nZ9x3qBM/5VhCe4VeJU5RwnLSqVsOmk+0nuOoNr2Gtbcv7Sm2V+EoJp9Mjeat\nMZqCPeoZY7lDYHvVBzgd55de+NUd0k5ScNLIgYRNVzO4q86NBG4XMVXkb+mt\n3zEn+e945maSRLVLVRp+vNLSy7lmTmj3wnpfgdx9i7J81T2dc+DMawR2lKrP\nPM08QIrIaMSILsfNZ9kvyONWQOCQewtll+0x3RKSPs4YWbQ0Mf4MHQHvJOME\nteecdgjGLoLkB9fKDqpxvo1+N54Q6HQMTT39m84iRHYyFIWA1wtyxGtk7FpK\nlwvUfLKogTiCxPFxJ6ySv843OblUki+jlwnsbvS7m2tG9VaS/3IXiN9y6RPz\nH2lqGuId44DjBnkx4v0Svb0xPBG5xlfINJtaycjtq1zDUOLDOMblTS+ycozA\nLHvQvxpozhPVPwa+CMoqpiEFEk/4YhCiZPdCW0rmxaig2QURdgy0VWF85T6K\n8+HUjageMb47BmVU47+RinvpnK7iwzoxFSiCGh9GdIgs214KwmbYQzC3Ex1K\nPxNp5cF1Jl573YZUwKjYd2Q81qlForxcQT/8YYjcaX9VeYxpQXphOdkQXbcj\nZOL/SfiTiJUkkNZuqAC1bLOEafe/keZRYYsOUFl5oeYXDORvL4yd4ae9kSWV\nALyf\r\n=iSYk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZW3tkGOW4L3TooyIm+Ci7US8ymz3gG05D4w6L4dBZdAiEAl0rch3Idl24l8OajfUBHaZL2bIDy+dbDN6fNINIrn6w="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.16-alpha.1_1630310930501_0.9339334451976671"},"_hasShrinkwrap":false},"0.2.16-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.16-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1-alpha.4","rimraf":"^3.0.0","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.16-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/30/08/3aa0a4cc-7946-4bf4-b7f2-f8e425d666f8.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.16-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-PtA8+c6vYLnvjIrCOFb1gnATuHWLbKiVbk9DT4kLeW1KyzRJ062yq6L6VlI90vMWwRnInhdMp9rw0nKk4TT2sg==","shasum":"bfe5266313a84796b6408d9c5142205bbdfc1b4b","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.16-alpha.2.tgz","fileCount":147,"unpackedSize":244267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLJIXCRA9TVsSAnZWagAAGLYP/Av2tISGtCtM8kx/s4tx\nnSLnTPZUot8BL0nk1l2S1hzNUMX0mFoIVrLO5WoifhfH5N7Cg25raDNcBYfr\nj2Pd2/JLjqDW1uzVD90xOIM5PRjSzx4Tf5el3pKRTSvANw2lo3WkH9dvZXo9\nJSOYlJhCJBfLhAHeIxmx+kNhPYXOl6yP2fLyoiE0Buwm1fdG+UNt8vMNhv9L\ntN/nLfk6rd0I3spLLqccNjJtsRkZ5k4s/IeGaANhdsrZll14Pc50/OoXNGXy\nRUoV2ukufeGk2oB2ajsTnBQwr4aQeLTDCiuHJVN0+asfj8V4JZKG5tdH9GYF\nF2O36EC8wXib0He7DTse+bRmnQW0PFsglKV09Njip/dtjJAWUssnhbt/Dhyz\n2mq5il+d+kEP/CnLWhhDkc5eYdbIyRBRxueq+e2eYiNw7E3v63pVZX4wwduo\nuD7coiigC3HXc3twpZRAvWu7AMTwaT8LCj7NoSZpOtvIaKiBiEIUxnj2n1Sg\n2sXRpr16VvPxh+oyhdtSnYVemTEhXrv+4hUB8f7U7LMibgekNxstz1/sAaed\ntGbXIsy7AJUFYj1K1pPtmOidU1Rg2KVlvahtTtGl4YSF7e++MXmXIKJRYjQW\n0gA4QI7KyF73+jK1m8xYHkfSOgrgxilWqACINbITGnhSezWdHQwVVe9a9WnR\nrwJ5\r\n=4Ghn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2SVdLWhJ2fn/h0FJPGIGXgz011gigHduIH96RVWIm5gIhANzGTVfPZyVamCFa1viEv29k/5V5hY3e/jTPhDMYeV5r"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.16-alpha.2_1630310935432_0.5236964417937489"},"_hasShrinkwrap":false},"0.2.16-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.16-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.16-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/30/08/3fb4718f-c6d7-4d3a-b0ab-80b8a26d3fee.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.16-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CEu1SPbAfwhgTVC60AajxmQ+6a+Dhp+0y+L1dohLuG5WCikBS/tvMB+ZXCrE25j+yl0Y+KyfjHUzAXWDQO4hXQ==","shasum":"1be23c494d02f1d359183b42f0db28d27d425d31","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.16-alpha.3.tgz","fileCount":149,"unpackedSize":246437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLJLnCRA9TVsSAnZWagAABoIQAIMBhI6fwxj1kzeWORf1\nTKp1iewY51SGmQ/xS+db7gFmZ32SNm/DfAdRaYXlD387DVQLuJXGjRco3siq\nyzY46cg/bw6T8LVPFWD6bgvASchm0T6/u6S4+fA6xNxeuvXu4cE+zs8Rd+pp\n/Eiwuws9W9MtYg+wTDoOhSa0S08//GBFPi0oOp4pBbfJdWMntKLk3cVBETYq\nsl86vPyRXBlYqRlV6skhpouM11MUxKtpv0K9bJoUrYQzKjR91U1BnuDJ2l/P\nQXWRwANrDbi+w9XX2mIHzPFi0mUoNM25zSSPejXSssjsvFEsLqxUwfd0ORa0\nVzDu1UAtf6k6C3u5+IGtf8ye+dlIrS4yJeJM9jhWYNGKCDZFdagQToJjG2sH\n4hjvXq34zkLAD3sHrOTgBIS0Zdbno2zkWY328+Mggd9u3gaXe6PE6hcV2HJ9\n3UR11bzpyMkSwoCZRClD6aVZKROxa6ycHVUqXdL0z2y/UzdVDGO5eK88QG/8\nJiA7HQMEyO+0ZLFaDBRaR0FF+gGqZQj7CbovbUU8p3JGLCsuFnaLmjdsZeDQ\nE2g54SpIqR4lSyWxq+V1m8WF/1kYBmOo1EnQ+Dmt4DWn/zJJDTlgttEKXTaZ\nLP9A8v3z6V2UHw4b3Dg5BKPeJg8FcH4ylqGaRzI5guyITAVJst6DLp1Sl955\nliH+\r\n=uEpi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEafxvdCG8k/O99HvQEJc41f7hXZLKaA7RO97Lcr5JLMAiA/ev2ahRfE9opnPCaSqOKg8lI1TeOUJ7feJ3ohiWZbQg=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.16-alpha.3_1630311143461_0.9809460186140211"},"_hasShrinkwrap":false},"0.2.16":{"name":"@aliretail/epoch-cli","version":"0.2.16","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.16-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/08/30/08/0e653be6-1212-4cf8-93d2-6b2c4efe56a3.tgz","_id":"@aliretail/epoch-cli@0.2.16","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CAVN9zctooRHPDz3OTPUS3rKKL9PuTCyFVofsNcsfIvy8Pe2SYMdYsOZ1jkbfTW2JEcb4w9FcXjWN6oIvzqjkQ==","shasum":"289da6091700b752156f5264ec5bbc9b4ffcc3cb","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.16.tgz","fileCount":149,"unpackedSize":246429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLJMaCRA9TVsSAnZWagAAArEP/2qY/rJBUJkuDETs7ZV0\nqZN2v0pG5HksZ9wkn+HxoE+49DemrG7tbWMJNh2zspWGIhG/g/LuiCE8XUN4\nkr2tEFAH9gw7KGG2w5Uu1KuLkjEpk1qyC322CR5+6MtLAeQXRUbVb74sbl98\nzh1Nqy3x8Fhv7KF7BIFs1vx5qnSwqHyrRtX7G/svA8EtOm9IcunB3+Juo+uu\nKcnXRE10zeTrAmBrf+2j3KGtoYuAsuVq+YQ5c66fSlPXHK053fDSYfeF2qJO\nkwkEwIgmZY0/ZrU0z30ASvHmo1SnpiqV+pioJbZKRF+h6ycv01TDIkjhftHf\n0oq8y1jvIzenCyoOp5Zn9Ja+Azd6mjU2CeoemhPiUEfOBpXUiQT0EFU0IQq1\nFuXYf1BzmXVhLTAW6QTq5909uvOxqyck15NPnPbZixo8DE/2aLP4HPFGwGX1\n+7L0eQhhO2VU6gk2z2/8kFJwWJXCxD24h7azemkZxEY+3Wv7bN3xjx12AV6y\nOUmf/YP0lDYZSW3aqq7UcOFoUrBYKZ9P409ozPMxBXzX55C69ySPL3/sGuPY\nbrHx6UDooTFu+LMXNTJpj4yTwIQWdSeWxLFDgdX5lTMpJsZQRPqCfURs7AfL\n5AxmGLi41iZN9ZL/nCYjIDPhf+CeIVxiNS6duCglDalL4GhAYj56TN5apJ1R\nvXTF\r\n=vyE3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4koy8Oq2pYTHp22LWO61TMZ4sUF8XSAOwkl0CoNwovQIgODL8fUX5z3JccJqRErb+aX3I5I/lvIybA3mDj+Gc5TU="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.16_1630311194307_0.47666196711303144"},"_hasShrinkwrap":false},"0.2.17-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.17-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.17-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/01/04/57ff9bac-a7a5-48c4-8860-7894ee4bbf57.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.17-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-VhrzZ6Wu6oygMqWSLIUwCLGlGvwyGPZ4LCLLO6luHApQi5gek34uxXIDuViAj2dHDdmejZym73EvSoK980pOGg==","shasum":"d02340a1fb53f98a020a179d42a17c1809aedf4b","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.17-alpha.1.tgz","fileCount":149,"unpackedSize":246429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLwPHCRA9TVsSAnZWagAAmtgP/1wuUXYZtkeV4kc5gJqT\nUvzlrRwjlOFYTbg7OdZhs12y4zM62zWtTkMH3jJ9vkPW/i8tTWlnxg1wOnaj\neGrGWE3Q8dbHDhbA5rOSaXZ3AeAORv2Ne78/m4K8rXQHfoS8SbnFZ9xSEVGY\np4nYaQNVUyOc3UmSzd6ePKNR36k2w4fmgcRAlPczhea7vGBcvhaUn3Rs6Lle\npKMjRJe2sml7ewzptYpifaXN4kk3QsXBCHp7q5x+d3ttum1mkjT/PQM79JtW\nQPQfi/O0wlpV50UG3IWVYH7sTP9/NbIOjnNyji+QbLo4R/24OJOjBGB4cT8i\n4qljrunNISfRrLPUM8l8Qdjzj7C5GDjutuvOLWZWZtCkeFS2kPA1sfLbDju6\nGnApxkG/AwdI6D92zwU2pq4QNUy7UrKY+nwKyCyXb/g6Ci53ns2c3CnenH+p\nlmbvwbD03YdakeZN7tsFIUv1J0v3xpwqy1Rb1ioBverpxAJcfesHJLb4fC1w\nhwtn8x9OhMJBfPDY/q8qP/Ln/NazZo7touhm6+ZEubcbKmHK50K4YwtmRzd2\nKqd7FFo12B45NewptxvL9jlJdLNOWd3YnacDa6aS5Rc8Oqa9uIt1Qt4ejmle\nxsUTBCeSZNCYWCobAt/u3zykuXgS5N5hFgXPatbxsA/hI9nnT84xkihm3Wb9\nKkLi\r\n=4IZ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDkFUvkoDpaOOsYCK5+GhvSnWRTFOdO2buKuT8WQ06DoAiALrgsXn/Ir5seeaZtSVwzfMGs89BUjm6p6AfK8iR5cIA=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.17-alpha.1_1630471111059_0.4823259564320259"},"_hasShrinkwrap":false},"0.2.17":{"name":"@aliretail/epoch-cli","version":"0.2.17","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.17-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/01/13/34986a68-079f-4bb4-aa66-4e67d63dde76.tgz","_id":"@aliretail/epoch-cli@0.2.17","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-IRjVtyztolm5XNUZQVmgBE1HXjbzG/YJKQ3ePzpEeHd6Do+TNtfTzwbmLJD5wEupC33OnvtNlXgika6wzBCH+w==","shasum":"936307ba384591a953da15c8c76cc9212415137c","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.17.tgz","fileCount":149,"unpackedSize":246421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL3zkCRA9TVsSAnZWagAAqGoQAJNzMfgVtZU0F//ThNSX\n2NbLtiDXlaiAI1klb88SLJTeLf5lkEyY4BL4DqlJmB0K/kiAYmneX5dvXKHm\nJb2vJIfHwEgvslsX8Bor5EXjqv9M7dU3sxBD7nvy0Ya/YrTx/Pbl0PqdzcGq\nQT/utFUv5jaqMqbKjpwitI8iyyobyiuJQXrBhSiREvD+Y9DyPdM57X8XigDJ\nSqgCpHNQaVKSU3h4UFHhXokyfxUCN/DkmJf63mYHOihUi1uMCQwg6GJcWUg/\nAFDVw0mgeldCZBm0QVF3pzDSLVqoWyz4PAWiiSvDkIEtbr+Ecd/cWQ8pQoKb\nZiEEbguIthlwclQnwSS3UDhJJV/cjt4QcEicPKrNnUoC4kfmUoED0eru2idZ\nW4IAsSWGGahE+oRTvlmiPEkTEsNwFCDG/7rrwAObt8ywCu/juJ9oKEmBitAg\nHZV54+I+q5zGwXrGZwMGTYxbt3whiz4trUMNhkkpLXzkTY42CuoBz9U9OCVg\nOaAUs1jVbrQF4rUVsvNNWFCWsc1Mv0KZubFCNAYg4fXcaZkS15Fbo2bmzp4m\nsZa+smS6giMjUNq/H9X5lfwnGE2WueQvqY+r1EPiyOycE4TZ6n6b9yosi+ny\n7hWkDRnlUtsV7+bLDJ27jc1dH6TYO9LZs7msvEuWIvzWlB8PXBWHwMsD7YKQ\nKpEj\r\n=j/kE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYdR6QEMvwL9gA1dfMg32EMG3F2rRcg4gLL3oAcQMaVAiEAiefmz//YozIU2abH7wrnI8ZmydnJgqildFF346i3pW0="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.17_1630502115878_0.822680978391588"},"_hasShrinkwrap":false},"0.2.18-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/08/02/c1570eb2-c93d-4c30-92ea-315cc74fb96d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-eKFefldAgMHfkvyG1KChj7B+tYVFVfQ188mXbluLWSHO238ftQMW/Ty8aoVoYNt3R5xxmJCfXccxlZYvsXmMGA==","shasum":"f6aa7b9167f6477a604622f8571cbb590ae292e1","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.2.tgz","fileCount":150,"unpackedSize":250007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOCVpCRA9TVsSAnZWagAA/dwP/R8VbUT01uleQDFKCf5H\nM0su9KvvD82rGbOEZ7+D7EZlFBa2mpGVeDP3jfogUrpsGKAM3OZQ0rpz+9xF\n86hWcoo+bjNSBwQ2/f22Vi8Yy8F+DyLPK/e0v44Se8sO7sKlN4Ptnt1ZbMFS\neloEyIsakDKxFjpT4MmWXdvW1btyss/W0l87a+0p43wq8vShzIq4Frue1Ont\n+Eb2CJOOJ3Lycue8Fz+hzn3A1PQ4cCGPH/HwyN4IfQ3bmpgLwBTkt4Q2JJQ9\norYqxqEMUcoCV0mSPI9QMSDi6hUvTPHeVNx3as3JKT+Ll3/qLgu4D+tkrtlm\nh7R8IWarYm2rAN4zkEQ/epQmiHZ5W5G58qsS24rHfa4G1leddWDLF9xSNIej\ncjaqcrmFCKd+D0WgeDHgN5/jGwYJdJDVK0NKJiCCx8qsWiyRZh37gVkakJ32\nSZaEnDAD5ea3ob2rn/fBZcoRqLKaACtTxBcv3uADqPL+fbIRvxzfnpyZhcbz\nG35r+r3RBx7pI41m5d5F+aHcbL6f632p64ZpEX58yDlmvulh2+NfHLpkbYE/\nplKjk4inLJd9JvKzFfQxvl9is34wFwu04+toDBJMBQTB5bjPo2okN6nAVgns\nXrKuENDPOSxe3kAd/OdmGc3316ptnS+g5urYDA3EH/NAr4DtCAN4kLXiCH88\nKCl/\r\n=UHmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLJb9oNcI25eHYqv5PSd/sE9E5uibjNtlVusbBlMq/FgIgXM0EzzD64VVZgjtCqG4K1gUtEBcGZDuCRh3Qx2Ab0iw="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.2_1631069544896_0.909282148742599"},"_hasShrinkwrap":false},"0.2.18-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/09/06/2fb1e10c-c18a-49b8-8acb-cb9f6cf46398.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-SVXoWWuaQK6y5nd04KL+NFW94N+55/OYtKxR/mMFjmVoxEzT2oLO+17CQNlEYurjUv+lQ07ctFiOT7Oh9xUZug==","shasum":"97f3f6a2e932eaf0e4bf93f6b72051b6b08bfb0a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.3.tgz","fileCount":150,"unpackedSize":250741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOabmCRA9TVsSAnZWagAAc48QAIURaDDWhRQ8f0u1XI/f\nI4xltAWIyCZGKkCQ+lhFUCNfPTKGIqpzX5E7yx9vyTZZMefHrN+0ug6Ovp3e\nhyAcdbmzBj6FhvDBEkMsF4dbxoaK09qyQzCrnDFUOlwm/QHGR+z8cmT4DOnt\n9H6QDFPEMMFEdEPi+DQU3LNDDtFEAerlzL2vfQ7K2anQlxQnwoKrRFHAhiEi\nwUzNPtP9yz1PxQj1nXLvbcP446uaP/HKRxI7vvBa2xJ1sc6P6/gcQXB98J+o\nZfhkVKV49Bn46Z+Mt8n0hdL/7VsKONj6+bl8pIXKmnQvtpfuGs25mR287JbD\nOIa4KOovnLHdmAx+4kGtPg1GxORjn1/IhDnOHuZluA2BtFvr68z16NsrZS8/\nHfl3zk3fz1nu7FKVU76imQY3aOfc5lHApKtd+ZPJT7xlS8q6ZuWYeq4X6awi\nxCKFjpcofoj3L1/wXgB84tDu20uO1JZqIPwBxUhuT5frkEnaTrPwu9BFL+Z3\nWvQOxYQpXpEzx9POhIR2Y0xwwmHmfpRn/WfX/Ot7Rtqq2E4SCaYySx592fgH\n3JXBQ0oWpLEi52kBt1SX939ie3h30YMpCOH9SyxkD4h5h/FZ5tIHzDBU+CAR\nprX1k9Qc95EphkRFvSFJJLgcrsny7MFRpALu0KojVUuaFQ0GhAFw0zaGURlU\nfDN6\r\n=d179\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUeu/lJYhI+GBO5CEohLBItrXp9H1DiJKBFWQKXOzDGAiAJ3yLl2ysZXhDOOEw4c8FRwThpUNDDPl4T0Yk3hLIfuQ=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.3_1631168229766_0.3608381610079996"},"_hasShrinkwrap":false},"0.2.18-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/09/07/28f82bb5-a2f8-48fb-9445-48d1741abdc3.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+PMLq0oC6oU9SRCnVtJQNrnn2qKgJzHj2As461UJHR16+dpIkVj5pD6WOCOEdfgiUs3ELcIM+ObbAX/uD0oX2g==","shasum":"4c17664c759ee96251fb1516707fc839cc1036ba","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.4.tgz","fileCount":150,"unpackedSize":250744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhObvrCRA9TVsSAnZWagAAj+UP/34L/uj6y4r8QqgOioXv\nqNZN/586wjjcUSG8hWV1tiNSOjkmG0o0D2Gk5fQpcSJ0P6+cdNasGSlnzMos\n2tBo6e8l6WI6ryE7KE2sMSF5v67IzJY2NbJVrruNMjZd6hB+2aLzzyXy/X0V\nSkRy5eZ1zHglFzEGQeGqgnq68FBmQgljg4mHPrZD+eFh6kY20BgD0Y7bblW6\ny1DQyPn5/U7CTIMHcAcc3bspUhle7DrFni7PjDYfCmoFss3/0G7btWl270Bf\nKrHbGLgmTxZlTqMD+vA/p4w3tXkS24lLjmnPsX72hgLIbBYk+nLiUQTKQDJ2\nDk4i5JFdEnKnxKHrrWlX77Fll+5eqf13BcAtVLqCYZ/SpBU4OphvpSOMm/YJ\nDbLTJndcU8MVVSjLTurWAUqv6+4mAarBKT5yOb6mPOnsfraWNWjR0TTsaBRI\nKoX1utbQ7BCmlJWpwXSDj4t2Ks++MkFaRrKYP02HY9WjKFbgLgzqmVDc9wjV\nqQaZIODtfv427RG6/M87qh1meg015fiQBm6r7s3fVqGL8bWh1+MRzepOVIPX\nfRTGEG6eXPJPsB9OFFBXOQ6fQ0nIcFOCxnWHfc8rzWhhez2mdM+Pv5bLYH3T\nNGFo1ta9Z4/yqKUheJ2cqSSu/aZZgYExYOKkxq1pobf9CSbInsgmwAzu1s97\nrA3N\r\n=hyPp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICA/JB/WsPwgPOsiHTGPhgysnwjEJ/P93XPN88jW4bCWAiAIlgEwj+mISWLy69Dnkf4r28jxk7SpXRQveax888BT1w=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.4_1631173611449_0.31182034770780476"},"_hasShrinkwrap":false},"0.2.18-alpha.5":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/09/08/4d613a6b-5979-4127-8e8d-ca1f02e947ce.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-LjMne3TMVtVSBi8tyodl+ROHxitYXz1tDkHtCtf6vP0x0NUQAoZqJqWDIreWIgyQrfgAjq4zV3fIvrSD1+FiqA==","shasum":"dc38e5e3aeabd94e4d34054df515e7b4856471d9","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.5.tgz","fileCount":150,"unpackedSize":250796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOb/rCRA9TVsSAnZWagAAlwAP/1dlRCjlWJ1MgzcBKKHz\nNv/IdWjzDIORZIoY/2aDWc9nHHiiTvbrT+MwlSn5B6bKqpnP06vn6uWbY2aB\nu6Up3nPtbxL+oy6xw2NFKxMI7RJ0fFIliINYpc6eQJyatbIoH7a1IQjEoGfL\n0wjVlfpX8QTXAeZlsxZYcC0Iv9sf3ILIwWOqZa7AvYaaZ/n+m7LCwXNtSMib\nS9Py8QCLXHx/0DNw8XfGkdH3e4Dxw+mahb9GP1xHuB0nQMWwADHgq0rrxd5f\nkNCVr76E61kxxMdwJ5QtUFhzZ3qRLqqt2cB0rkq2DgL6Ltu1UETseQH8tByq\n1JgteFfTYrWdT6xy/wIB+pnGfPY8zIPV6wrC4qyqJIh8+Ib30wUghWYzac88\nV4vctiQq1Bb77JDXXxCI3suJhIADMz1WAwWWQYKRZeuKU4866TeeWl2C45x2\niqiG8FaCyCuEr4G3QEIPnCbCXREAD6B+YGVU/B0PE/xPWih26ufeiR7FLLoy\nAOTcvL8ojQwvQgU6ajxsaUUvxlk5UlIj5aN3Q81As+1m4VxrJ2qzTa770oXT\n6xtsZpOSRecMchjD+GY4LjmbylzkZei87UTiSV0c3ZX8A4ndQ0u4ca9g4EOu\n7c5FI63cJ0Ua3XUPqd49nAlnaDQZk9WuXfoRypvTcXSKmpgjuB2Md7oSpJlt\n1+Bu\r\n=zJqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANaOLF3xw7bmNlFQES3ZL32PpHG9hbzGc3bJWAc4U+qAiBhkMB/4ewo9dcA8dm/zMCEj7zEkTRgr+WmQVEqFkUFvg=="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.5_1631174635807_0.6063965098145288"},"_hasShrinkwrap":false},"0.2.18-alpha.6":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.6","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.6","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/10/06/03d8554e-2f77-4878-8629-d8b368d95b98.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.6","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-AJrqmW9rvkBWxbik5JWLgXEj6+3ZerIyPhljGBJCNoHdyuDJeRtpCIthRSsrBESK2IoDyCQdRaeUvAzmitk8bw==","shasum":"13b19c7b0f08bb8f461152d08882710c86c7b6f4","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.6.tgz","fileCount":150,"unpackedSize":250804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOwIsCRA9TVsSAnZWagAAYFkQAIokT58N9DPaEpkaqHQk\ntnKB0QDCcx+m8MNMMRnPs0GAWlsmsLXcAPSr48Re/4G9ea8cWl9+3R3v1C47\nhQB2XII+JAv6nYcolfSWD4NjgawHXKu1NCjmhaHi4mHLLDgWuqPPqlkMRiXH\nVwx35OjAm6EUKFXHv1Xc/K6C2HZpIqLkUUw7uXy8olhGJuxCsp8lF7ohilbY\nyUCcBj+yIIA+0vEb9SfouZCbhkuXs9w57fryON1qhAQGIjjkMgeApD/dmzwT\ne8bqwWOapDK5epo5gxQlxl0wdiaMngUw+vdSvnFe/Sj8R0s5A6PiQGPWHfCy\nKTsLWpixDqfpUyfROa10Zx8Ut/p0KmYbdVCSpSJRZ8Ni7T5lh/Tgwhnu9ZO/\noaYbjB4YDthu5KIpDnUT/E6vcFBwQkmq3DKflSd2z9FfRPyuPTfWKD26B22F\nH3UZ5EzAHfUbZtJMLJDZ6ZCPAQn70ICbfBBd0iCdpZ9YMJxgAXrk47xUM0l6\nyMbcfPIJryt8KpqkGg7z8gBiO0xx3ceia8FlMU33dhVINbLyGcrJtyTcrwi+\nb4klW23uHOy8evbG7HXD6HzAg4DYrsJpKr3MzrqZK9Vo/cdk+QnnxrJ1xw03\nEFTpozbphV64wpwfJeehRTYuW0rQSDGv0TbgZ/i1QfV+17vKcI/8ehoM00+t\nuId6\r\n=Hi3M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDryPgrCHxtFoXo2JSCuBiHnsh0Er3D0hPE6sQWcqIUBwIhAOyUPpuJXu8O6CptsCl//SDcdmK/XgvgjizBoSj/FWKY"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.6_1631257132361_0.08416600933941698"},"_hasShrinkwrap":false},"0.2.18-alpha.7":{"name":"@aliretail/epoch-cli","version":"0.2.18-alpha.7","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.7","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/13/11/66ccdded-2a9e-4733-a5e3-4f41be385da0.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.18-alpha.7","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BsiCHTwP4XFenTHPZTHwAu6qq2ah9jUfqzGOIAd1A2dy3E6/HVQWMducTkJj/d51fVbYvTIYKm8ZMECKHaB7wQ==","shasum":"a32af8c965e20dada6258da22593a3256f1ce633","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18-alpha.7.tgz","fileCount":150,"unpackedSize":250846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPzoFCRA9TVsSAnZWagAAJxMP/RzPrTZGVNUcrhQ3Mxvr\n+F0POKHXV1salG7BEGYxak0Z5RuTtA3ibOUT7HPvg1Wy7JG8q+QcuUENsmI9\nQRXVHCu5LtP0anSxBITeNJRExGqIHNeRHRB4MVCSZr0UT6YBAL5KhUQtr1pI\nVb8a4jjJGPPxev+WxIBbV/nUpchkDT09KWvhhrCtj1O+U+BbZ38QvZS4f4xy\n0hXU/Z59XQstw08i6cxHN8cM/66Ud+wSG8HeCzV/ZyUZ+K9MN3zz+Ciwyker\n1+IHqHl1JbU8FQCpc9UEN4HvnypPFEmCS4yk8jXbpZrGbu3fOehWrkwupdpZ\nIijd68CkbV5vm3YJVzY3mSDwSJvz4WIEsb8DEH5Acms1FcUSgmAT0a3yGOsd\nRaXyTXhVNOicP2ts1fmZrT2sg32bsTOQdpf36PSij5OujB0x1yQZjc6Y/Dfq\nhqMNWIf92LgqFM0x3QVAwZPrHbyjWvD7n7m9zhswOC4axDbby8lJiBft9fg/\n0GagnufbUVpshQWd2EAq4E0GSSimPKNvM7cpVrBpRdKsndsATespyi/Yhpsr\nsvThElPE/K5gH2Xx2abfAV34YGRqEEzMMnYCgl7WaZBkCQ8ar4NNSDdd+yUl\nfqTW6iN16v0IDwvfNkD1T0deKeGZIjy6uO6Ck2z5Wd16gjG+qWJ8r0gdsFQX\nM05z\r\n=eAhv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFt6ifSVmMRfl8nglnRR1i9SinSqDrsQc9OX4Xf8oR1gIgZD8QPeWiM9wlBx9sZbnWoWVsuZkHRmwECzbe4Tr3zfY="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18-alpha.7_1631533573336_0.19326802231318085"},"_hasShrinkwrap":false},"0.2.18":{"name":"@aliretail/epoch-cli","version":"0.2.18","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.18-alpha.7","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/15/11/33758253-532b-425d-85b0-8992cd4e6788.tgz","_id":"@aliretail/epoch-cli@0.2.18","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qtDkUdhkmx0dfRJfR+cuLNvP+k+iDYCPn3fDjvUerHOsPvkBiaSXF0B0qJwv4FjZKIl6srrHyH4rv3mdz5h6Hw==","shasum":"b207c9dcf6a54045e7c3fad472d12512a1e278c0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.18.tgz","fileCount":150,"unpackedSize":250888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQdhnCRA9TVsSAnZWagAAuREP/jt40NjYSSSJptG9AGuV\njivOG7iac25SDuND7ovZxajjyL2oKThXcqX3lcajklGi5YkhG3zDkh3ql1yC\n0tyOawLRyk/Hn+15JfOi2MjgS62l2CuBMDyPETlPsx5f0SnGP6NS/3uAs1dw\nAI47e9I2CUXX2F9ONi8Cae3Vjl3ZOelVkfufYlcgbggnvZmqhkA2zXQofauE\n6DfB5icefqewaFnFUgq2POzykgG59DA32hiOw4/Qk/uw4VgX4jjhlyCPVb8J\nYVqZViLc5gy/6ubW6HiYHoXC09Z6RRt1z4x19WcktGioVU+uKPcUlK/MVo3j\nk+ifIgB4pv8SeWuwy44Jf2c15wiGR58ImNnm9TQaDJyyi2jcBPYtJeKbQhh3\nqm0bv/e3s8A+lkAKe2yDLovLMsH3Zy/XkxcmxyEh8GMu66NNkPiTUixWmOBf\nIyjSyUV28j47CKw1+wXpKE67J0fJVvgGNk+XpcdO9xbBLwmlci/0TYE8eNdw\n1CWW1GqUnXmfAiCIM0jDUg35a9358YxB/MtL8sKVW2Ugos+8W89CiCG6yeJQ\nBLoqZr/ZCCD3qGL+N4jND3vW3D6WUVeEPYqB1Yub1BLwhLPbFM1D2Gl/uyxZ\n6/Kg1S+9mhHErVnAvVLvB1wfaJyaG0eHheMuz0i4sQ3bHB6e6uhKpnVQvjn8\ncbj0\r\n=5ZJC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDD07Afd0/OHEXV0CvDqtLXslmuP4d8OUvOhKCE09nlgIhANBpXJ+P+4xVOTW+8bXj+EWXQELL/SamP5uAjkm1zreR"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.18_1631705191479_0.9922757912336804"},"_hasShrinkwrap":false},"0.2.19-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.19-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.19-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/18/08/8b88eb64-f0a8-43c3-a405-680e5419db60.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.19-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-buUUwT3eU8eWcDdopjuiTBX+g25NLhitFADwLHA50sAUqMKJUAewEbPaLZrZi63CzIVkayLNLJMsNmYJzNmWrg==","shasum":"4e076be17d0e2cfd4b981ca64fbbac5caf49398a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.19-alpha.1.tgz","fileCount":150,"unpackedSize":251074,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsu8rv45WLe5l5SGbGzRa2K4Lu3eOjSV4acA2+NiZqzAIhANii6VZFdjaiCZVCEpmf4sVzeg6ZGy+tasLdOC43zoaJ"}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.19-alpha.1_1631952089036_0.4692536416655593"},"_hasShrinkwrap":false},"0.2.19":{"name":"@aliretail/epoch-cli","version":"0.2.19","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.19-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/18/08/1820b373-de7f-4952-81c0-54f9756e5e1c.tgz","_id":"@aliretail/epoch-cli@0.2.19","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ytdkw0uPpYdAu+lvizmpdPwYileb4JZG/xI9uvN4otE3ea5KrjmHCU/SFIDjgMJmmAwXjl8q/Twt2xVg/yIyiA==","shasum":"9ea4f3fa1f160cad51b3265edb3f614fe37d4846","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.19.tgz","fileCount":150,"unpackedSize":251066,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVNijoGzQeppxbAbqh9OC4Xtgkkg+BBUiXK6kgspZV4QIgMrnHSuOq3VVNIrZj/35kfXvrveMwlo4KWUWRH5bstWU="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.19_1631952360937_0.86554105280568"},"_hasShrinkwrap":false},"0.2.20-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.20-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"http://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/09/26/10/086a820f-2e34-48b9-843e-97e7d25eb8b5.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.20-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QTO5+uOrOojlasSRTfTqyVTYlQ5VnKgnw2DYUbXK2KJXsy3CfqX6pm5pe8DifSaJyP74W5f9H1x6wWl9Q3a6sw==","shasum":"a4d53faa65e959da45f49913e4c09907d6cd51b9","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20-alpha.1.tgz","fileCount":150,"unpackedSize":251535,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq1JuAbxYyblgPnk4V5CZI6yPQIUUHuBgTm0pST+tr0wIgWGzxfLP3wfuP3N33xPNtPkg5DefybLWjNGEHzQqeI+M="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20-alpha.1_1632653691917_0.6392120378609121"},"_hasShrinkwrap":false},"0.2.20-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.20-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/10/14/01/d896b96e-71a6-4d89-b229-982032f226e8.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.20-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mDWHSMhf1hv+UP8p0vgAN8WyZfyFPyIiIPcNN6WoXNLLbJNBK89okraGq0yRtrqWVLAtVLNjdyPnPsjAUVXA/g==","shasum":"3026bd9fbacad1399362208bf79515ae4cd66aab","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20-alpha.2.tgz","fileCount":150,"unpackedSize":251637,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAnntdS0QgZ2CtpjRdiTv28QSovUlL9njn4l7MLyeXE5AiEAyQqGVlDsP2aYjO05BHEtTpLaQQ/go/Q1Ku72yBsXfkY="}]},"_npmUser":{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"hongbang.lhb@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20-alpha.2_1634176617842_0.9002235247856774"},"_hasShrinkwrap":false},"0.2.20-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.20-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/11/02/13/5d1043eb-2951-4a91-ae44-4602952c30c1.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.20-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yjux0rRldGP7Jj5GSGTWK/BTj3tmSBa52ZP6Yo+4NbSeOKYeJ4tDOhsI+axsHgwZDbIX3lS+S+YjP3++LxZL1Q==","shasum":"619a620a90a28746dbde60bf2abb5b8c5c96dac2","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20-alpha.3.tgz","fileCount":150,"unpackedSize":251624,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0C3d+vtBYBjV6iCn/HdnFnZFOjqhNV+lPFKPVl/Lo7gIgcPiOt/A3wkTbFQamgAVJjH9a0NilamkANxZIrLEQRp0="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20-alpha.3_1635858759933_0.207771849196712"},"_hasShrinkwrap":false},"0.2.20-alpha.4":{"name":"@aliretail/epoch-cli","version":"0.2.20-alpha.4","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.4","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/11/12/08/e9f98e9a-f72f-4b90-bbb5-5932928509c7.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.20-alpha.4","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-udwGp/pZJWHBjpdtXiD9iPxdkNfGyllLWTBnqXD4OM6rzWU+aDTSYoZzGvt/6+ExvSIQ4iVLvYiWbNlKd+QgSw==","shasum":"1e059add4da8bf92b7d1c457acf189cab28d5b6a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20-alpha.4.tgz","fileCount":150,"unpackedSize":251631,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBHVM8z0Iw3i9QZMXrnYtzsjVb/fvDQbHCj5z7ndRX5AiEA+hZ03Xch8KJnwDqVR6N0T49yp+g4chk4IbjFAp/zqTI="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20-alpha.4_1636707289452_0.9243390181617541"},"_hasShrinkwrap":false},"0.2.20-alpha.5":{"name":"@aliretail/epoch-cli","version":"0.2.20-alpha.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/11/18/02/5a7e6b5b-54b0-467f-a03a-c1699ce55136.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.20-alpha.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KWM8itPavukuVI6au2BekcAEwoCnrZiijE/Q655LWxuDYuDWM1L3d0fT19caP/qpCAtfUV1jt2uMy1CprRkvVQ==","shasum":"374cf0b1af9f60d943c39507d87e7c55ffee9710","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20-alpha.5.tgz","fileCount":151,"unpackedSize":252013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlbtoCRA9TVsSAnZWagAAzmIQAI8ZnFAcEURMgG2NUu3L\n/JfV786PcB4vth1+D2FLcnI1noEKtiksDCmUE1b4QMI1lLtLsTs5FgdSUxLN\n1FHMHtn2NZZuVLimTzuPPoURqdppktBOIrUrRTjp+SXqhuzrPNh8klh6Qnyn\n0YeEXyh3jFn1jkYvYunNhviBdikqhjdFQMaeY/tXIqG8Sm12YNuEFaHqauUd\nmoZ4U5OstHtzsgVuX85TNzxYZ1VQL41jXxwyvqmYW/MyGNqDUeW5AhScqsF2\n3JxSah/UAXd9A+G+5CCxRY3Wp27aRPhrINaq1sFO+pLCLflJIUOWXmFErqvZ\nZczBPbiXJfUWR7+qCA1ClBYXCoPtGszRizv+4eBwv+MXl2+CXoTlKezVVsxc\n8MuYngAOhj04bn3z43Z/mJRhCCXlXKVFayrUJgNmhGpc6gBqgyh2wz9X9NVE\nJ6YqDR56qFvPhMqhdTXCqv/eD7D/qO0vQSorfPTlWHI18KSNr1olck/AIGSU\nNAek3MVGFfsS2KnfYdo0vP39mQHDKv3tmUMfSC+ViisQ5hWSs8DWApKoJnO3\nKF1wQSr+ip7jbT3xPPAgyt7lyb5UGtGZ8RdpbDd6cDO+cxxt85v1HxA8xIvF\n8DcMgooGEVrAaQYOa+/EASIOfBkynSxI8uMErLk13y/I5nz7IqfIaI0joMxL\nal5N\r\n=Ce17\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDorUgGabyMYH1/Gpx3vQr8Bh6LcnuKPvb+gBiMoEYjKAIgSVf4U5Fm2sugTGzhiNN6W++HuTtlj4vNKBHpSyn+hRM="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20-alpha.5_1637202792066_0.21996238138786994"},"_hasShrinkwrap":false},"0.2.20":{"name":"@aliretail/epoch-cli","version":"0.2.20","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.20-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/11/18/09/5b2f9138-1cd4-47ff-9d68-38f7263d8ed9.tgz","_id":"@aliretail/epoch-cli@0.2.20","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Re8RBVzPNl6oIJ46kOPzCOEXjCUvmdIMYKyUTumTaUYUbAtJnMTj2QOtn4Y3SR+Fd7W8vZpvx/MB/jeafIVBRQ==","shasum":"c2e285885825c9e5852ffd9d20bb01dab314a4c9","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.20.tgz","fileCount":150,"unpackedSize":251979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlh0QCRA9TVsSAnZWagAAc18P/3mFr30SBlqIwK2Aq+hf\nlZ9dtygSIBswyby3cni6KD1oYMyYugnLjbrevvezivccLngtKkNBUfXqIkgG\nGRkoRnpSBicYxFSvV52OdRYtdZKlNflrkLrLqtE/tKS5FTRN5l14RESdrFon\no8C+fl2MVvKQgLc8EStFnztPlN1p75fSBviC4iJvluebgheBriZCNog6A1By\nt4G4WXe5pqHUSQ5L8J8rIjp8xLpK6DBb6Z/ifZ7rFNOwc1gG6T7acQMstZgl\n5TV2nbV0C5e/id0cfbVH6/HtedCxxvxui01Sa3sFatimgEgeN8Befy/REEj9\nWI6ePK9fkoLHB7wjsLhiQRSouiul9YsZk4uZ84C/LfZqK8STdBELYRg+wduM\nHGgrX+H0aLRcDxlGBGI1/qWJaYJW5mY3WEIDCm4gXzaagpCp7lygXaowtiGq\ntildYMVfVGnMet5WikegCVUZy13qK8Mro//Qg1zY39UUQ0wJ42W7uQKEGgDy\nulo2b/Xa+Ogx9mE5M17f9uOYZhdJwIUPT6RY1/QHcPdZgtKSLMiwS1P5c3Ib\nPdHyLpsKJbvKwFJHx+axP/p/XH8pmW8hk2OVuxj3XZFld/6JV8Als6QcXYEX\n7cUkcJvFO6cwidmSGZzjGGVyyl1TAz267VZLToxP4wVp2VA6fMvYiydJ2MK/\nGM+G\r\n=Pave\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBtSbStraiB68rxfvVYeIZJhniRzLD4HnvQxb3VHxDuQAiBtBvJfS0UOy39PhMOTqnY4hKWB2hxKIJmJmx5x7Fr36g=="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.20_1637227792060_0.8232317526906159"},"_hasShrinkwrap":false},"0.2.21-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.2.21-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.21-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/12/17/07/c5114604-fb68-48a4-baee-0d5ca798308d.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.21-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-s7i7NQDkWUaZ4KOFoIsSAIiGwZnhndM2imprS00E5GixGf1vmwDY4XFvT8xHvktHBUQmGOt3EhDSYaCmdVnR2A==","shasum":"944b400bd4ea7cc646ebc5b6647a62375022c9a7","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.21-alpha.1.tgz","fileCount":150,"unpackedSize":252069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvEH7CRA9TVsSAnZWagAAPcMQAI4h+nbMwlaXU283uUab\niAjIbIj47xayQAR4+tjlAxI8fuTT4D9Cca2nQQjq5N3YzCTHCERz3arSQFl2\n/+ftpoatjjGCIWeVsGTXgu6eCJmbNnuIL76NnJHsLhImmcC2yQnjesEKpb1P\nlp+aCiyhVgVdpRuWK5RXa5m+5QH3RFafwHUe/UW0CmT/HmGIJbMGXkWB7R9z\ngrNlWCzedBNPdGOm3YQ/inYLkz5rgRetf3bfGD3mRwVLNmUo0yZc7KZU0tDO\nNe79M0de3pabYP1YdnLKc9DfbLAo/5RX09dkcK15Byz7UpnGPdN76Wkq2REZ\npyx90OF4/bek0XCBx2XaAbKHLr852w8JK6ODJu9cLSipgKP6+fGtqShIfPdT\nLpuNpfSG7SNN+wt3oe37X/86ZU4fcI1lZXSP8cpFAJPCS0iOxuccE/EYX9gD\nC+twljRDNrH+7GsYNTZh+HUud3S5rZ7Ey1LsDUwR5jDSjA9EdeaAvQ7sT/2s\ncnQwllPh3dLS9xkyitJnRT9Q7RjhcyBOmkLukgVmIxbeW1SSaY/CxKaPOnQC\nkwLiKySJY9FxfF/Gw5UIy54Epg0fsZOUNWMOx4FUXgVq38OwgA2NNcFBMcJh\nsZGcuMj6TV9U0a8VUFuFjosk+vnIDBprIEdwgpAN/KjFLxAyVzpdvVtvuIkP\n6x1k\r\n=s7HQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9M4n6nBOTmIDTkC4+GDVKzdIAsCROQtR7zI3wlzWomAIgHEXzMETr1ZCM29elSYgZuynetOTS5ny7yYa3IcY8AAE="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.21-alpha.1_1639727611764_0.26893273047618127"},"_hasShrinkwrap":false},"0.2.21-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.21-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.21-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2021/12/28/12/607f3411-4227-43f7-a5d6-c9aa64e7d64c.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.21-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-P3UNXqJWlIVJFbHaOTw8TlyF+FOhrVtxgSwOKbqBsZeYNgxTjjDOnJmf272eATnJIzx18gY91rEfaZR4Eg4Mwg==","shasum":"043b7e38b49b3c81675d248eb902b3488a6cf829","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.21-alpha.2.tgz","fileCount":150,"unpackedSize":252226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhywHTCRA9TVsSAnZWagAAKj4P/3AZtK16Lyi8+qeU6DRA\nuJTuWD8M1meCkdkHMy9Qy1TVLW/D0D7Fcjfa5iNyYy2uxFxbyaYtVPwJcwXV\nlW/naqKi9QgfYrIa2UxHJqaHPCyYRm8ri317PRmmTLRhjKhU0cyDkvOsDCIM\nJZIAUQ9G77Q6lsO62Qez/r31ny7bjSX7hkdvNRJSqvfw89tw0XhxE4WsX/Yv\nxydwjFhfwCPHnaibYU7984sNirOPKNmfCrmxF3pY4IZmCRhWTxdsRQjXDw3S\nFIRFbU7TwZ1XNXrhO6Vh9RLOU/AaW+CTnkII/H89srpzXMZuc9R5uv7dBiQ/\n+WauR4gkyz5s6nU81tIUfrv18TqISR8jL/LVdojfW931U3KxUJcoFRVuzRhW\nTiRZ1JOhVlPFQ2ThLu4ehFP84Oxcm5PBO1im+CdQfekLJibtVB6OgTHogi9V\nH/Q0ZsRVqt0Aa1bUhIcrKl5fntfRIeLaEtdkIG4ycOLiK6rpoLg0E6HBKvbG\njeCfO+MZRC9Nz+HGG0cPrpt/c7TY5kCN4Wcxlo4xhvyTgKpQMH5BzXAu/nOm\n0/r3HPZjPfBZEkD6Pr+U5S76G7kaihMDnglWk+jjkNP8+1E5e8YyGppn2s3C\n5Es9IQRhGMXMZ4qXhTWynUXJi/cmH2ifoP8rRDM0d37qUC2jO9e6T2qcv3pA\nA3z5\r\n=YgBm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGU/ts4RVUV6ZWk/OJw7jyxDnYf770T4xRl0cVD/Ao9BAiAgZXClqkpvAsdovYh45Znm7DsH26thG8i9Kh0bgR//fQ=="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.21-alpha.2_1640694227079_0.29323128202479265"},"_hasShrinkwrap":false},"0.2.22-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.2.22-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.22-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/02/07/03/1c28d953-80da-492b-8733-016ae87c0c68.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.22-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8hgAab9IbhR4bTN2c2DncVHk1lbCqs7Z2aCcPUtKAyJgU9OdGN7qpfEp+Y8zGRe5GZ6p4uZ+bk/AcxBexI4/kA==","shasum":"b1223b15885fbcb996ed8f03967fd8db2d8c7f03","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.22-alpha.2.tgz","fileCount":150,"unpackedSize":257714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAJRRCRA9TVsSAnZWagAAHxMQAKK3/HxaLBFjUAXfcMBs\nntMjY4B4uWX4OckHL1dlz8uOvmzePHJdhNeH9L0qRapmOO+fcNdUsrMOXphS\nRPhgl2GG+hmGDMy8X3fs3EHsn7ev+q/D2GBXuJJaM8wkw4KR5ULgUZKS8Yxv\nrmhFnfWmz3IQO2fNY3mESQOe2bN6d6uJYArStOej73Ko2RObC8PoJ3HI7IUv\nyKKT6yBn2aNNBVhR7V/PGpl7cb65Kgp9pPQPDzOI6I0c0lXTEDTsmU9Konj6\nQUbSBjjgHoyiZv09C5XqYj10TogEZsODRmASa4xUwyz6HLOSahJjB8JmS0NG\nbiClG6gBGZNiK01ZRsuTzlpDPkHCKDziP7stCJsCcV0XZJuRYbx4P2LxQKOp\nZ8HLKfwAqatSSxD3YbFKaBbXe3vWi8L7e7ZgrHZYtqIKBzaFZtMvIikxVO4m\nPXkZZqTcnSqmqjmqtD/dzHFuH6QsMA5//ALmiy1X61uxT8tmm+ROQ6JrhtcU\nwu+PZlxPjYJOQDxtM44jpBgfgIE64U7aBINZwXJQepaW4WpBxAdU53SJG6Fd\nF8SybbydILlLCPKaH8QJhrc8+laev7rVgeq5PQrKRLss/2HVZwUt7nwoyA6+\nN6i0nN2bx27FnS0oy2xGcseMf+Qbm7Aw2xoI0m7ZZKpZ0qJtnDfxdzXxECCS\nWJzu\r\n=orPj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVv41VMZ9l3sW/VYcaQ6zbvoFbNc5qLAc2Qcu1CfP8gQIhAJiQjGLgve+Io3i0qJhscJcdzNxxDV0ql4JqBW++IQ5R"}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.22-alpha.2_1644205137005_0.4267380140799859"},"_hasShrinkwrap":false},"0.2.21":{"name":"@aliretail/epoch-cli","version":"0.2.21","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.21-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/02/07/06/31d5abca-0368-4c69-8b63-bedc9e09350b.tgz","_id":"@aliretail/epoch-cli@0.2.21","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tymW8LbhDOntJH13r8kSsGhNpPhEQ85pqYWA3YBzVLIK+tPtGa5UhfqdYsaF0gjR5QYqGftDOwj61Rtcaz32iQ==","shasum":"c095b7048051a2e4efe052cc785e893fee5b9024","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.21.tgz","fileCount":150,"unpackedSize":252218,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiALjrCRA9TVsSAnZWagAAaRAP/A7btQqGs+HlvY16BkjH\nypIkeMuGEr4sUQ2GdVlRfIHKC9O5qSdTegKQrbH4/LxBI57E+AbD8l13FLdS\nnd42fvINh42X6k7tMLIgw5+X27lz/YiM/MTG8biX9X+hGcHMKZAYXd/igkRw\nXiFNcJBj9Gec1kxBi6pytm1fSQ13EsQWeYigGe7LHiRDPQ2Yd1dqQ902A6QG\n9yK6h5S5XVafAP+sLuhU9RZTcOedT2YZgPNZ4ILcQkwCYB+7I5pWOeKOj/pX\nkMTZ0iGo9vZ/IuRvopl0LpLNb4brGNMf+hrJerZxppn68NDhi22oc40bwMMl\nq/ka/CXCfUW7CYkuo+2k9jznaag7MkCN1WbZo+JeWdBPDfsraIPca8uo7hyI\nAd72XDlcgvMLSOK3GJB9qcK4BGKO3IK5iSlmgIeePc6hQh0ns04TEmhB3vMr\nAPx0vZMT+DFc1rt/O5W2vqvh82SbU5evELyJmqy6g4oqzB5AcCmdVj2zDAgD\nVHYd0l9obNtK84x15rlTNJUAt5V/MBz3SqRURq3OzsFHho/hRKPp662Q9RzR\nd4Uqiy2Cxmh8GyHvHFNskLwDtrFZ2t7P57T9YJzAPAlLflbdtXw3BYx8m8A3\nshX9J5fl+ry07uf1lSfm+Q4wVkNGcPQHxKAVfgJaZPSy0aSbWpgTLdtsagBs\n2t08\r\n=P9Fv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0tJZS1jBlo7SNjtocWQ2x7NHb1bDje969ltpAJQQe+wIgVJUySSqNvTrZeKy2RDHHSkWLPFtBMCsrdqMNTuKOt/s="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.21_1644214507375_0.41775663824288234"},"_hasShrinkwrap":false},"0.2.22-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.22-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.22-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/02/07/06/405e8a14-6360-4788-978e-4a8b4c2c8abd.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.22-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NJeEcXObcvzaAs6dzco4O19W6E4y7FTO7VRV62Fxk9siJgmWvbPFS+lZVwseEL2T7K4444aIbRmEpZhUl2oCeg==","shasum":"33ba9f35402357a9af5fdb745b565da55c5ad22e","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.22-alpha.3.tgz","fileCount":150,"unpackedSize":257714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiALn9CRA9TVsSAnZWagAAn7MP/jg0S0KKWMz8kZLy9hNY\nlB9OaCgvlOE1+MZXEYPSq2YQD04Nwy4oOX5pkIwihn2sRPMElwfckmV9Fl2z\nr6YwrjzOFavNzD0l8pz/+bPTf5SpLGRYLyADooruzw6uyuKJsyZ2VyBqfXrE\nAqtkJS9UCnE5r+g7sFNrzuOnsGfdi70lWLXHRC+p5xQMkkHvYZb8L0L24EGH\nuXoPTS8b3P81RjEm7ofmupf8ZX1WMs35KVrZVevS/gN+jJim/OfbQk1d0J5G\nimVOGVvtKfJbLDhN1KqI587qy364nKqyPPJW66kR92+QdNH5mumBtEeGf3Ui\n3FKCcFe+pkKxxh2EAAVWQ9djL+pv+SZABkK/6omGILBF70E1/JTj6xDwMgWD\n55hjkFeJTf5tinMWNINhMlFfFLBngKD7UlgdKH5uP5mQR4cuy5hhG1nl2+Nx\nI34EmVR56oL1CODBkTpCZKWJHEmLOxEHajPo3XmfdOeDSLh75dzl+dD3XqgD\nBrLL/FPgsuiHDcEHHZ9bIq9jLYUoJZ2JXpK8VRUR6ix8KXGc7ZlIMw01ikNc\nJBadPWwScu2MWv/FHDpzmoqg3c+D/bK39texGI0MLDPSGKQyOXCdoQxASYTD\n0kY+JcH2bNQ+UwiC76s8N45+UaMeWTMbiI1uZNrE+jZP+uFNUErTcgfhkAps\n4doi\r\n=R7Pw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+VkORKB+8u/mHGwt6BI7VeP8PDMftGFoOUSONLiaSqwIgVBCBgbLyEjKksLUwsJM/VY2D3ECorIiZY3VoVp+rFws="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.22-alpha.3_1644214781201_0.8997634344748313"},"_hasShrinkwrap":false},"0.3.1-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.3.1-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.1-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/02/25/03/3fd22d31-cbd2-4218-8aae-50cf8892b473.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.1-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZYAQkmZ07Yq2mXNnKXKTMJw3K4dhM0BqZ1VZ22Z9uu2RioHu2SFdQjvmyWtnXbIDkizxem+q+kk5dSom7YlD8A==","shasum":"9aa4a98bbbbb099f48ee72ffa948b78e4c373dea","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.1-alpha.1.tgz","fileCount":150,"unpackedSize":256884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGFIEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4qhAAjVVTOb4u71IEQZAAnBmVhmQ6WpmD7VzZIzEXnnV7M4OSh33B\r\n74edrb5SpZCS0b9MqnBLWEnPSDv9wONcRE7xPCU+GPV1H3FFihTSrRu68AH5\r\nOypRY37Ry9br8QgfOyVqVFepPFAkizkRVYxfCoN92f/SupCjdox1o/JbzJq9\r\n+bMRl6iiSWRsTm9VsmgxZCDwf1Oq5S4h1oC0P3UqiY/IXffsp6uYPYOQX7LO\r\n8g35gDv7LBBgj7fl/SIs35uEUgq3YZEaZVB94x3LTcJ50bSNtGtNk3VC8Xr7\r\nZF2rOa2jsRGkgJg2SztHBYru8uBglx9jhXb1wUyi8m5p9cmwurhkRmV5GxiD\r\nMDT+jfjuD5Q69173e+es8h1TQXYFQKrmZ+XUd4yLtpvhM7ossxfcv+OxRT6k\r\nszEcO/8mzfo6JDCrEyPGAaIbuFOd1pY9BeCajmY8McvmX7UwINmA/dRo/BBv\r\niVogaAAzE1mdXyjFO2lNPepDhsMqkXqyqzhrRT8hzmRfzFX2GPj+xFT3tb9e\r\nrY5ud06KoiBgGtCh0eNSzcPSWhlloHYnOTJ5cA9j5vjrW7o17BloYJJRRfKz\r\nLs2PTZD302hPUvPaoN3FnZkombufnsWMx1M39C/8SNFPhj+f+m9LpKxfPSAP\r\nrRUOxGiUmlH2Oh1tA0xB4op+E4lqyTWKIvQ=\r\n=uWBE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBECVnUe/m2NurApXMnVM1SZ1GaTh6C5u6+A8aXU1EZmAiEA/xpjKeH1pqyCN9Ee5Fd1Hb+MZOSTMHyFIpH2h9LIAZA="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.1-alpha.1_1645761028687_0.5349739158835578"},"_hasShrinkwrap":false},"0.3.1-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.3.1-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.1-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/03/02/03/25c2e41a-879f-4984-ace7-f0169cc8b329.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.1-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ncTSjX6w7BJYtXrayVuO5dtBdjCVg5rRPQje7tyU+MoYp+R4ktx3R0UvWTWIwfNnEwPvoMOtr3txB41emWmjOA==","shasum":"5f1f2927ce229359de222afd8b643a8c7b00b52a","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.1-alpha.2.tgz","fileCount":152,"unpackedSize":268011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHuVWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4Pg/+IDurtJ9mNuV0GRZ4zPKVEmuJV6BGhPc/DqFMcJW2u8ZmvVij\r\nAEFOrzchjl34gShFhC3ExRY8+EHbdKzuRRISy0bSuwUUcUH7D91l/XRwV5kQ\r\nWAmT1qOJYqaW8Xv3K/UxdJtpechhLO9+KDKodKE9cPSnW9ZU/7qI6BOiAOAs\r\n7wb2X3qi2rx0P+xXNM1aQITeSvmO2a2J76S91LevQshUcZ5LjtpD+CgjZcTF\r\nZNRTq1gVg7xcYE7Q0dh67v9zkzJRJNRN6EEwNqANmmgZg7sxyhcoB6a8y65d\r\n1D4BO3C49BcgItH3Izgz/BhW9SmtKKTiyfRm2RXAs7nZMogeae5Y/X5NKy/+\r\nNQJI9UT3cDEOMOaHaAfeW6K6VX0bF2MIm70FefWycAMZxCr3vTBaVb9JWQyI\r\nbGOugsfHufLsKsjEyYq4IlhiX6mcwPVMkgAYvQ8WrQjwLlduZ72DtPDazCGd\r\nJX3OXM1lTuvtdQ80ASPJk3amNQOjNhCh8qMV7uSJLqyZlbJIh5BwdCm/TYGZ\r\nCyIQBxt3q8KixDQ1fYTdAKWiAGg/SaaUGtkyNrxOM27rp1KePcpfoThGLaXr\r\nlw2wnG6kTeWCSduTITzTMHEpTVRz0hfDiSY1n+WWVN8Oh1wurq7eVCuE+cQg\r\nmfIrDCM6youIFI0Y7Yxpy34Zqu0fPc5Tf8g=\r\n=wpGV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDeaHoMYAiVgfBZaky3Tjj6IrD+mGDDGBrHWkjnJ7oL1AiBudT82yMNAhw66LmvLaYnbOP/8IZNh/zL0fjFVTG1ZxQ=="}]},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.1-alpha.2_1646191958574_0.8490482133354116"},"_hasShrinkwrap":false},"0.3.0-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.3.0-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.0-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/05/09/03/921c17b6-5984-4311-a5a0-80b5f9a61321.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.0-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yvmTofnix8Ew/5965NHNC1IQ2JLYm+ElKnsL4xX5CKYse02zXhjG28sqMOu63/83u+vq4kKS/gMh/hxMT2P8cg==","shasum":"785fe6ecd546f505cb147adb2b8607572a4bbccd","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.0-alpha.1.tgz","fileCount":152,"unpackedSize":264468,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDW/89eC/pIGxmfB0Bgg7bjI9S7ibvpF+nGQdeKh413jAiBbK7kepP1+0drIfbhho5AYOHukIzYQuL5SfmgT0JUsfw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieI5OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJ8g//YvXCcleYy80DPvE52go5VWljGB4xtWLU9ynkqElCkgrACM6E\r\ntMmLjmTuFUFG/3ZRJH7fIitS3Ls2tpbWztYsCtS44CRTGn5V3XdWWAFdTP7W\r\nWpl9bGREzOH4KMBZ7/OlnYWXGQxRZFlC8jd/2pdrfa8EBODCTJ8RU4jorBA2\r\nK3DprZ7kK0lFjo/4w4sJv0zf564mUJ9u6NDvgbnyXEs0pfoUZ6j2rmQBd8dY\r\n+aTuMiWl3Mq0eKxWXEh+eMv/sxilaZ2lvZM71zssCVPqUL2bkOlTei3JMIPU\r\nqKjJ3ZVC3npkAYQa08+BMZvS+US4uk7DDafzmxF8LBsTYCbyloDiL5/cDJ7V\r\nK1/xeDlKxG+9NNQnZRT/5kxKSRHkAg21SBIQj1AY7rrlIRVQv67Q1TS/DLQB\r\nyA87cKg17mLXerhxmBwLZf0bSUqZzGVyKu6+DBh9+K8tmVZxgzqHBrhml+vd\r\nJw0FFS9YDomlG0KbhnSJRq0/cpi+EM3nDLcEBd+tx2J7+LaWV2HygV2fDwqi\r\nQz3tkt9UaijzHzDIgdShKAlEDpeJC4ZqIJhNxWQD2PG+BZGSPOU/pYPdyYcA\r\nuHYI69p+aapprrD6tplf6VsnF+QMu1z3/CGBCrHdCfYBzIxu8cSyou0jNX8J\r\nsqrdu3DFWdFeGXjteOl0XE3IOYcgLd3Xl6w=\r\n=9t8z\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.0-alpha.1_1652067918257_0.601908681476764"},"_hasShrinkwrap":false},"0.3.0":{"name":"@aliretail/epoch-cli","version":"0.3.0","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.0-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/05/12/03/37eda76e-f8de-4c29-9063-993780b1241b.tgz","_id":"@aliretail/epoch-cli@0.3.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-LCfe0Z0groet5nzXUbP+Ypi58fq843Dbkk2DEEg7PrZSRNPEO0Et2ziDGbY0HP/jqUMXUbhiJTbT5GSLJS23WA==","shasum":"45b26d7ce5042226be01da2950793f371b7f4dd0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.0.tgz","fileCount":152,"unpackedSize":264460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/Wwt8Jat2qETazsuSwh4R3KpIf39V2uX1IE5i9OO3YAiAarBKNZ4vDq+lALICw2k2Ah0A+QxkYBX/yhooQy08ikA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifH2BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoo6Q//UUIK/GhHO6dGGJS3SgvknSc6vwUmFBTL8FGrX5voDrN6Tqd8\r\ntj8rI4LL4gRpS5pndNH8Mx75ZR5e+R/DZXkt0kQ56nU01MJ2WwBvv7pNEUl2\r\nY9t0Ej5mXYbhOKS5wFEHTQclvrxX+F4cLt/v6P6JLUk3ekX07NI6ehGb0/5j\r\nCY96N3cASg4jPgvDkuXk27xuHLgWN8NuoRPuV5ErQeRrZPmPpSYZv+5GQIUD\r\nH+5PqJ8g+EBrO3clhPGxO35uB3e0RXnapMWagW+I7CLl17F25LsBjEPFn6nU\r\np6j7+Ox+8tHR7wy9Wyr/6tl0hcGIBSl+0lZZD2TcdOApM8reVI7x7OJNjqQT\r\nsmeLcm7sGXC4knEmqMyM9TfoU+51ABk5JLLx9jYtkSpK18oDbmy5JIG2Ef1C\r\nkLDhM+6FZtiemo/HUtSzAU5VW1YmaiAFevqSBiF1zTTpcKGzcBs/fvFBMQmW\r\nlM5wx4l37RDTtm8RibWNgtDqo/R3IQqZgPgtm4lrd6UArYZ5/MkTuPMQFJX7\r\nwywB7dWcjegFX4hQ+ZNChnJ9vrfHJ9SEzVu69gz78gujRi4JKZAESOM8nezM\r\nsbB3wEqxj2J5v8QMeFHv0+4s7WkBSoOZ79y3j3GhZ3FMhwJIMQ2CNRDDXDW5\r\nS638egy0Y1GiZ561zqiiZ15x+hU1/R0iQGw=\r\n=F1a0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.0_1652325761079_0.608862016864544"},"_hasShrinkwrap":false},"0.3.2-alpha.1":{"name":"@aliretail/epoch-cli","version":"0.3.2-alpha.1","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.2-alpha.1","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/05/20/07/81a42b16-65f7-4aa5-b6e7-52538364cf2f.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.2-alpha.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Xu9Pxo9KijLJgtnPS6V5evyG8eRYs2R/cpgk2DUKTjBV7psVEEyyBfaz+YgB9VSfQtWYmNXP6wJuDic8rM6YFw==","shasum":"e35ed392a0d33baf86ce1b57db27f3b8dd496bb5","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.2-alpha.1.tgz","fileCount":152,"unpackedSize":264723,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCs3lU+ohuHJsMuIk9lv9JdCFjmR35VNiTcEqWz7Wi10wIgD2uW9+Fl4IDFE0mLpaTAFXXB1Zi9dRz3M1ba2zK2zxc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihz5QACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrBSg/9EGTdpkQh6M7dNOPUPc3366Vn81sYdJa+mXeDlTYkzI2K0udh\r\nF/mb5M/UXWzHKqebZFD4KSqA/t6ucA4/DCgbQpNnp9UywY/bTeZkcmgs7yPy\r\ntfI3L0aEM7kD470va2AIxumKzbkY8pTkf1ie3Socwg6hXbHIKe6HghEOSeGQ\r\nZLiWYqX0f4E2WibdCjLOgIptWzFIi7DaUJZFTYaKUHVjL8Bx8ECCOCCNnKOq\r\nTXLj2Y5s2h2JWN3dMOIxn4By4XUkmB07Kmg7lQpVICmE1Fu/yVkpX9x39fcC\r\nSQzKYVBOCpY5Es8uUWiItcGT/VS4mvqXn8c2rroVhKZwToil7/SakC4GZ8Vb\r\nx4QSv9pStvdmc5oJnAfMKeB1aJ/lPH8DogXXEgpEbaNoAP28ZWh1dlK/7gRv\r\nHnoDW/B6gMUK53ipnD5bpxJVc0WaeKMu/d9qBLjMm3iojCf8Pk31C5s7kLXq\r\nDiXONBabdmZaaijhSNLekiUSci7wQG+HoYKUrzBH5WDIMIZZ60Q/+cDBP3QR\r\nW4ekO7ba68MCeQxt3A6G2Bccsd3IDvFQlRs9NVQOKAhEbkfYxQpMZBSyUulL\r\ncSN3RgzTgJ0DeFnBm8gsxJKBMXDGIw+Iawj/HiS4NmBIrcWDTpblilx9hxUb\r\nMLERnKca8LvHZzXdSHU0IMkrUNxk5G/jyDU=\r\n=A7Jh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.2-alpha.1_1653030480660_0.4239816633556488"},"_hasShrinkwrap":false},"0.2.21-alpha.3":{"name":"@aliretail/epoch-cli","version":"0.2.21-alpha.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.2.21-alpha.3","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/06/07/05/4cb8fdb1-fae6-48f6-8e63-786778af977c.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.2.21-alpha.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-523lFwd9w8j4YuNyHLNhKFBLjIcztoxtDKxbtEqBx0RPNThJDCMZxiRLyGBOqnVFf4Qg/C9WK1mJMFxAhvx/gw==","shasum":"bfdef42d70013896d5a757804da102321ff07828","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.2.21-alpha.3.tgz","fileCount":150,"unpackedSize":252237,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEVf47GRPJWzNyO+n1aVXcMnwZ07iUuQVk9Q8MViQOIAiA+JX9cGsS7T/iUHXdaGE+c4WQM5Db3ZghIlmwrn/BiQA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinuXAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmosrg/9Ft4LZNhV8ez4JX9U6PTSqmz3ZFnYjPGvFhnE2y5fN2wLcWN+\r\nwAtljGeFnVDH7ZcIGBqoK5iwo5CpeAcxyeA3JHN2hglVJNCTX068mQ3e3MTL\r\n7e56bbTn0syokHnTaB6CEpC0rjxF+NQA7AikLj7slIK+++802Jih5QCWwTvb\r\nuIN7R0oyaNZ7V3R5wRJh+/SHUmJzAwmeo3WiWuzVB+WHfP38hAB5bG6DBSP0\r\n3UCPWazvt9CCsEbYexxlXHMr9OCHY/CoIvcyt9mgRpGF1khb9xKqlFs/mT7O\r\nwx3/FapNs4A4UMZmY00ryCeASr1E9WZt7Nr9vm//oa2nJeadnbsGdVOw1JE4\r\nEjAXctAN3QDgtuxE6yzL3IqOOXAY4V2/7OqUGw0TE+3DIczo3JVtAZhdwKy6\r\nlSubmHUq1Taa1owDp3rpNWRJRsdz7bJZkGptr59syzHm1eD4mgtCTPk2klHi\r\nm/q+6dD6Bn24a8GD9PEa654uvc0LNZn60vkJSHQY+5q0bN3kxAFg4dIdbnGi\r\nN/oJAt6ala8hYc5/FQqmWjmMthxMkcN9MeostUfqv5G6BW24sXmBLVGy8+3s\r\nn7oxiCSMIe/YbawC0cfEcnnYrqrMxtj0Ncc7WRbzG983MvD09PRwqCsj8eOS\r\nwWWnuh9zPW9I9xblQFW9uJ/vi662vtWNO70=\r\n=WHSO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.2.21-alpha.3_1654580672502_0.7949246958747831"},"_hasShrinkwrap":false},"0.3.2-alpha.2":{"name":"@aliretail/epoch-cli","version":"0.3.2-alpha.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.2-alpha.2","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/06/07/05/dddd8403-caa2-45bd-94ac-c374c1315552.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.2-alpha.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-vHJgSJ56NbzdkS7VOKjq1XTS3NU0PPon9ZNt6Y8oq0mJySPyflXKPZoaSCDviOy6aiFiQI1IdrsK9/e9OjN6zQ==","shasum":"7098c19037ad67b1d6908f8003be9f303ca5ee43","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.2-alpha.2.tgz","fileCount":152,"unpackedSize":264734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfeHFPsZ4fD+2jvX0NugDyUYqBHEEv1MrpzX62ATNFFAiA39lCqYECiumBIfknfV9ItWnGpVPhOLvKXiBQF1l3Olw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinuguACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoeag/+ICoBbCrpGrKe+dmw9y2omwyRC6xWGLTRmO9IDeC6YQ8T9aap\r\nDmBpswwJCuAnc4progeY18Wb1P0Ve4WiGO9FbNA4ZrBM8k4zdtQzHTWWxahv\r\n9xcIZmdLepCShP3W/pXX+a/Dnyy4Gu5lDE+BrGWhZcUkcKkNIwdYffd6AVHO\r\n4LZZK1nEgvZNMHd/b6ZK3g0jZIqUJAVREz7bLBqbjzZhHH080kQnWILKGYj9\r\nh7EW4V85xYD8wTeBfURcZeCMebHj7VKSK5Owi5mOY6UJNQap8pA7WxXcWhIu\r\nG+VtArY9ndRBYYpVxMsSCD9Px9m3/I1zVXZ8jMxe6NbHNU3BDuA8FyoG6/GF\r\nFo23GaePTtM/QKj6p5mrea9tQAnu5+Nyy0LM0rwdIwiXNbcLEk2xnzh4mY99\r\nTvlugLZFQR9ngBqtK8Ic/t4TW2utpTB5cWIvcPev+KldDPeQYPwHn8vDCzRw\r\n1HkTdy/nFS95E3g7GhHK/VQ9dBDEP8qvXG+L7A+u2KPGdOpPV6IZMERbRn2J\r\nL2eHtoLn/KNdT7gkbo5SWf4jJPie3Pv0jrm4jaP19ybY9JbeCRgS2PW4SNZ8\r\narbHOhSSFjtss9duiVT6rQ9YFm0vMPkoKJHQu/8mT23smL3hVNCVtAHzQNba\r\ns7o5+bjN1zvGkJd+DraiNAl2RZ6JuY9V6Oc=\r\n=GpB+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.2-alpha.2_1654581293902_0.28245295562898054"},"_hasShrinkwrap":false},"0.3.2-alpha.5":{"name":"@aliretail/epoch-cli","version":"0.3.2-alpha.5","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.2-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/06/27/12/03cf2b32-58dc-41a5-98ec-40ca24529a3f.tgz","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md","_id":"@aliretail/epoch-cli@0.3.2-alpha.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yKZGTjkUWmHHFmpkVp7QP14QkMKuW/otpBELSYchcxoZ/YVPV81iRJroswuuZK2uXhg/nruNdM5zWqlGsSM3AQ==","shasum":"7d1ba012e2021b0759313decd2c2b301f70592c0","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.2-alpha.5.tgz","fileCount":152,"unpackedSize":264731,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvVdUT+UTnBZHhS+MdS7n1y2iphWo1m8dcpm0DC1f4IAiEAgydJplv1N/7qpcM6D+6+dfd2vAJZqgS7NfZkwfDyDHw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuaauACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRhw/+NLQsEzdrpyemvE6E6aVfaoiQSog83lTmJCW+HSAzubr4aPZN\r\nm3uFfCFNKu9PKfhjXRVacbba7dHc1Jz28cDksuF23WSMAxKWYTAMwrgY1/yE\r\nz21/sraDrbFFUsn3JXQqQ/clUyjK8oW4NhixnWtKceVZv0wpqLa+zWfvbENh\r\nN3IC3/ZsGcl8wOtwIemfmR2C/hpxiPjoCkSgqWqlG6ZWngikS8UldXgntwBO\r\nGgH8qgYuKwISIY3ev1W8ep3GAmxtoOUqcNJ8Uf5TEYzhd6Ac/TvdEx03V3/z\r\nvqQ5y2SYnnDQmQmUwTmX1N8adDlAHj5t5ZznOoVIYbYohNnxo7vv5VB9Fmd+\r\nAvbU7BpOJzxrG/sIN0FPph/8yOL9SmdeH+lWIMfh0Utb63jJOtMCttPKq1Q9\r\no6IUjhJ+D7JMCaLrJXjN997OyPJ35y2OxcalvKVbQS0EJfQiKSZMmzOUGfQj\r\n4ieWiInTSLdrjoppmJvcMBz3kk5zYwwjRo03iX/ngatV3pzSD84lA3bw73fF\r\nnYjysMU1z4pRfLqf2w9FcR2ZqxTNIZpdHWJv4NWa/eCT0VMdrzQDHxpAtJmB\r\nDxdKi6DCPGMWGglOnGxGr0lS5sxltYjWhfxb/BOF5JKA66XZfgtS3nHnPVcH\r\nfkPzyVCxzkUum9F8RDNTBOeFG6TJ2d0zIss=\r\n=YDRG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.2-alpha.5_1656333998224_0.7251339994359103"},"_hasShrinkwrap":false},"0.3.2":{"name":"@aliretail/epoch-cli","version":"0.3.2","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.2-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/06/30/03/95f028f0-6c62-4024-b66d-699f904c14b5.tgz","_id":"@aliretail/epoch-cli@0.3.2","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iVZkPQ9o7X8v4vHkYpGlz22nbZf55xDfpUAdml5GN7Psl4NbKDzmwkFKKbp/7ZKbhWar9LjHDLXgXfRYUCGShQ==","shasum":"2701c7d822c36d7901d7f3b7bcc4128402f3e494","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.2.tgz","fileCount":152,"unpackedSize":264723,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZ6h3h147UTOAqNRIaSFLnUscUO/QzeKOEm6kaMA6CkAiADzwKWJV5m883DfKk0b7ob2fRfD/o2n2UIdKDXouWi1A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivRMgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreIg//dDdIqO7XuPjg+uXykgwNQQ0+q8DkxQtvoulb2yNwcA120LIn\r\nLBipb51WQIkwo9Fm0T+KqJw0yX45J6D/7NWF2sV/1UfLtU8J6V6ehcpM9ryU\r\nPlE9C0sJ7k++vjGZ8rqWfEmHm4FzhjdA8TasZLmQ2FjTpC58BeHsO9bQ0Z6F\r\nqWD5kxzaNOHBc5wKQ1wRB0RWIpXcLPC/mXzmWhPryUq4A+c7DDymFhgHsphH\r\njKvGJ+GVnaNQo1TDnRZWpIgKG2kFeSzMkstsAF51Drm6ZdBUOlG9Se8crm9w\r\nWxMSP0B3AfOc84+4o1IGTonaTNE1qsQYzweXXBdNSv2USQI8wkkARO2sTyYV\r\nqHLarRjxgTiQH137pBNACiPUcJ8ph+3tai7u+0S7h5lytWTFUS+WWguTLwtH\r\naaDAWXiB3ge0xonotBvItw5H1uoE4MwRegD13FVP0yC/9b8LFVMGkRJPa4sm\r\nBVj8hNRZTjzA3Ld/SC7WskLr18/uAQEKv1MPywQfgYinrXLxfkrPeeDOwU4G\r\nwVP9oa+x51ofin2eqMg1r0SjUhklYtgoAGg3hIBUyjM7M0CROaabeXU0PMsl\r\nf1OHt/YPCavByvKq/o6vq75yLk0ZNzsEwKL4hJamTbMs0E0DvOOSiBQZAo4F\r\nSaGXtsrEVuIS+BUuBelmAdyHw6sRorhAkiQ=\r\n=4VhP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.2_1656558368348_0.13890030821017496"},"_hasShrinkwrap":false},"0.3.3":{"name":"@aliretail/epoch-cli","version":"0.3.3","description":"The Development Environment For Epoch","bin":{"epoch":"bin/epoch.js"},"preferGlobal":true,"scripts":{"lint":"eslint '.'"},"keywords":["epoch"],"engines":{"node":">= 8.0.0"},"author":{"name":"aliretail"},"license":"ISC","dependencies":{"@alilc/lowcode-material-parser":"^1.0.1","@aliretail/epoch-cli-common":"^0.1.1","adm-zip":"^0.4.14","camelcase":"^5.3.1","chalk":"^3.0.0","columnify":"^1.5.4","commander":"^8.1.0","compressing":"^1.5.1","debug":"^4.1.1","decamelize":"^5.0.0","deepmerge":"^4.2.2","ejs":"^3.1.5","execa":"^3.4.0","fs-extra":"^8.1.0","ice-npm-utils":"^1.4.0","ini":"^1.3.5","inquirer":"^7.3.3","lodash":"^4.17.15","md5-node":"^1.0.1","moment":"^2.29.1","mz-modules":"^2.1.0","nodemon":"^2.0.2","open":"^7.0.0","ora":"^4.0.3","request-promise":"^4.2.5","rimraf":"^3.0.0","semver":"^6.3.0","stringify-object":"^3.3.0","ws":"^1.1.1"},"devDependencies":{"eslint":"^5.15.1","eslint-config-egg":"^7.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org"},"alphaVersion":"0.3.2-alpha.5","_resolved":"","_integrity":"","_from":"file:/tmp/egg-multipart-tmp/cloud-ide-portal/2022/08/03/03/8ed04969-34b1-4d7f-abd4-5100fdb36d6a.tgz","_id":"@aliretail/epoch-cli@0.3.3","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bgH8spiCv6R3VFOy7dxbriVLg3rcOTiWYRHs2hc7l2DvcLTjNZQOu/rJEgFL+Sj8qr3oKxUG95kQtqhQzgR11Q==","shasum":"e647ae981be452f2bf8cc18e1e184f7d07901051","tarball":"https://registry.npmjs.org/@aliretail/epoch-cli/-/epoch-cli-0.3.3.tgz","fileCount":152,"unpackedSize":266906,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGaVff7sd3Roml7hfjbQWYvmvPTxbmz3ymbOI9UfhX6EAiBeV1T5MGF24YA7IX3YcUf8SzG+5uJQbQOxTyjwLuAg2g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6e6sACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/9A/+PxTg0+IIC+xIO5cspIOA9S+6tIzWxWAD7zLS86H+Lc3XM7lF\r\n6bb8zBs7tdLpXV4UgLfYnuWT9/A89BlyhN23pGrNNBDApDFMH4hLpouNiWnC\r\nljuO9ztngd+0MKXlVZOW0fk0OP4S1PNj4o84EJ5ZzWD6jqDFXC7W3wZDhXbZ\r\n6eBkczfeS6RHSGVGKpJo1/dPAy68yRBtJwEBdF5D9vhU/PYwUuJO1FbqRbbB\r\n0GANMrLmB0mP87qvlu37WKKvc1NH68rcuij1qOwPmfRfESaKkZaicPgKjhx/\r\nm+8m3aAjFAcDEzjoX+2QHJaj3c3tzNJDRbYbgsHkfoi4KvPw+k8kDzlFrWD4\r\nAuKcV12n6mJGmU/QWx+cbsMgWgSJesB9s9/k2ESpTYQsOBeZb6Nj6zjOK2gx\r\njkTqRkcmkDuIU96RCHxisHN/w2+2AFpLjiXZA7kAzzkQ1clQ6RoQtiWTAXPI\r\ntADH7H6v1iUXeiV5NkKt1vmXn0X2AZSHwgcd5qx6An9rv4UsZhj/u2IyKb4H\r\nieBHD4z+A3fojL+sAZ/LJLuiuERw4r97LunfIGz5jAvrCQXKO2x7K7vwxUvD\r\n4pbLOZHp7ZcYrzI2xZCrMpI/abounlVBzd8rqgviDeTQqSzwXurg8Dy/dFbR\r\n0fpIQ7nqmfN8uX8E4cjdhvQsN4abN77+/5A=\r\n=38bo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/epoch-cli_0.3.3_1659498156115_0.807592352398341"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-13T03:19:27.402Z","0.1.0":"2021-05-13T03:19:27.621Z","modified":"2022-08-03T03:42:36.455Z","0.2.0-alpha.6":"2021-05-25T08:23:10.012Z","0.2.1":"2021-05-25T10:29:06.333Z","0.2.2-alpha.4":"2021-05-25T12:06:51.551Z","0.2.2":"2021-05-25T12:07:16.852Z","0.2.3":"2021-05-25T14:41:17.706Z","0.2.4":"2021-05-26T12:55:45.938Z","0.2.5-alpha.3":"2021-06-06T15:14:51.337Z","0.2.5-alpha.4":"2021-06-06T16:10:41.375Z","0.2.5-alpha.5":"2021-06-08T03:04:00.547Z","0.2.5-alpha.6":"2021-06-08T03:04:35.216Z","0.2.5-alpha.7":"2021-06-08T07:09:46.647Z","0.2.5-alpha.8":"2021-06-09T11:58:48.176Z","0.2.5-alpha.9":"2021-06-10T06:31:21.257Z","0.2.5-alpha.10":"2021-06-10T09:52:49.748Z","0.2.5-alpha.11":"2021-06-15T09:43:59.656Z","0.2.5":"2021-06-15T09:48:59.536Z","0.2.6-alpha.1":"2021-06-17T12:27:21.436Z","0.2.6-alpha.2":"2021-06-19T13:08:37.678Z","0.2.6-alpha.3":"2021-06-22T10:40:51.817Z","0.2.6-alpha.4":"2021-06-23T09:44:59.512Z","0.2.6-alpha.5":"2021-06-24T11:20:46.298Z","0.2.6-alpha.7":"2021-06-29T07:18:18.315Z","0.2.6-alpha.8":"2021-07-01T07:50:15.339Z","0.2.6-alpha.9":"2021-07-01T11:28:04.900Z","0.2.7-alpha.1":"2021-07-06T08:05:11.907Z","0.2.6":"2021-07-07T03:20:05.477Z","0.2.7-alpha.2":"2021-07-08T09:15:23.813Z","0.2.7":"2021-07-08T12:14:10.375Z","0.2.8-alpha.1":"2021-07-14T06:23:15.161Z","0.2.8-alpha.2":"2021-07-15T09:45:57.703Z","0.2.8":"2021-07-15T11:09:37.918Z","0.2.9-alpha.1":"2021-07-15T12:13:05.672Z","0.2.9":"2021-07-15T12:38:11.241Z","0.2.10-alpha.1":"2021-07-20T08:42:44.546Z","0.2.10-alpha.2":"2021-08-05T09:41:32.102Z","0.2.10":"2021-08-05T09:53:37.091Z","0.2.11-alpha.1":"2021-08-05T14:56:43.989Z","0.2.11-alpha.2":"2021-08-05T17:06:38.679Z","0.2.11-alpha.3":"2021-08-05T17:13:10.038Z","0.2.11-alpha.4":"2021-08-05T17:16:41.925Z","0.2.11":"2021-08-05T17:23:27.019Z","0.2.10-alpha.4":"2021-08-06T07:19:13.520Z","0.2.12-alpha.1":"2021-08-17T02:46:06.109Z","0.2.12":"2021-08-17T02:54:30.277Z","0.2.13-alpha.1":"2021-08-19T12:12:03.878Z","0.2.13":"2021-08-19T12:13:17.921Z","0.2.14":"2021-08-25T02:54:38.605Z","0.2.15":"2021-08-30T07:55:51.651Z","0.2.16-alpha.1":"2021-08-30T08:08:50.668Z","0.2.16-alpha.2":"2021-08-30T08:08:55.565Z","0.2.16-alpha.3":"2021-08-30T08:12:23.665Z","0.2.16":"2021-08-30T08:13:14.424Z","0.2.17-alpha.1":"2021-09-01T04:38:31.282Z","0.2.17":"2021-09-01T13:15:16.086Z","0.2.18-alpha.2":"2021-09-08T02:52:25.081Z","0.2.18-alpha.3":"2021-09-09T06:17:10.025Z","0.2.18-alpha.4":"2021-09-09T07:46:51.666Z","0.2.18-alpha.5":"2021-09-09T08:03:55.933Z","0.2.18-alpha.6":"2021-09-10T06:58:52.708Z","0.2.18-alpha.7":"2021-09-13T11:46:13.498Z","0.2.18":"2021-09-15T11:26:31.658Z","0.2.19-alpha.1":"2021-09-18T08:01:29.203Z","0.2.19":"2021-09-18T08:06:01.382Z","0.2.20-alpha.1":"2021-09-26T10:54:52.071Z","0.2.20-alpha.2":"2021-10-14T01:56:58.015Z","0.2.20-alpha.3":"2021-11-02T13:12:40.175Z","0.2.20-alpha.4":"2021-11-12T08:54:49.613Z","0.2.20-alpha.5":"2021-11-18T02:33:12.368Z","0.2.20":"2021-11-18T09:29:52.247Z","0.2.21-alpha.1":"2021-12-17T07:53:31.894Z","0.2.21-alpha.2":"2021-12-28T12:23:47.214Z","0.2.22-alpha.2":"2022-02-07T03:38:57.154Z","0.2.21":"2022-02-07T06:15:07.499Z","0.2.22-alpha.3":"2022-02-07T06:19:41.409Z","0.3.1-alpha.1":"2022-02-25T03:50:28.844Z","0.3.1-alpha.2":"2022-03-02T03:32:38.742Z","0.3.0-alpha.1":"2022-05-09T03:45:18.427Z","0.3.0":"2022-05-12T03:22:41.257Z","0.3.2-alpha.1":"2022-05-20T07:08:00.833Z","0.2.21-alpha.3":"2022-06-07T05:44:32.669Z","0.3.2-alpha.2":"2022-06-07T05:54:54.069Z","0.3.2-alpha.5":"2022-06-27T12:46:38.431Z","0.3.2":"2022-06-30T03:06:08.490Z","0.3.3":"2022-08-03T03:42:36.356Z"},"maintainers":[{"name":"aliretail","email":"dengce.dc@alibaba-inc.com"}],"description":"The Development Environment For Epoch","keywords":["epoch"],"author":{"name":"aliretail"},"license":"ISC","readme":"# 纪元命令行工具\n\n## 概述\n\n纪元是一套全栈的开发平台，@aliretail/epoch-cli 作为命令行工具提供了完整的前端研发链路，支持了源码页面仓库和低代码搭建仓库的开发、发布\n\n## 安装\n\n```\nnpm install @aliretail/epoch-cli -g\n```\n\n> 该命令行工具依赖 node v10+\n>\n\n## 配置\n\n### 基本配置\n\n使用命令行之前需要配置纪元的域名以及相应开发账号的 Access Key\n\n> 开发之前需要确认开发租户的域名，比如纪元自身的域名为：citrus.zacz.cn\n>\n\n首先获取租户的登录和开发权限，新建应用之后可以获得 `appCode`.\n\n然后在 安全信息管理页(<租户开发域名>/ui/epoch/customer/useraccesskeys) 新建 `Access Key ID` 和 `Access Key Secret`，**注意：Access Key Secret将不再显示，请拷贝下来小心保管**\n\n接着执行配置命令：\n\n```\nepoch configure\n```\n\n输入域名，获取的 key:\n\n```\n===================================\n            纪元配置项\n===================================\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n? Sandbox Host\n? Maven settings.xml $HOME/.m2/settings.xml\n```\n\n### 多用户配置\n\n命令行支持多用户配置：\n\n```\nepoch configure -p <profile>\n```\n\n此时会多一个「用户名」的配置：\n\n```\n===================================\n            纪元配置项\n===================================\n? 用户名 lattice\n? Domain Name citrus.zacz.cn\n? Support HTTPS No\n? Access Key Id <your access key id>\n? Access Key Secret <your access key secret>\n```\n\n配置完用户之后可以切换用户:\n\n```\nepoch configure -u\n```\n\n然后选择需要切换的用户:\n\n```\n===================================\n            纪元配置项\n===================================\n? 选择用户： (Use arrow keys)\n❯ master-dev\n  zacz\n  lattice-pre\n  lattice\n```\n## 初始化（epoch ui init）\n\n选择干净的工作目录，执行初始化命令：\n\n```\nepoch ui init\n```\n\n### 项目类型选择\n\n初始化之后会提示选择项目类型：\n\n```\n? 请选择纪元源码仓库开发类型： (Use arrow keys)\n❯ 页面\n  组件库\n```\n\n### 项目基本信息\n\n然后输入项目唯一编码（页面仓库输入对应纪元应用的appCode、组件库输入唯一编码以及名称）：\n\n```\n// 页面仓库\n? 输入纪元的 appCode\n// 组件库\n? 输入组件库的唯一编码\n? 输入组件库的名称\n```\n\n### 构建方式\n\n当纪元开发的环境在云上时会显示构建方式选择（弹内默认走def）：\n\n```\n? 检测到纪元的开发环境在阿里云，选择使用本地构建？ (Use arrow keys)\n  def构建\n❯ 本地构建\n```\n\n### 主干分支\n\n如果选择了def构建，还需要设置开发主干：\n\n```\n? 输入当前开发主干名 (master)\n```\n\n主干分支表示在构建完成之后集成到这个分支中，这里会有一些规则：\n\n- 发布分支发布之前需要拉取并主干分支，确保基线分支上的代码全部合并到了主干分支中\n- 发布分支发布之后需要合并到主干分支中，确保主干分支中包含了所有已发布的代码\n\n一般这个分支为 master 分支，只有在多主干开发的时候会设置成其他 trunk\n\n### 远程拉取\n\n在页面仓库设置完成之后会提示是否复制远程仓库：\n\n```\n? 是否从远程仓库复制 Yes\n? 待复制的远程仓库 git@github.com:group/project.git\n? 待复制的分支 (master)\n```\n\n可以从远程仓库拉取初始化的代码\n\n初始化之后的项目结构为：\n\n- 页面仓库\n\n```\n.\n├── README.md\n├── abc.json\n├── build.json\n├── index.json           // 提交到纪元的应用数据配置，一般不建议手动修改\n├── mock\n├── package.json\n├── plugins\n│   └── custom.js\n├── public\n│   ├── favicon.png\n│   ├── home.html\n│   └── index.html\n├── src\n│   ├── app.ts\n│   ├── components       // 组件代码\n│   ├── interface\n│   ├── locales\n│   ├── pages            // 页面代码\n│   └── utils\n└── tsconfig.json\n```\n\n- 组件库\n\n```\n.\n├── README.md\n├── build.json\n├── index.json   // 提交到纪元的组件库数据配置，一般不建议手动修改\n├── package.json\n├── src\n│   ├── components\n│   │   ├── SayHello\n│   │   │   ├── README.md  // 组件的Readme文档\n│   │   │   ├── demo\n│   │   │   │   └── usage.md  // 组件使用的demo实例\n│   │   │   ├── index.scss\n│   │   │   ├── index.tsx    // 组件代码\n│   │   │   ├── lowcode.md  // 在设计器中使用文档\n│   │   │   └── prototype\n│   │   │       ├── icon.svg\n│   │   │       └── index.ts  // 组件prototype代码\n│   │   ├── index.tsx    // 自动生成不要修改\n│   │   └── view.tsx    // 自动生成不要修改\n│   └── utils         //  一些通用工具\n│       ├── api\n│       │   └── index.ts\n│       ├── index.ts\n│       ├── tool\n│       │   └── index.ts\n│       └── ui\n│           ├── loading.ts\n│           └── toast.ts\n└── tsconfig.json\n```\n\n## 开发调试（epoch ui dev）\n\n初始化之后即可进行开发调试：\n\n```\nepoch ui dev\n```\n\n- 页面仓库\n\n启动之后访问 http://localhost:4000/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n> 当查询参数 _epoch_debug_=2 时，线上调试会在线上加载本地构建的代码\n> 本地起的服务是 https，需要手动通过浏览器的拦截\n \n- 组件仓库\n\n启动之后访问 http://localhost:3333/ 进行开发调试。\n \n> 开发构建使用了 build-scripts，可以在 build.json 中自定义配置\n \n## 添加页面/组件（epoch ui add）\n\n添加新的页面/组件:\n\n```\nepoch ui add\n```\n\n### 页面/组件基本信息\n\n```\n? 输入 页面（组件） code（大驼峰的形式，比如FormBasic） \n? 输入 页面（组件） 名称 \n```\n\n### 生成代码\n\n- 页面仓库\n\n添加之后会在  src/pages 下生成对应的页面代码，同时会在 index.json 中写入元数据：\n\n```\n{\n\n  \"app\": \"xuechentest\",\n  \"publish\": {\n    \"type\": \"native\"   // 构建方式\n  },\n  \"trunk\": \"master\",   // 开发主干\n  \"appType\": \"page\",\n  \"pages\": {\n    \"TableList\": {\n      \"code\": \"table_list\",\n      \"name\": \"列表\",\n      \"js\": []\n    },\n    \"EditForm\": {\n      \"code\": \"edit_form\",\n      \"name\": \"编辑\",\n      \"js\": []\n    },\n    \"BasicDetail\": {\n      \"code\": \"basic_detail\",\n      \"name\": \"详情\",\n      \"js\": []\n    },\n    \"NewForm\": {\n      \"code\": \"new_form\",\n      \"name\": \"新增\",\n      \"js\": []\n    }\n  }\n}\n```\n\n其中 name 和 js 可以修改， js 中可以加入页面依赖的资源。\n\n- 组件仓库\n\n添加之后会在  src/componens 下生成对应的组件代码，同时会在 index.json 中写入元数据：\n\n```\n{\n  \"code\": \"code\",\n  \"appType\": \"component\",\n  \"name\": \"name\",\n  \"publish\": {\n    \"type\": \"native\"    // 构建方式\n  },\n  \"trunk\": \"master\",    // 开发主干\n  \"js\": [],\n  \"css\": [],\n  \"componentList\": [\n    {\n      \"componentCode\": \"SayHello\",\n      \"componentName\": \"say-hello\"\n    },\n    {\n      \"componentCode\": \"F111\",\n      \"componentName\": \"f\"\n    }\n  ]\n}\n```\n## 发布（epoch ui publish）\n\n```\nepoch ui publish\n```\n\n开发完成之后需要发布，资源发布做日常和正式的隔离。\n\n```\n? 应用appCode即将发布到环境 环境地址 (Y/n)\n? 组件库 组件库Code 即将发布到环境 环境地址 (Y/n)\n```\n\n然后选择发布的资源类型：\n\n```\n请选择需要发布前端资源的类型\n发布日常（daily）资源\n❯发布线上（prod）资源\n```\n\n选择之后会自动进行构建\n>其中如果是本地构建，会自动重新安装依赖（可以添加参数-s或者--skip-install跳过），等待构建成功上传资源成功，整个流程就结束\n\n## 部署（epoch ui deploy）\n\n在 def构建 的时候需要额外做资源部署：\n\n```\nepoch ui deploy\n```\n\n然后选择部署的资源类型：\n\n```\n请选择需要部署前端资源的类型\n部署日常（daily）资源\n❯部署线上（prod）资源\n```\n","readmeFilename":"README.md"}