{"_id":"@51npm/freedom-cli","_rev":"1-7f8366fa8bfbc60b0d417f1da55b0a7a","name":"@51npm/freedom-cli","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@51npm/freedom-cli","version":"1.0.0","description":"51talk freedom design team 前端综合解决方案脚手架","bin":{"fm":"./bin/fm.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["javascript","commander","freedom","frontend","tools"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/51talk-design/freedom-cli.git"},"author":{"name":"shangshanruoshui"},"maintainers":[{"name":"shangshanruoshui","email":"gxgongxueyuan123@163.com"}],"contributors":[{"name":"shangshanruoshui","email":"gxgongxueyuan123@163.com"}],"dependencies":{"chalk":"^2.1.0","cnpm":"^6.0.0","co":"^4.6.0","co-fs":"^1.2.0","co-mkdirp":"^0.1.0","colors":"^1.3.2","commander":"^2.11.0","config":"^1.26.2","debug":"^3.1.0","decompress":"^4.2.0","decompress-targz":"^4.1.1","download":"^7.1.0","figlet":"^1.2.0","form-data":"^2.3.1","freedom-util-shell":"^1.0.7","fs-extra":"^4.0.2","git-clone":"^0.1.0","globby":"^6.1.0","iconv-lite":"^0.4.19","inquirer":"^3.0.6","js-yaml":"^3.13.1","json2yaml":"^1.1.0","merge":"^1.2.0","mkdirp":"^0.5.1","node-fetch":"^1.7.3","ping":"^0.2.2","uuid":"^3.1.0","yamljs":"^0.3.0"},"gitHead":"28a1d5a857f088167c91c86f95986ae1ca5e049a","bugs":{"url":"https://github.com/51talk-design/freedom-cli/issues"},"homepage":"https://github.com/51talk-design/freedom-cli#readme","_id":"@51npm/freedom-cli@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"shangshanruoshui","email":"gxgongxueyuan123@163.com"},"dist":{"integrity":"sha512-aDT7tiykOfBlRxFJHUkwZlo/K7dYh7+5t0fkb9lBEalfGwLM54laq23E3Y/oVO9fwlrcsJFkuJTzcrZNR4o/7Q==","shasum":"396dff4371ca4314716f4229d263fe50cc80fc69","tarball":"https://registry.npmjs.org/@51npm/freedom-cli/-/freedom-cli-1.0.0.tgz","fileCount":27,"unpackedSize":67165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6JdICRA9TVsSAnZWagAANucQAKRyN3kNev1c3KfKsD2z\nlMv/IMuWspL2UWVgL4trQIsyhQ6nknmny287JRn5BTKboe5mSNsJePHiOuan\nCEy9fn2e1WXap0S7Fu/l8sEP6Fs75lejJRicmmad+YQkc7rQfPiKXTMldUY9\nPtf9kdoMTrbjtt2QUpC8LgNLP9qZEwTnpJMeYo8kFnTmW/Klh0b/j+4jCRPu\n6KMUYVyPqYOzYyhyT3C/zNWndlFxTrpFfQ6Q4kLSbsrdX9aGFUIqOqiBPYGk\nXIkStjerka6fRrk9X9DY6qmVHw4MpAed2gdzQyeGTVZQAFL+KkEG/wYZ8KaV\nXR0tw5qIz3lhgcKxALyoLbi+PytWq3ECl42Za2bP7lfnBrPn7FcBMvWW0RVP\nmR5WEPFrG2jWzW95XNEgs9kkn9a6ga0Q5kw94oZvFjLR4/s16gixTSA3IaV8\ncA8LwedzGZtfSj1bEpfx8J46gXyhdsM8+Y42f0qInK8elqnH6px4u8WbjIe2\nGfC7NkGhXpTOZ2pGJfZgtcQ6esvpnjZUFW8fV3g4bUOdWHeh0153smynqMvp\nXDhZ+OBbglPh/k+Nnx7/TkfVok4ZTCmb+mOeP2QFBVgToRQA0ZYrXKIjGs53\n753f+MuTZjAv1At7t7p4wnzlot3SMtXop26tgGOojZ4SX5J9iup+gX/oXMQA\n1jaw\r\n=50jh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmNnGwWwSyyUfEsp+AWlKOW7pSAcWxKZ41otVI78LbtgIhALD6FKFws0A/64OgDqjXlBjs1C5ZGnh2gRNldfnvprY4"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/freedom-cli_1.0.0_1592301383992_0.6629748367053891"},"_hasShrinkwrap":false}},"time":{"created":"2020-06-16T09:56:23.730Z","1.0.0":"2020-06-16T09:56:24.110Z","modified":"2022-04-04T10:47:55.276Z"},"maintainers":[{"name":"shangshanruoshui","email":"gxgongxueyuan123@163.com"}],"description":"51talk freedom design team 前端综合解决方案脚手架","homepage":"https://github.com/51talk-design/freedom-cli#readme","keywords":["javascript","commander","freedom","frontend","tools"],"repository":{"type":"git","url":"git+https://github.com/51talk-design/freedom-cli.git"},"contributors":[{"name":"shangshanruoshui","email":"gxgongxueyuan123@163.com"}],"author":{"name":"shangshanruoshui"},"bugs":{"url":"https://github.com/51talk-design/freedom-cli/issues"},"license":"MIT","readme":"# 文档\n\n- [freedom-cli简介](#freedom-cli简介)\n  * [特点](##特点)\n- [使用说明](#使用说明)\n  * [安装](##安装)\n  * [远程仓储配置](##远程仓储配置)\n  * [常用命令](##常用命令)\n- [freedom.yml配置说明](#freedom.yml配置说明)\n- [工具远程配置说明](#工具远程配置说明)\n- [freedom cli配套模板](#freedom-cli配套模板)\n- [freedom cli配套中间件](#freedom-cli配套中间件)\n  * [中间件开发说明](##中间件开发说明)\n- [发布日志](#发布日志)\n\n## freedom-cli简介\n\nfreedom-cli是前端开发人员用于构建以及工程化的一个脚手架工具。\n\n它通过流程配置的方式(**每个项目存在的.freedom/freedom.yml文件**)，把前端开发的整个流程分解为一个一个单一功能组件，然后通过配置赋予开发人员自己想要的构建流程，简化并统一了开发人员日常构建与开发相关的工作，同时每个常用功能组件(**middleware**)可单独维护，单独使用。\n\n![工具预览](https://cdn.51talk.com/apollo/images/48d76a06b5d1b83eb6355c971951f4b5.jpg)\n\n### 特点\n\n- 扩展性强，配置灵活\n- 将常用的功能组件，比如：webpack构建、mock、publish等封装成一个个独立的middleware，易于维护与复用。\n- 提供统一的几个命令，即可完成从开发、调试、检查、发布等的流程，且可通过配置来自由控制。\n- 使用gitlab管理相关配置，以及私服cnpm管理中间件。\n- freedom使用可插拔式的设计(**化零为整，化整为零**)，可自由选择中间件，使得团队统一管理前端所有项目，并且又不失灵活性。\n\n## 使用说明\n\n### 安装\n\n`cnpm install -g @51npm/freedom-cli`\n\n###远程仓储配置\n\nfreedom-cli 相关配置存储于远程仓储github/gitlab、npm，工具依赖于以下配置信息\n\n| 配置名称   | 配置说明                                                     |\n| ---------- | ------------------------------------------------------------ |\n| repository | git仓储，默认值为：github，若是公司git仓库，需要设置为gitlab |\n| reposGroup | git仓储项目组，工具以来的所有配置项目、工程模板均位于此项目组下<br/>默认值为：https://github.com/51talk-design |\n| project    | 工具在git上的配置项目名，默认值为：freedom-cli-config        |\n| registry   | npm/cnpm镜像地址，默认值为:https://registry.npm.taobao.org   |\n| command    | 工具依赖的包管理工具，默认为cnpm                             |\n\n**若需要更改这几项配置的，可执行以下命令进行修改:**\n\n```\nfm config set registry=https://registry.npmjs.org\nfm config set repository=gitlab\nfm config set reposGroup=https://github.com/51talk-design\nfm config set project=freedom-cli-config\nfm config set command=npm\n```\n\n### 常用命令\n\n- fm login                      登录,若将整个方案迁移到公司gitlab时使用，具体迁移方案请查阅......\n- fm init -p fe-demo    项目初始化\n- fm dev                        开发\n- fm mock                     启动mock服务\n- fm test                        启动eslint语法校验以及测试\n- fm serve                     对build后的文件，提供预览服务。\n- fm publish                  项目资源发布\n- fm clean                      清除freedom cli本地所有的cache记录，若远程配置有变更时，可执行**fm clean**来清除本地cache重新更新\n- fm middleware          show工具支持的中间件列表信息\n- fm show                      show工具支持的工程模板列表信息\n- fm update                   更新远程配置 \n\n## freedom.yml配置说明\n\n**freedom.yml**为管控工具流程配置文件，配置的是开发的几个阶段(**比如：dev、build、serve、publish**)，对应使用的运行中间件。\n\n开发者可按照中间件、**freedom.yml**配置中间件的约束，替换自己的开发的中间件。\n\n- **freedom.yml**对于中间件配置的参数约定\n\n  | 参数名称 | 参数说明                                                     |\n  | -------- | ------------------------------------------------------------ |\n  | name     | 中间件的名称，可为空                                         |\n  | script   | 中间件要执行的脚本，比如：cnpm install                       |\n  | version  | 中间件的版本                                                 |\n  | before   | 中间件是否再执行之前才进行安装(**工具在执行命令的时候就会进行安装中间件**)，默认为false，可空 |\n  | args     | 传递给中间件的参数，object类型，即：中间件设定的参数形式必须为object |\n\n- **freedom.yml**标准的流程配置如下：\n\n```yaml\ndev:\n  - name:\n    script:\n      - cnpm install\n  - name: '@51npm/freedom-middleware-mock2easy'\n    version: \n    before: \n    args:\n      port: 8080\n  - name: '@51npm/freedom-middleware-webpack4'\n    version: \n    before: \n    args:\n      port: 3333\n      env: dev\n      publicPath: //localhost:3333\n      build:  \n      proxy:\n        context:\n          - /wap\n          - /api\n        options:\n          target: http://localhost:8080\nbuild:\n  - name: \n    script: \n      - cnpm install\n  - name: '@51npm/freedom-middleware-webpack4'\n    version: \n    before: \n    args:\n      projectID: ${projectID}\n      env: prod\n      publicPath: //freedom.demo.com/apollo/${projectName}/\n      build: build/apollo/${projectName}/\n      bundleAnalyzerReportPort: \n      specialVersion: \nserve:\n  - name: \n    script:\n      - fm build\n  - name: '@51npm/freedom-middleware-mock2easy'\n    version: \n    before: \n    args:\n      port: 8080\n  - name: '@51npm/freedom-middleware-serve'\n    version: 1.0.10\n    before: \n    args:\n      port: 8888\n      build: build\n      proxy:\n        context:\n          - /api\n        options:\n          target: http://localhost:8080\npublish:\n  - name: '@51npm/freedom-middleware-publish'\n    version: \n    before: \n    args:\n      projectID: ${projectID}\n      path: build\n```\n\n## 工具远程配置说明\n\nfreedom cli远程配置，是为了让工具具备更好的扩展性，[详情请点击](https://github.com/51talk-design/freedom-cli-config)\n\n- freedom.yml — freedom cli 默认流程配置文件(**项目中可自行修改**)\n- freedom-corepkg.yml — 工程核心npm包配置文件\n- middleware.yml — freedom cli 支持的中间件列表配置\n- template.yml — freedom cli 支持的模板配置文件\n\n## freedom cli配套模板\n\n| 模板名称                     | 模板描述                                           |\n| ---------------------------- | -------------------------------------------------- |\n| freedom-template-tsKoa       | 基于TypeScript+Koa开发的node服务端项目工程模板     |\n| freedom-template-tsExpress   | 基于TypeScript+Express开发的node服务端项目工程模板 |\n| freedom-template-react       | 基于React框架的移动端多页面工程模板                |\n| freedom-template-mobileVue   | 基于Vue框架的移动端多页面工程模板                  |\n| freedom-template-zeptoMobile | zepto移动端多页面工程模板                          |\n\n**备注:**开发者可自行定制工程模板，让团队使用，定制好模板后，需要在远程配置**template.yml**该模板信息([工具远程配置说明](#工具远程配置说明))\n\n本地执行命令**fm clean**，清除cache后，可正常选择定制的工程模板\n\n## freedom cli配套中间件\n\n| 中间件名称                   | 中间件描述                                     |\n| ---------------------------- | ---------------------------------------------- |\n| freedom-middleware-webpack4  | webpack4用于前端开发环境的搭建，前端项目的构建 |\n| freedom-middleware-mock2easy | 用于管理后端数据接口，提供mock数据             |\n| freedom-middleware-serve     | 提供本地前端项目预览环境中间件                 |\n| freedom-middleware-makefile  | 创建标准项目工程开发文件中间件                 |\n| freedom-middleware-eslint    | 源码规范校验中间件                             |\n| freedom-middleware-webpack2  | webpack2用于前端开发环境的搭建，前端项目的构建 |\n| freedom-middleware-tstypedi  | 提供ts开发的前端项目，依赖注入的文件扫描能力   |\n| freedom-middleware-ossupload | oss文件上传                                    |\n\n**注意：**工具配套的中间件名称，工具会对某些中间件的功能有特殊处理，所以想要替换中间件的时候，npm包名称不要跟配套中间件名称冲突，配套中间件在npm仓储中包的命名格式为 : **@51npm/freedom-middleware-xx**\n\n### 中间件开发说明\n\n中间件为通过module.exports 导出的一个异步函数，返回一个boolean值，约束如下：\n\n```js\nmodule.exports = async function(params) {\n  // todo some thing\n  return true;\n};\n```\n\n**备注:** 传递给中间件的参数(**params**)，必须以**object**形式存在\n\n```js\n{\n  env:\"prod\",\n  build:\"/build\"  \n}\n```\n\n开发一个中间件，在远程配置文件**middleware.yml**增加上([工具远程配置说明](#工具远程配置说明))，本地执行命令**fm clean**，清除cache，后执行命令**fm mw**进行查看工具支持的中间件\n\n## 发布日志\n\n| 发布时间   | 发布版本 | 功能描述 |\n| ---------- | -------- | -------- |\n| 2020-06-16 | 1.0.0    | 工具上线 |\n\n","readmeFilename":"README.md"}