{"_id":"@areslabs/alita","_rev":"98-630b0cda046f63acbdb2689077e7c0d6","name":"@areslabs/alita","dist-tags":{"latest":"2.6.4","next":"1.0.1","beta":"2.1.0-beta.3","lgsd":"1.2.3-lgsd.1","alpha":"2.3.1-alpha.2"},"versions":{"1.0.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","miniprogram","redux"],"version":"1.0.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./doc","doc:serve":"gitbook serve ./doc"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-syntax-class-properties":"^7.0.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-syntax-optional-chaining":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^23.4.2","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^23.4.2"},"jest":{"transform":{}},"_id":"@areslabs/alita@1.0.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-mD09EOyoB0NvBgzi71xGY5wTy2JErQ9hm3IQeW3SjaGCtxi8C2BTPJNmdrp0pNkCTfYX5YjV9w2Gc8a6or/h1g==","shasum":"1c6df08218bef77bf71c2ae06b38188459d589f0","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.0.0.tgz","fileCount":39,"unpackedSize":136375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2jUfCRA9TVsSAnZWagAAHEQP/ReIlJNHWeHMT+uPEdNN\nYCxc+Yi+PURLcnnjajTcbrzbcJTsTbhokqvt5Ul6qBPXBhkq/lj3mJ5OZRpF\n6HBU3MLPZ0t3YqpXKsVLRVii7jgv4fR0OujnXeMZrqMofmFi8UWv//+gWRjE\nN0hM+wJ+ONGJsrSXYwv6Fe1PQ2Yf1z5RLCn7nR0S7EwG3YxpboKhZKgv/8tX\nRmXT/JTdXhnXMmp+a5+j88PZzctvSG+TWguffR3O8STyW/3YszoWptC5L6r2\nijkZHC4Lwxp4GV/yo+V/7Zzdawk5QgvU8l1fu6YAY4eCYfE0v7v+k6/660Kw\nBRxXHU90NZUpjBNzrd4lCgkIJJiiwRoI4k9QhOrlBDIyhnB9LVO4gd/ZOzBK\nw7F21QPisf3gn4i6XhsdueqeigDCnmngRSVPJn2g8YHaBR6Y1cqXJ3kfO0Ri\nM7xLHEQpcGUf6qze/7ViaNZFhpqJjbfU+acs2lnRYH0fJA4V0STXjpP1oQ6u\ncCjJtFI8SoO5GewwJ5obmEMBVWWijFTlWs4CqNHXLt6LWdIbjCk1/CidjbzX\nVhWaoTesjXM8450PolUy8Ewzh+exKTiwyE5+KzMl0JVeyTLpvGnSMUNpxJyO\ngpHO1K1++pnUerbc4otDV3I+iM/3kqw2Xx/8mRxDXvIDBpOtSAk9vf/WIQB+\nXkNN\r\n=iNQ4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwxJD2XdDLtBnXLg1xVrs3UQfbapV5ElQziqo/Hog6EAiBZSwg574p61TumgPvML8wpYzfzY/F9xQHB/EdP4YxR4A=="}]},"maintainers":[{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"jameshen","email":"jameshen@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.0.0_1557804318598_0.85231740063871"},"_hasShrinkwrap":false},"1.0.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.0.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-syntax-class-properties":"^7.0.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-syntax-optional-chaining":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^23.4.2","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^23.4.2"},"jest":{"transform":{}},"gitHead":"f85d660eb17bdb9d0c1302a394dbe5e5b9eaa6e2","_id":"@areslabs/alita@1.0.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-m/bVXZTatk6N3kDbXpCnsEbQA1eVFM0yBgZ+hylz2vVndY4buiX3dnQJ9FlVwppYmIrka3YdOSIqFe1QYxluBQ==","shasum":"058d0dce51b46608bb2f39229f119b18047be0ae","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.0.1.tgz","fileCount":38,"unpackedSize":132469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc6h8eCRA9TVsSAnZWagAAA6sP/1oLjJI0hU05y7VnpfAj\nMg9DW5V/pTWHVuo/U77yaxTCU5tQ/FEWz66q3rcXE9C6qLLdnPTh09ps45YB\nvXq1JJnlopEnJZdrneGkDUBxmZjUCtvqMIXYX4fGv36wp9mZaDVB0GukN2Je\nssAn1gRcVGMRKhA4sU6+DY4IaPdQSwA9G9byZkPgSgtbc2Bmosl6WWe8FHDI\njJSj/FJo6M7NKpBbIbStvmGorSXnNFkAiQ5IPGtDDVeRR2xa9YHihho48NFH\nCDMe/29KknIhxYVKcPBOGb+ehqsR1XQLQpKbZ9UeFbjSmGYbzpEB/MAHxOXD\nA0a+KwMIo7o1yyaAP2rPndrGkA61jMv0PwNEXWB1QUVLx7y6oImchfgz59T8\ntI4nI0/tBJq5TtRp0RVVU/rvQYDW58SZqZY3bZOzBblCob15q4wtTcb+Otl+\nTTF12ZS0cNLYNdOAg/nwfSKpFCPbcS3yg6ZjXQanjX0uGHpKD43jUVOM3Y/7\nZtSMAkZGY9xtagLo5IbmRC3r4DzjF/j/cDoSPunTN4JgkjfqO9xcz8hnWM/O\n8PNcG93cbYkIgVvPwlUgc1OOVFYvc5MDWQxAEB0Z/VMcEABXLQspLf6C/T3a\nR9G4RzwEUxNguMseEGezBOQ5dkmYw2CxkFvaR/1uK3DGcXSEeqYNCx2SmV+0\nM8nM\r\n=dSV0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsJF2k87ZEuULkrbsXRmy03M2VHCtSwC8xS7V3IQunvgIhAJHONk4nhZDMk1RxO/5qMqT3oo/6J3TfDSZMUZ2phnC3"}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.0.1_1558847262251_0.6799825860175368"},"_hasShrinkwrap":false},"1.0.2-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.0.2-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-syntax-class-properties":"^7.0.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-syntax-optional-chaining":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* 动画\n* 支持Redux\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"08071d23083ee7eb0e17583f858d130481dab0bd","_id":"@areslabs/alita@1.0.2-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-LkmG9VDBr0fFFgmIFYcF8Er+lSqP52fCL6KFJQxnLqN4bbu4NPcsVh9tYS8F81Z7+6iojqWtFZRz3L7x28oKcQ==","shasum":"83aa9945a9609c3291e059c4d88262d5115d4b91","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.0.2-beta.1.tgz","fileCount":39,"unpackedSize":137776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEEfgCRA9TVsSAnZWagAATnwQAJc/1z71gAjgA16I8e0Q\nn9OmQoiB+3bXW7VTlmJBfw4Y93iOSSjZG4k2vu2EXaET14OElaw83TSBpN7R\nKYF0VJ0eszE4Euwv/y0PcLw65YjNWfG3125+WZOYobfcGCNQJ8oHgA7/Cesw\nB9js7JvYw+NQHjWDMciqXejtfuhHdc7eOnhAbLh2VUUtLntgF3y0UZhSOFZ2\ntYJmNJN1iUm+OUA1W3C3LyCVRfgXfWH67zP5BUzGFUXCcVroEAk0IMq/Cqmo\nmv1Wi0uspPYn3a2+cKL5pEDeZF2ljYdobrT6Lx+OrXN6i+OKJHTJQbbiSRzY\n0DmsN//mM8gyOz4277t0KkDTAzr/ImuwvOh5lpHhc6KOOyu8yZBCBS/tNMQ5\nWBK27hUCST1CskQQsKiWKSq351iXfP+hem1EfnYlfsAJB36w9CLl5xj4BroV\nD18fUEog22opMgeFVv2tMzXjvRPnv81DrkUtEUQqGPH/EmCOuPdaBQPG2DQ8\n5CWZERhdG9l/QRQS/5qJvWafDvtLsa82APsGemo75xBmf+/5mnuewlNbVJ9c\nRo8IGIXOMjnkmWaeIoq7XZhxMJ0ADDYHfBleHOUXtew4kVUNH/WZZ5DicfxF\n6bafY9534LLaB6Vm+JLbDyiBmCpR2wYjo+ctkbagSDRiLtTqb5eRaFhVjIKn\n+NGF\r\n=ApDC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHZkoq5sEzSwqm5ugiM5uUVVe4S9Zkq0qNuN0ALKwqFAiBmHa1O9LDZpzjT7cGT+Ryq5CKRsgqRWCzIlsoWcx5TZA=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.0.2-beta.1_1561348064088_0.8551391833198925"},"_hasShrinkwrap":false},"1.0.2-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.0.2-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* 动画\n* 支持Redux\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"48d417a44eb5a4a41323d708c29d4fadf133d1ad","_id":"@areslabs/alita@1.0.2-beta.2","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-qGjrMd8ESsWxKyTDRjDs30aggXtOaa8fPSZWqX9PVPivlqhS4EHJcE8ha/D7ePDpLB8Zj0glklJZ3TFeJ8PsrQ==","shasum":"d3c3d700c396853649887f5cde1dac9af9d328c7","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.0.2-beta.2.tgz","fileCount":46,"unpackedSize":151768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIqlnCRA9TVsSAnZWagAAJkQP/A+AiCFL0nG0ft8IJvUB\nMXXZN+rJJa96PjwG7v90yp9UgCKUQkl23Jik+pc/AkABSM7q7z3yXYo/FMP8\n5ZO9TpQgDu3mbdum2JAUlZgF28CbfaEdCGn+cQfzcWQBwnSdWNDnCXKUksl1\ngo282e5cYuQZmGfPxEnzsHGDxiGfD82oFTCALXpFemRD6nnFFagnCKidRsxY\nbLDQCShmBR66G0DOcZrZnvckHPtOMvOdCDWeKEpDjE/xJuSJEWhai0342h3T\nS7DMcmGHSWrxjMUAmgcQEE/ZD+w0ULnBugUNxgcHoVr1DdzWQlXFKZHSnm+H\nkdfzf1TVzBFu+HDqajHCsDoqvwyKWjZd9J5DmaVZeR911lDV/yZ4wlRPtbV1\nWiaYuIolZHIgnh495mYh9DUwbywnWww0o77Vh2wDoWifH5YPSy72Fz+9pZDm\nUhKWWeBoGzfPvFBtdjuvHpKVHuaU3s8Ajl6WkF8NFKSqlKyoWmxZjnmXYn+q\nuC9mw0HLTCylIovzQ7CliZtG1EJsCXkarAMWqYMjLeIiPd6nA3gmuojIX7CN\nsOUMyjEc48xkRmrOcBHnxxSp0Uz1XFCwxc8QwMr72Fl94UAogX1b1KAVqi4e\nvWkpc3NxGPobgcIN4r1Viy3XRGpRdrbUpinu8eyUg7OgArZHvZl4FzNJsWx4\nb4h1\r\n=qqRn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4kvdLWkLCRk7u0EPyChH3ecZmBDtaiuVsH6diTbw4lAiBNAcVV3UU6jDJmxDTxElxWYSe184A00cFM5jIfiaPGRw=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.0.2-beta.2_1562552678681_0.6418969512022803"},"_hasShrinkwrap":false},"1.1.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.1.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"5d88a71950a7b5286e306cfecc15d00a9b642eb3","_id":"@areslabs/alita@1.1.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-+/AtDJ7bM0HnMV1TevZ3I5rQEZEcNEr2Y/rkWtH+R9JDEj9zfEcM76fE79ydNcYZc3kKTrzV6Q84ZP6sWjRIOA==","shasum":"81e3afd6689fb1d8a09ad2cb21a6b1c92e09310f","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.1.0.tgz","fileCount":46,"unpackedSize":152756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIu3nCRA9TVsSAnZWagAAe6UQAILHlW5yDargmzRYL/+y\n8nhWmrd7ujnsF2HflHDhXqA/PmM+9kcC0RYNqNl4jiHgHaRtFHIOK0W0YSa6\nhN2p0YtSaEwRkyv77RSRLeG2RGv9E9gFWJMBHN8CjuInOKF9fiZOAX2m3z7D\nSa6ltr/h0Mv7SHvSdmTPva1hYwvLEoL7+G7mZABGfcx++O/ZfAKK0549Cztb\n1MfLKY4mCobDI0ul5Qh5AMjB5OdF+OUlJrouk/jBJbUDhLS/ldl34paVopXM\neAPyqu7uJqnYp3gkqP6gzWvTkB1Zt1qtaTYda3mUF9cMOkFxU3nYf4sRnxjY\nQSSgWRVpsJWl4oNSRghob3qqHHVXDHZQHHmZmekg242SFfmczyBydijgfnr1\n/WhNMOT7ga/O98y1bn0LoVEFmcOqXVzpdJ/dV4+ZJN8PWHG6qha1S7XSeMPu\nJiCJ0prJe71A6YduY8Tqrjt+dBsDoY/pAveRRusot8uwVYNjuIw0Sk5UsQxh\n4J77skhXjSmVs+ZqU8d6QoF+diQbVFz2E0SRItx9SRPUdRzxCCri0fPWahJa\nyB5vWWOyrDlTIdTPljhibC5tW6wwA1Ber4bL7xFamxyyFpbCcV/4l/fZGvHD\nTGpdF78JgUHTFCH/P3yu4IRDrY57nltmfGfwaofp7oqbbXLi+9UBWcywaHL+\ntRHc\r\n=hVTo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJO3lNWZgzyOoKBvz5Is7/xtQUsa+B6x6+AHOtaNaKKAiA0TcFEFXylER1uuGg6skPH6VIxoYwZHtGWern2d7YNMw=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.1.0_1562570214053_0.42628250314945904"},"_hasShrinkwrap":false},"1.1.1-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.1.1-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"ac0cfcbadebd0bf9f3543043585b7688f21799e6","_id":"@areslabs/alita@1.1.1-beta.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-hmU72AEW/Mq3dioRy/GfHfYkfegm9qI/CqTYpkozElOrVovw9E5LydYo7wdwNa3erLW/YCrhJrsEKsx029sHJw==","shasum":"ae0dcd132a1e3950e8ec12a6bbbdc1007e9b6f58","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.1.1-beta.0.tgz","fileCount":46,"unpackedSize":158142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ9u5CRA9TVsSAnZWagAASk0P/3v0qJnYq1oafGaR1mFo\nH/8r0Bz40umA/apxyBIrgrtoi3M0+oXkI1Te2xCZhyUQrKnyghcmb1c2AOxT\n+Ov4gNOfZvbT3c3/vip4gYsKuGtZ1MzBgzoV8qaoVqSkEOkqpBJx/MwglD2x\nQsCYRnQmBQS+Y2JfY9QvcsKCh26q/CxFB2ewiPpPsOvq8Wpp8vSZifROrzN4\nDUjxXe9j4DRyq+25ctiqFDtKrIQ6mnmR5tyjvjXB+rsA8z31kEF7QCjPnO/1\nye2ticik25UQqkFr2eSBN8+85dVijrQLU58ywKEG0Tfbal+UR7BNytugGa+j\niVUdOrJpgfL52IpACbqKgNMfYOvPZ0cANLN89THz1zuT2IlECJZKLeo8YsCr\nidyoaA/HkIcX/FHOIJETSXn3JNdYHJBDP/reuVxeAt9Glg0zvWHRsR+1NwVK\nDHTbANj8pAOF5ZFN8Mn5+jShdPp8KGZrTVQZVpWLoMiz+0Q66Ep6gGFc+hde\nB6wiB0IpFAr98js6SZEy9y3dJLzP5jaUBTu2QmDGPok94kjNgxoQcETwlqda\n6/VttCn/HfSC6Pvz7rNhedD/MsLSPN7I9NJrIkIHXyMeI41xGmdEjoyCD/vO\nFwE3O05qtJwI5yWDOLYHBz0kU+H5ffqgA5mxkGePVl8NuxxRXd2x9oeSLpmb\npcdK\r\n=4OPd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH584FHvP4NjuX4ppVXl/WAUDdfF9bhKMKzn7lZaqj//AiBrUm7uP+ImcOPRZ3mTZEO9CfMFjNm+vb2YgXQ4QUX7EA=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.1.1-beta.0_1562893240415_0.9069333492563982"},"_hasShrinkwrap":false},"1.1.1-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.1.1-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"fbef61dd49d050ca6071a86a5de716db9eb72179","_id":"@areslabs/alita@1.1.1-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-k9xDgthQo++P7vxsQiNAcBSPvCfJW+Ed7z1gzVTIZ1czgz7CC37eOUuW5G0bbNLjUQV27Hg8PyvUH7neF+Xn2g==","shasum":"fa0f163d2fcb646c2440786dc549450668b962f4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.1.1-beta.1.tgz","fileCount":46,"unpackedSize":159080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ+liCRA9TVsSAnZWagAApOoP/1digqHOr0NINZGaYRSA\nmGWXiY36cTjNT7BHZTs3RLlR9dncIapiuJOg9Rs8sN1J1ZO0EgHHH/7nPSV4\nn6gN6T34w+exWbQzwpTVFzG0DK+QMSOEtR/wgRWQ0jXXPLkWfBbpAavFRCB3\n/LtA1hcsq4BQFwwIGiai6o9HpRlenocDbrnla4rvGEvLSa+UcHvaCMfnBwjs\n7KG2kGKgPQnWeTj+A2iepb1/Yqg/FciHejDJvLzrqh2lbkwEJaixQj9qPGmL\norDLfnPol1Y5yEZdBbY0iO4qG43A7ePEY91RtCuWPmydEPXojttgofUR45YH\nEzTUkjIOK8P+nl8Q7oE6QWFr6eWn/h0vHkoMqW9B5nctuIAEoSlr8voEv+vP\n4lD26KrUcDZiganc0sfMqgmUL4TqMXyurUq8SemRO60YEHt+RhCbZp3bqrKu\n7CNdBMan+4vKGvBguK+nWMNyJFtdDySeYmueEWrWb5wQ4fl9I9LahY7+XXMI\nMDmQUTLNy+R07/eEWpeBQnqIriffnlk0T1xgzrOSM1jqIg69H4SSJwV84DL3\n12AH5h04pEP2zPgX4iZx4LuDHHXWXDWU1PE1hG0acdN8J1BLjpGvmKuLoGIB\nYseWQiCG0o23MzX1WYRAWJ2x6lyRVaGIKLR5YFMEMM3lZK1MvBLdfye7l9lw\nPhIY\r\n=I+Nt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENOw3scWd8ujdmouDaH8BT2VqVFjwm10s9JvDPvmYmJAiALkh17nN2OW9upi35cC/BLxoe3wBrzMpncNDsK++HXmQ=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.1.1-beta.1_1562896737327_0.2030304218494432"},"_hasShrinkwrap":false},"1.1.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.1.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"6ff2c3ae61e530f1b858a9af54264210e4ee691e","_id":"@areslabs/alita@1.1.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-Z5Nz3LvygIBecJL6+CCrNwlibn6w7CzJzYROqd3j4P6HNcaWnkHcw4roAT8bSEfd7j1ympvRQ4ACTRhnxUneJg==","shasum":"f3d4d211546dec5763c453755ac676a60b669fca","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.1.1.tgz","fileCount":46,"unpackedSize":159183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLnnCCRA9TVsSAnZWagAAAMoP/19EJbNgOle5OVtVC9iS\n6X3KjZlkK9zg2PHzvnPn8h08EfCuHl+6ESJtZT3FMvHM9ylzdvWqAj7cvHf6\nzR28OnIWPSOPCf6qT8K34V6HziKHKTQfB5kVam2Bkx0vLt6QHxGjqQmGF1KU\nOIJU10NfM77/N9rxGpBdOXY3m2Dfr8gtO4w7KrT5vNp58N4U35FrjEDCvcdF\nTWwHv1jNdWURFI8ZmTwiUEfY2Zadzf9vtSYW7gvZ9wxtTJ4dZlHK6Wtwi/Ur\nyiiGOgsMI86j3jSnV2Q8K3gBLaxW65d2Srf2WWKRxCwg6Z3ti7bW7xqepMay\n7ShQ6+rRhMmUsscCwhFDaDtphnZl8kswq0x/Rgzt9pgI55hSu+fPRzp6DHUW\nFrerK7sWoVGcNQXwIe7g8/MA7daDemBT5xwNQtid9xYJVfwNZMv6ciLXy8St\ngDQWMl0g+zA3+YFYAEmsT4unqMt3Tln9KoIJvYOktNASY5OM22dzdotbRdh5\newWnMdsDT3STkAeWzw00YDwW63yACGP6uUolqxAqyPJj0kLetOmujlpk95sU\nazlf4dD6TORD8En+GrFTGgSeLLxLpNIatKiz+bszaH/jVq2+ls7N3RO73F3P\nDuYav4ED09FqEYUCNpW/83VWFlibi5CrKwYUc7N4uYF31r9oyF0iVfyv5vI0\nvs4K\r\n=urDa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDNAr2UwB9veNtxkS5EG8jzsZmjFz7S3WE2yTpmuwE8+AiBeExVodiHOQbt8wF8C/M9n2fnFbaeeJzomxTrLviz0Ag=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.1.1_1563326913035_0.7351312442851741"},"_hasShrinkwrap":false},"1.2.0-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"b12d7ec371bb38e3fb4742f1eff5637b39299a1b","_id":"@areslabs/alita@1.2.0-beta.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-3rkHo3Hj6UT1SBrpZUwTYXN6BcyTGLFac8CoDs+kGT00HrNPadc/7FrhpixGlqpAryZcMuuy8XbQCO1BjVfxeg==","shasum":"9a0b2d9b88d019a89b9cbdef38cc943aacf82709","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.0.tgz","fileCount":46,"unpackedSize":160001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdL8+rCRA9TVsSAnZWagAA4kgP/1LJMYGYy0Hwb2OvfDm1\nqyBC4lmRY/PfmuHUckuUuzCrr3eieC2HYU67dZdWLH7zqfdF1aCcIOV9X2FT\n/fK39c/iFfPpIKJR6OX9dB5L/65PQ0XcpX2kyRGXSd8HeGtrzi6MYDc5ya9Z\n/IegzjZm5ZG/sXjyVyk+VLoqFmR9+pFWZcs98XUszF7sSXfA5hh7qoiIbNj8\nQr1BK0Y5CwH9CPQhXoAkk9aiM3dzmllz8gyb67XvwMQn0XvYioZ24asZ5HVD\nquslKBcfk+6S1Mn2oZbukMj4QiZ4SlLz/WItRuPO4RtXpT6yarMGO9ykAOSw\n3apLUs+H9MkZmqHzz1Rpu0KGY397Lv9RU/DWy5GXC/CfnbMZV8zKCSVPMMdI\n95dkygYP3COfmCe/HYgzl/BJ20KDOZFHd5UUom/j9IzRvImMSG7XugoaFCGk\nFB+wu+aptQJ34Pgi2J9S/wXYTrzcLeRb5RAkLT9iY30kzNPoJTHvzbESeLTw\nG6ii1hu7Jyr6Vy1G+3MUIEH6gD8w2LeDRju5hACOszCJ7t71PSpC8UfFXHGw\nUNaRbwUeWP1T42sZo6WUxYpocdKsItmIox8/XxATCVb/Gre9QtYYyvupfxiz\nPQi51HfvTloJ1XAsd8JeVo6wamiFIcfEQbEasOO2VsLkvSw/R8i9bE54W4Vf\nqY5M\r\n=bukZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNuV6qT1ze6n4klihQHh+/lU/vVzSQ8UKYsNbr2sLAagIgJi5PAKmUbxJyRElMc0ftkG1lmpiXkPs6d82QquIp4P0="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.0_1563414442622_0.022227053705828226"},"_hasShrinkwrap":false},"1.2.0-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"3f5d8f1c0ed8acd16a9cca5d9ac0558139fd6dfd","_id":"@areslabs/alita@1.2.0-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-R3Ljuh9fgq69BEbG6aWNNrFGS4XifEvmPStn2CNhMsI6MjBwFBIQDRXYfgvv1xV3neoNK5iw6XfB3BDTANQx9A==","shasum":"4cb4166f25f84b06474e29cedfb6b87ea3b10eed","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.1.tgz","fileCount":50,"unpackedSize":168641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNnA+CRA9TVsSAnZWagAAXrQP/1dYnlr1ls4YkCEXmjRv\n2c4MoFrJNMrYFjs2qMc1+lXE0x0M+pEB+y1viv1jkZUBcb7uyj2/oPKohBfw\n001g+0GbUUYKnkoD5Tn9qh2u5Yfa6dyBpOFO+rmJjanuZHEQ7DogggtAsSSK\n6PmjOsO4QMqCjoDtx+1Pss+o+IC9hgUd1J0WQYlUBcjuwLD+kAn3PYy7L7+l\nAvIYtEIYTJjUQ98Ax09vk5yhQMW+olYKlq9InIvUAHFkkR+eao7r1XznO971\nudloHD5WCSnozUfcfIP4UvnzJ5npSayH8dJ4RapHtUDw3gKf+gpsbBsf2M4O\nrWEqmtOdGyHZPU9k4ujgvtkbgfua2vUAu1NnSXlttDct+/H+uZX3KzDcjypv\nczrGW3b7rq+nilP1HmJaX22hZaB9GrazMiMjKliw3a5gVyoxpzbKfcpR8CKA\nRRKTaSD5HGcdlHotay2ALwv63nRA9ROXPk8MWMNTqg/U3EyAwsNMU//fZkI7\n5SX/UTnQnuR34jRbGStGXKCqZScuGlKpZ5svrTqYbN+1UxmWqBkCz+ZS4ZgM\nwZRn5eVpeWLGHmOzx/Ig272nvBRxMCP/BjHKgKFQoL+cl7J5T/d41KmXNa9k\nzmoj9hbBYMC8NUhrKiQmDrb8nPIBueS+Ob9ymhggtMt8eowF7ZiTcmxNZ1B0\n7YkE\r\n=h5kL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDqep1M/ozlZwpdgdlZfNIPCzWIUhpPBLla3M0GzrVi6AiEAo1vN/T50nGLqQVbW9v2V/Uge6FVVdBwW4MPiwZnUxsY="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.1_1563848765687_0.08218104203692977"},"_hasShrinkwrap":false},"1.2.0-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"a0589ef7b451d26d7b25751ae13aa7d1a52f0ed0","_id":"@areslabs/alita@1.2.0-beta.2","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-q2xDwLajimtkXsnXCu9MLY+zpDU1J6HSnk4E5hd085pUKEv0OU0mSbGmBDrn/2ahLRjV9Kjw1pvKc+cEHjh5Mg==","shasum":"943ed18d6d5ac1b77e71b09f570d5e67715d4ec0","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.2.tgz","fileCount":50,"unpackedSize":167511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNqVaCRA9TVsSAnZWagAAJT8P/RyDiL2d+v+P2x+e4FE7\ntWzLLl9m2siDnpxRabSwBtiYOeO/z3FfKmfMK/ecuzT1DekLk7fqMFVw8rZ3\nm7QfkR9f34kYa9EyXMDDqURm+IRdCKXjue6/IVewjoLyccKluX9venGAEFe8\nnsQoGuOpPZEkKEt4WPjgM/LGIb4WOdifErru227K0x7eZAqVBMffGXy5MY0I\nbAW8FETWNWeqHBz2DB0ymh5j1Q22sYwGCvcxDmKJMxw2MxPbHnfU5oIYWtWQ\nIiSWSvPMxdmOS4yzrB6sOEDbRwSntiHlaDTcR3Jipl/IeOAmmyUmnW2dON76\nmTNbwCzew9wGipqIi/hzpvTIaYvB3jZq+bkPiPeu05/Cdseu1iSFaCjhFWOK\nJdBIs/zDkVhJGb9HI6tQvNj00DJITcBA/WlyYUcSSew1Iw2gIcdcWuo2ma0e\ndNofUNaUupdRLdSV1owD7gzaQs6Qwp/8sFO3xbu7KvqtdoyI1yKsP8wCAKgC\nI2ZLRajUrJkE/89RPCJtxDgFteHrbvo1ZnnuxzlPF0YbOZiu0sQ58NRLqj+P\nhWGuTsdzf9eFpQMs9mbUiS1rVAi9bML7mkz7z28ZtcczGuya0TQvl79AVPzA\nP8AMU/nORvuTqoAR3uyt9VQhxHtD55UrkzjgiLIuxPU1aFW7oxKIujBJMoDC\nzIjq\r\n=DTmk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGANhdD8HX/aKjYuPM22CobUUmXiFOirBG+KVWkAhVCWAiAlpk2xumglVsmTZ0AMBgaBqhiKvw59VepccjgSiDCuXw=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.2_1563862361974_0.15682276895928227"},"_hasShrinkwrap":false},"1.2.0-beta.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"a703228f0a67cdef3b92fe6e8ca9d387119143b6","_id":"@areslabs/alita@1.2.0-beta.3","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-kY1oy5VDtYrzRXs+DrDvquNiu94+lAVTT0acOMfgdlMWkxFhgug5ngwNrumlOu7L9OTOpdQ1tH9eBROBgMWQKw==","shasum":"e4422d66b567a2ffb9acf84d88c9cccab457abb8","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.3.tgz","fileCount":50,"unpackedSize":168149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN8B8CRA9TVsSAnZWagAAsJIP/Ate1ZEeAnB4GpbG7F1J\n0yaAO/IvXWCLvN0NDkJzWoAzjuWtuVAkTZzjG9kog2yKyjLlqIoToz+dUPj8\ngSO7+zahIUjj6x5SPFyPHSaNvn+UCFta5rO8NRvTfSK7PvIzJ5aQnnuBZrBI\nRElLBxgfyx4+rWgJxeFJQk1I0CfkPgVpkC5OS8zlVBKkQ6I6n6WvLIRn13Ah\nZxwLAr7vrBKoXNfz/g1Oa1e9LxwWcnT+UjQCM8Grwf47Lw8hQYGXQuWHb8ZD\n/7hKEiYiafHYedAdTR+EQlpZAFWoFnQ5uSjWLyZ64ns4iQhqp7NfeF7StcdY\nsaCpE8/YdgS94IM2h9SDPgZEJ4PTIoNJhzHd5MF5kLlnRoUJy37LXwOEy3vO\n7bD9NiSpDTJv8Mi5TXfJMtJuDRqH99XI+KizY3KIzYFqPQos1jHQp3JCS/ft\n5zsHWx0PmKPZxv0g0PS6qxhByhLN2XsInp1AakC6t5BaUAS0lrDYYd4rkWHS\nOsSbKxltMUkhKSuOybPzhSKdSv92U1OzvRnKNuHS0iUinicp0gaFBJdzmvnC\nf+igaDxgdRtXoqaaeYos+ivTuMc2sP6Q5x9OkaaASboebq/VOA09BFEr72UD\n3iLAyc3Hr3GbMGw7+2qzdyg4KcVh2nYqZ7vai7uLXSNm+rqeLLO6OLAoU4m+\nzDKD\r\n=NaEL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQx9vse9euvMv55B0qRgzcxPFosFMLFLwKfSLOjhx0gAIgY7mwbDCfWGas+g8DIFCRiAGzE0WdHMXLkffK/iPxTvU="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.3_1563934843997_0.5495608889387831"},"_hasShrinkwrap":false},"1.2.0-beta.5":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.5","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"a703228f0a67cdef3b92fe6e8ca9d387119143b6","_id":"@areslabs/alita@1.2.0-beta.5","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-9cimtTwZ+YjnTal7I4HuEg2wlm7Fz/iL9nIuPW7vcM2TSPqXj0BR2z2j+Nb49I/XxUQlqMHgaRaILwawUsEN3A==","shasum":"4a2fc8f1bde5c2c0f75d0e9754d791400d63ff09","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.5.tgz","fileCount":50,"unpackedSize":167776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN/mVCRA9TVsSAnZWagAAfecP/0p0B529aj0nMmUIWePz\nnYGxAN879Hzq+3K4rehLIebLbOnVy1cBbWUr6joQE1f4DVpgJDO98NwU2wXv\nk6XF1MmMB9ut+bHtI88bmI6MDYZ6TKl6IHa76SkfUc9Hbmyo4eHBsS0rFx6J\nUF5A2I8mjr0UDAP2PRhs6PMLaDAg4LlCeQnHx2asD8W516t7NIpjqRus9QuF\nw4w12Tan6KX+FEIA+GcswAkZkpHFxfmAiX864lctUHHDkXOjuaut4jqTwItL\nt/H5NIiVFdRFp7aNifMbx/wZudoNTDmYROXD4fNTIwQuh9Q3A+cGCfQUy6d4\nURq/IVj8iOLBpHY9xBFjbOv+17/egbnzWFnCc7vOHNY4ZpQYvKRBl7nHJ+Lt\nbYRXom2PXsyapnWwps4Gv+UETzXdoibpaXpG9wnMJz07Aba3fb6crU/V4UTz\nshP5pB8yZQXVZSxcY32GYN1uJv9vO0PNsntVldBz0h9cPxEIKSfIwjVT4DW4\n/kpsIh7a2Orz4w/CWhX2avnBrP4M5wVY4jAyHVdet9NWvHCWFdNRQqdpAJOy\neicBpn7cyWYyMqzjkEDZrHE/alH4FxFkcDh1pD9YBdu3Zq/Jh9xAA9adMhRG\nqPryVuh4Cc1gMBqUXbX2Yosbrqvh/3mocswGWPpwa7pCH4m/w0bGLGnaTayS\nafoJ\r\n=B3Qv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA69S+LzmfRlJEDaD1hlJOOvuz4Mps72QkUijXCDCVibAiBQJf3Vhgt+Z247EMkNwRIfBdeEruUX/LZXVHhYlraN+Q=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.5_1563949460845_0.4572228252668211"},"_hasShrinkwrap":false},"1.2.0-beta.6":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.6","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"e2b88cee11c45f83d03f839345653573505852f1","_id":"@areslabs/alita@1.2.0-beta.6","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-8u1fpAuXE1gt1teOL6EF/EFoNPGq7xNvrOBKMcRiaQfacWW7QpkH5m0oqGFzDr1a8KJ7n/anPuGJ5v/BuINc6Q==","shasum":"6d383fd83e719a67ca73b325c24061c6ce5bd830","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.6.tgz","fileCount":50,"unpackedSize":167922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOVPcCRA9TVsSAnZWagAAASsQAIF1tpwqKqA1aqRupGz5\nW8tbXpyQCgeUNRM6kETzSU8eI4wnMIV+2lJtW5oDZenzkN85j0ISGkWkM3ol\nR/SD7RpVrfHwsEa/k/2fRATj0QAl4Llb4DILZBbkIwnmnxjbB8qKoHh/mxIB\n9yfgej69pBhii8V1EKMB4klwoocUmZVw8eFjXAD+CKldoizEm/MJuMuTMn6z\nRrhhN9zI9ddrC4HwOHbTZplVhPFStMfHVigbyiIfJ8kf6BMwXu+puoEC5+um\njd9m3KwYjrs7el1/u1jAELYi8aSNgN24Pt3HS6sTch7oYEufgXCE3VKLlBJS\nlV712qtXE7s3TLSl2ys6vZNZKE0lhFSnTxqaJbev6cfU3KewyBW/NSVZvvbS\nmwxSWS8a+VSIHyCweF4eTxT7i8uipBsIO2AJAJpSN6pAAfYLdlOQiL66LO6y\nsPITUDzDCIEeQ+2vaWcBP/13Ou3w4mYcvxe87ANAt7W9eU75Xpovcs+BJn+w\nphfTynCIOWwvf2tMrXwHXYwwDhRgTvHkBA0D5QEfFENS6C551n+7rifq4nrz\n152j4thSxvPa6fEAA3gp1IEoREVHWTq6KOQ+dVnZTsrd5xHivSQ2Vb0M0DyB\nrwztL9DiBDooPpkQ6CFhE2ket5nr2OooJ4PVBkAH9CFT0/DZaaCOknCTMJqw\nDHs7\r\n=osXM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ26t7c+/Sl25RcQW5f8X4ATBN1PD7YUeUYNw1kwYiwAIhALj0PmS6u9Xb+3cZLn69SlX6SxDJRShxaGwgPb3RXVaw"}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.6_1564038107596_0.35391188463413115"},"_hasShrinkwrap":false},"1.2.0-beta.7":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.7","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"5570b9027b30c8b6f11f1689a4552e7f1f703c81","readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","_id":"@areslabs/alita@1.2.0-beta.7","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-uEC4k/YLC5QxHdNHqZsqL/0viq+VDED6V+z8anmyMq308FjZ6snvgl7QB5a/QR8JUm7ZOBraFlpYmuTEGl0AAg==","shasum":"ea81e628a681e1894818cd2d72edbe226dcb0e43","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.7.tgz","fileCount":50,"unpackedSize":167514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdP7JnCRA9TVsSAnZWagAAtoMP/0TC6kAVsX4dsIDaOliw\nwa5IyyslhsUYyDtWHlAjb7DzwyP7DlRlKHUvc+eGyJlwFFw6i51CMz/4Od0T\nr0Rg8YofP+jprYEe9H/S0sOTmkl1W+cqk31fDowfwOKCGcUVJHMvkzRqIvkv\nDLeh+5x1pLKBWyLiXWlmnGaBZ0hIAxF2nBdZerK59Ka8IbUwC/tKjcqVGkp0\nH2iWCGChHVWnR7Ya6h60w502HVPXRJXQDeau5q5Wq5UE3cbSGN1M74wNtoF9\nkR3wzjcROkr52YWLwCkcZLPfWyu/+N7HhEQey1vDtHCqttLuSBXGFZgLWiey\n9k16xGKeQxS625Si7qnNdO42DQbqsIZ4dwQOQNch16Mcixdv2U9gHiClG6GP\nOsliUEvQrF0LBTd4Qs+zPialv3KUFlmE2b7QtxzGoXAWETaXFYOgI9dDttFw\nebPVj7uqvsxlf2XPBEq7df19ft5z8CS5EMoGVwNGpLi1K/dBLVqr+bV9EK1T\nixxz6gPzqQ8Vqp1U1Q+E8Izg60DGuzQioi/8pVeXYN2XYoHkJE1O38bVteQe\nG6XmU65LB4LkqFvYlYkyZtQO9XujUy58OD4euxbPxkpeA2GICEiwo6ssPAMF\nk/7m4dzUAel2YlTQ/Q2yR+wGMhBwwQUiEUHRdCQ5nkyI5aGOPZD0Xa2Jf6nA\ntKmz\r\n=T73V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDEzzT3Leb7jrtRxfYRhCignTE4omInidmjstCYD+k/BAiEAykU3eFp7wjtQt/uEwRdZ3oRtrF7y7Utnw3ssdn7gWt4="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.7_1564455526980_0.8458777680781209"},"_hasShrinkwrap":false},"1.2.0-beta.8":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.8","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"6ab28b67588b15fd8dd63c5a86753e97eec52ec0","_id":"@areslabs/alita@1.2.0-beta.8","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-R4dxVckHSxJ9nq6AdTnqyNuYTtoVD+YHk8XhvOnSZCsb/uj4sa3Kt+Q4yFy21o/+7USdE4Z99fsJQ8KaHJBceQ==","shasum":"02aab36b4d8008d73e6301fb0a222a9e6e9e2c5e","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.8.tgz","fileCount":50,"unpackedSize":167922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQQ96CRA9TVsSAnZWagAAkecP/1+Qk+CdiGiCi7wkWn+u\nTyy98pWPph+cEyYeCctRe14temvOFlOyjsmfLpzQje8hwQNrZHpTSc5Qh49j\nvHU994ofWWs9vE1ASEoZndVuGap1nk2ZNGArA8bet1QYlGZ0r+anxzKFsiEa\nv9xnU/zsdmKowHbOGRW2CwXra8ngIbkcH63KtWARYJgbNZ0NqInANPGCtKr4\ni9eOcw+oYFcO/QpEovLd0OTi7Qm54Viinlx8jXMgIQO1nkegRNHVNni/sVnW\npM3UCner6dNrBCqgmqjebnWqJy4AzmDDLo/PVvPd9e1LPkALBmVfHtt2CBh3\nkYcebgvu+mBCSrxj4aDJqDTDZ9Nxsd/Fz/vPdpDYQ3hBmK9yPHR2x/mcmA4W\nEu0QaXOw+/rMjRLjU70c2K+rQHGiSh7REIJ1aeySwfIYbzVTmBsGnKh3d02O\nZ5QiP1DeJzuyQL5mnCC4//Z/CcPjkMOtoQydMzoxlqEGfwPH9iGUzqtUJHTc\nexH2s5Y//nDVXIIgbb9rU3m4Hu1mZ84m4+6DZIv3ovJn9PuiZQui8C2f2eMa\nNUkvPMjUYWTUys7mF9cKgrc7uoEFJZkPSgXD3guTogxfKAzCNTHyhzdNEl+D\nxX04Ykd8PuUadDCVxRIOjTUNJzsXUc2mdzEZXDcZ7LqWC0JW7N/ELLIYpx0Z\nu2Oy\r\n=6BdP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHYBOtO2Dm2QLOkl6/e3cXK9uUOoseeebSR9TBw1nxTAiAXzmSgeM51gh/eba5gDDXphsbVGqnQ75mG6AEzHny16Q=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.8_1564544889546_0.6526514376358348"},"_hasShrinkwrap":false},"1.2.0-beta.9":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.9","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"055f20a08fbabfaf76a585fd1a5f473d784a271a","_id":"@areslabs/alita@1.2.0-beta.9","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-AiED3vfuMN+g9L2VVKNYLaQyoqznUOVPGDKt5F9L/Wzci/aS0CKxu9fmiuVyIjkn3av2AIxgsoLgSYtcfhtQQA==","shasum":"00c93a576941735712b97c52db849c5e5f9c9fc7","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.9.tgz","fileCount":50,"unpackedSize":167329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQjrpCRA9TVsSAnZWagAAzhgP/2uwGwMY4Z0IeicN5ZRH\nn8ACngq9gU7RTA/hN9vH1RegYcjEjGkr+/osQ+Y0575zVzWD8na3IzYhCS68\nmEtFf9i6dzPx0aVYNFqigCJUEcnHwB/b6QlI3XCbZz7Pch0T2ANoNyMZNTg5\nxPckirR7mdsaA0EzIfnks4txpCPn9InbISIqw9HYxjg96jM+letyFqcXBuTz\nF0jzPFKw7mVJ/8YYINVNMSW9BnNeco7CABO5pVeoj/cqXNa9G/o6O7vA+n6U\nVZ1DRmnkk2g4hjIUVhqeFoqZRr+6Mr5A5F4rbL/J+ys9z8/7CVaRRlLAq5xQ\nEQGDq6fh7BcONderGDx6temHaroXsNOjwFlVCNmOS/tcYK2LS6LfJVacJI8w\nTt2NZXzQ813dRAdZI2hePMk5hM3PUZjvEyLC2RNk7yLEjoRzLuFph4V7FQ85\n3wCV3ruTExVevPwFHZgh7emAHGZXjXsIFHh81bqQa8/J3MckrRFhDCAaljXL\nCH1PPu0jaabxtHZCf9IbqbTPJ9/KPqdcCU5cCVR37jzvlQQxBLykFTU+dSd7\nfGWR8VCJS5KYWNhMWuT8YAV96oMvQvaMfnGWfrIapfq5ZB1e7gsDuFq25LbD\n8cl1Y+gDhgl1rEqtBB5jkYFkl1dssWdaD482m5ogU0i6viZZoZzbhIWCr6F2\nez2z\r\n=1C6E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH8dXDNJxA0gfV470WpVRlv4TzV+2FndUs3tuSwVV5gwAiEAv45E71qMJ5RXMT7VXzzC6+f0L6WUISp+/XkXh0l+O6E="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.9_1564621545091_0.10564515277032704"},"_hasShrinkwrap":false},"1.2.0-beta.10":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.10","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"ddb38b92210df2a64b1bd60e06b73b3ed2080dc6","_id":"@areslabs/alita@1.2.0-beta.10","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-1zVv+dpQVAonKoFWBCutIpLzXkRHZPAgxV0xxp7qe0LR95Qt0X2iUOLRhCUTADbX8XHrvf2RWATo729KaUIszg==","shasum":"5d17432c1e1ad453234b40031a0bd3563127db42","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.10.tgz","fileCount":50,"unpackedSize":167456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQ9RhCRA9TVsSAnZWagAAa9QP/3wltWVJZuv5qEuj9/Wu\n8NNLyaLrm7icjUnZwlWaj25YY9BGZbct1FWKkPf/i67uoodgC88/+6uVlXsE\nl0wdSt8uDy00OY6ATo7Pp685zJdDKTAQh1V+aEYyO4hpdMlWAH7EiBb9/SPG\nHc2tTQW2yzbOrSBw+m6TJ5rlnccXuxAv9lw92mqZgCiPFbfQw83D4IvQ32JW\nm4RjWAUuP+pBUc7ZmZbqPIpOxzmaIhEcvEjbO0lyipRJumOMUMDj8u1oiD4g\n+NbZ1MwJnpK6j9dzHoZUZRLv0ZBvhLoBsCtUKD315wPoXsUgZbEkMLG6g44J\nxTaWVnSPF5KHmbhzMUFIO8RJ1vRuihNtafNK2ChAmdT9S5btvMu+O9IbMHDU\nEJ4qHLHi8bYpF8RXfOt6PzxWXc/epFAiNfX3aL9d3UUuPsa/QQY4d3lSfTxU\n1HKL21/8386GIybZ3Zv6lfp8ed2JGD5dJDHBjh2tIY8z85gY2nX/XclvbHa9\nWgHAnmy5LX2LBdJplZnAC8rp7XT73IB7NdhznxRbGDKqoitdALkhrBalnGRf\n6CBE/cZTxFS0byV/jzoC+kmG1kRVDWT4vzaoT2+0CKiBCOVMu1l93wgjBtUq\nc+1UVGNU1c4Th+OXmFuCHF0mMJtHyIP+/RU5f3TuJHnxb3JyOYkaK0H8YneR\naFZi\r\n=J/Iv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwFYxhr5FT5VAcEUWsf6YDW+mMhok21rvzKCbI0qVDOAiEAr8xh2Qoz0zgOGLXs2KYnboaLz+FV/CyMHc3gQNZYQ1o="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.10_1564726368490_0.057082728606047795"},"_hasShrinkwrap":false},"1.2.0-beta.11":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.11","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"9cfaca6d9ba2d4033cbd863f51c68765eeaaf56d","_id":"@areslabs/alita@1.2.0-beta.11","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-JvAGiY7R1/ftmLeLZ7WIIxsRKLpzq5KVYzFCBLw2m5GMwo1RlbGlEMxN/7Ac1Yc5jS+St8wbXcD5aKAMR1sNew==","shasum":"3b96733a5019f0a58213075c38836e5aedbfb673","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.11.tgz","fileCount":50,"unpackedSize":167330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRS59CRA9TVsSAnZWagAAlJAP/3+7gSXxt4M+G8EN5/Mb\nsHSUn5ipteNHuzsJddfboPFarLphng2hLtaorWQvanfyKEAjR08+1aZ/ahVq\njLZAmqKoVGBzx6SHnnu+Jp+pAOe7UAZcN1sCyZKsv53Vam19ZHs+hwoz/L/i\navth3I7/UKxty8f1YVF3k2WwL4VcmsNdOtQwhQ7obw6ugzqJrHW0X/sJVXnl\nOhZHDIqmuhg+WqbbNJs0Bx80EUQL3Uxna5WKjFmkr1abZO7UNBCk3NByEnaV\nilzX+7bvoPj2qfWbigwNmAMKq4RX+ziO0fMMPQ9OvZ07WxO14/c9x2/MeFWu\nlD4hmlXoOA4cmXvygqsHK5BMUVSWldxU/ZImZMxEeK23RnsbX3aDlAuFjVwF\nYWey1bxuNeoIu8UQgC+nlGpAEL61kvW9LvsPhQgEdr6d83Up4WAfeYcua17E\n5Coc+2GR5d9rvYqKWAXeQsupcVSKKYkwZ/5JN/hFV3SkgoYeP4AN0lF9/eZe\ncLFZXNblr5jst06/zV90Jz154F4WXb1phqTgHUTu7qIn5YAaNvfmg5Vlxk4+\napxbIPtvlbm4UfouM4wJjgORer+6jf4My4guVFurWlIIfePTUDKJuOkv549O\n9JxXhLBEcH3ysgHKAG7vzxXgsL7ChsrqZQwfOP7YQAx/A1Y4nsThNBahSYD7\no60X\r\n=TSIC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6VWxVtYtY9J+CzTMKb+6pmKsi+1vuAFidG8JjYXskUAiAP5ial3JOssdgLD14CSPN9JW80JKbJvlH3xU/rzzhcUg=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.11_1564814972345_0.4560565219676327"},"_hasShrinkwrap":false},"1.2.0-beta.13":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0-beta.13","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"aa3bdd7dd14b48019c12530208d1227e1ed0e226","_id":"@areslabs/alita@1.2.0-beta.13","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-C/y6DPsPbznIi9kJKzwJpLoCO/kC2gTyOvaylFChYPYJEKxaxlkQpbzolEN6e0phTBq5DFP4EluFNkolC/+6Jg==","shasum":"50274d61ce08074c4d2e179682764c9cc31bc9ef","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0-beta.13.tgz","fileCount":50,"unpackedSize":167460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS4OxCRA9TVsSAnZWagAAdscQAJUqdmsnduR/Ifs5VcEz\neJChmfKSJojELBhSuFR484sm/DlRlCJOaAgcp/hIitiE/tzuIxVBHuAnvNAM\nBE6AMprL4c5Nc9gWYA/oxNaB/MBuDVXa3kJprPE5/kdlBRZNGk8VxJTtyBBx\nYRSLrhh2E7bZgSmNGNoVTSTp4/fq1fZvMaQuFBzmnQLsTsEzqTtZ3MbMyXoD\nnGZQ1KBA1gk1N5oDbzc2zjLAzc4zYkfXycfJW3BoT5BMUXr/cif6Rg6u3rHU\nK7/1G9QFcNyVnPpKgAAgcZX6pDsvXSIUYJaBLQNMTQaItcnbjO2rM5MTl0sB\neU4l3yc/8RcYreFU10qg15a0Jv/vPqqfi8ofw5Pu11JO0fSaP5vnwmhOQzXE\n3a5e6OBEPiX/GFiirBQBBPfwZYYLXPOGJHne3J/GAl/+51HZbILd7GJ64mqd\nRaS1l1zCXeRn4+U1Z3RDst+Ep284hGV02nw8eSGuod+qVozylgxUY5YM+5Vl\nNklDRnKihrEA7iZncpe/5g0izA1nQl6pMID/MyYTMhD7ApkIpjhIDlwfzm5O\n3ZzjdeJAQRNiPlt/hjqafJIOIuhtfNSqR0l6uwO4x+infZp3k3JYVSDfVdcu\n3YSQCceiy/tV4ZujnwMt1P0/RVGahwto4EpTRqhmfUarRsacp8/6dkW5PXs0\nkflr\r\n=J6Rc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhffDsl1G88kzLx+Z2Uju3HcGR7AoFckoP7ao7+XXH/AiBr/t/3fh3oA2lg0OYlh99dY3D2/rLb20gsbvGuVZx58Q=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0-beta.13_1565230000790_0.2685190852324373"},"_hasShrinkwrap":false},"1.2.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"f5d4f722f2c7df9913fa506668c889e39f528088","_id":"@areslabs/alita@1.2.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-eoqTZg0mZasw5Xe+2zFgolcqZZ5ZjIXQPZ0j6Q16c7Ryjt6jrlTcVW0PIJvG2FFf/GHlAuXpNUWml7DeOgVADQ==","shasum":"aea85bab2ca340e44b40b5bd2ed72794e7d31906","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.0.tgz","fileCount":50,"unpackedSize":167452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUTWHCRA9TVsSAnZWagAAQAQP/jDbAzn6lGfoMCUYNCRF\ngf0EF0WvlZT88S5T/Yp04Q/35Czn3hW+nKMKB5RlryJpEDkVaraGsvM4rz4x\nOHyhUQiaZUR0p+/iJPnoBz78bkQaH4Y4hV93hFgAo+WNDSgI7j5o34sdopo7\nL975qBrJ5NDCr6FYweFEpnM0HJeGAKzR46WV385acg7VsWKvvfgMVDdclNYR\n6YjuX3WiX9leZZRblz726i5SkxPv8mleTWTGFAqKobH9w3YlcWtH36bTfUwJ\nZ72E/msDCn+hk+/9o8aSQqwyD+SW58ewtGWA26n09hcDwMxQhWztgqbKdrfh\nLCxJC6Zg6HgLXdmi7zb8bWUXQRQKK4HaRT01ZaGUOT6fIF3tuAwEh2U4cAzk\njPDteURip8PnllgZ0NLSMqxBaJ+YXdOt8Xzsiivg4KYtmE+JxroFoUFJ+VFQ\neSVaY/2ERx9lupZQQZR3yr8fzQlqkrlqXeGVkvpllJxxd5n7L4iEtLSz+pAk\nwZfRx91OR/BfTFywXQBOs3cWw++PAZ4YWV4Qd3xwdIg22XC62vxK2PMPSDWW\n4+VWo4cDKnsGCTy0ylPamz9GIsBKF0G5lzaBJVQvLVH12okBV4uVFMLzEgSa\nIkXDYNdXWCxS9N4HqNWFt0IdBrrnqPoyKzF1JzxN6lj+/fec1FCtA6Vq1Alf\nPMd1\r\n=nfoi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMALoC/E0R++cU9jYF3A5U/TbEb7nfaImBVUgbuv5K1AIgUMEAke+4uAxcYup8iJ/bWMvWT9Bmms0eKnRWm+agcIU="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.0_1565603206929_0.9981424653933688"},"_hasShrinkwrap":false},"1.2.1-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.1-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用，由于Alita在转化的时候，依赖[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)，所以请先参考Example目录下项目，做些许修改，然后在使用alita转化\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"6c0c436ff14ea452c51139ad6159d8b94e64b7d5","_id":"@areslabs/alita@1.2.1-beta.0","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-li0JdEZlkcwgliUuqUpLLKDELHqWwxqm9QQ1Ji1IeQyjfTVN8U0ZAZyQY1FLYW5J46f7rt8yJsuPUPeJJIhUJw==","shasum":"fac027719846f596975b4a466681309520e6b5d4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.1-beta.0.tgz","fileCount":50,"unpackedSize":172470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXRT9CRA9TVsSAnZWagAA/jkP/jzF2FNAu/d+l8dCqCdD\ngRKvIHcjCZoKL+PL5yJ0zcQkfhTfldcuggycu0+p96A5JcdQ7c0K3uxV5pW0\nxKhT84eOggKOyE010bSdjjjFUoPfZY03PYJucdH5Mrf4RAWAh6gBB3upqpbS\nfbiOYCoFHSYUjTWWeC7NWsYeG8Cx0jA43RV8ujrXR2UliXq8WeEoAQEzT3WZ\nqB5EyACuI4JzptyGKU4VyAUzYeQ14pHgqG6i9xIkU/osObknyhUAVE+e/SPj\nuxlrU+l+TYngL5pHhQ2O8wcdeEi5AB7t1mHayRmK5vzidiEb/S101Q5iHwiS\nHILmUHp6Gc8AozeYu/kettsuG6GpUcXUlTF2+CLHw+/REncVqCYm5LMKCXOw\nuEOb9uh85iImFfNh4+757lEITyL8NHyXP0+yfMpxdHJwS2QgmsuJRrzWn6lm\nwepp33aW+IZy3/bEMKGcC3r4zLNYMEo4dxVlUC3scRLVsyFCbqgr1n3JVVNa\nje65MiWpg5qqeZkbPYHZgP873CttH4TecmE1iU1yGYE79wUQKfpG+q8p9idL\ndgOLt/+hUBc11xb0EXCetmbVI3Leykat0m9mGnnykaoEnd0HRvNasId58SrA\nGvqLmt1CQtXrXtCUrdrWjQj8SM2Jn3CTXfJaPdPGYh/+A4wZsIDi80BqL97F\n7yo6\r\n=Z1hv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVbU08bBwaXv006sfY3fetOBUU3R/XMH3+XQxq2i+mvAIgOi1+5W4dS9i5JkzDr7yIHsRnbHgrlOMqYKKAijqFrsg="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.1-beta.0_1566381309221_0.3773499929750419"},"_hasShrinkwrap":false},"1.2.1-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.1-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\nAlita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用，由于Alita在转化的时候，依赖[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)，所以请先参考Example目录下项目，做些许修改，然后在使用alita转化\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"6c0c436ff14ea452c51139ad6159d8b94e64b7d5","_id":"@areslabs/alita@1.2.1-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-XZPwlmISODS3UtkVlur4MoUERXZB0NU2+H6vVvP+OXHZVJaGmhiBvZsNIGFCJ3Fuo13FLA64hEhFKORzyVz+Qg==","shasum":"3811d2e5c08a75f80700b89cb4f3ed35aa7f0137","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.1-beta.1.tgz","fileCount":50,"unpackedSize":174135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXRWxCRA9TVsSAnZWagAAMPwP/14GVIjx+71PTa9QMKnO\n8W8hPvKbUKDLC6fQxKOdkiMHi7FYUwG0GnOEvE8ax5Y+mYWCGgJ2bBKEQpNY\nW680y6kkLAGg3c6CyM9eyvXlZrswLXfpcGIGP+qQ7HQvCi/8ohDMjBW7INyW\nhg0+xotqTi5+E13ksSKxJbS2Ks9rddobAsvBTEXhytxL+2uz371J6GXBMI9j\na1d5hIumXudDSCOtZz8QDivn+IhXbQLFKAmv5XU9Vl/3mLfLU54leLlRNoHZ\nw34FUoUlgBJXSAaj68TF0ciZAXfuB80RFTV0oDDqVJ5jEk0iY5CPQTn1G9Dq\nzp6slWnEXjd+QnbN4jGqgSAdlqVkh0Bm5EaSSP+SXXNYSEaoGV4UxkU1C93p\n8tKsKO2zQeRBG1K+fjeUjN749f9Nw12iuX87YyMto2RIPIfSD/CWECez1SJn\nbzXQLGEDDzOa93Av23nr9snXJoebt2+B/vblosAwr/Fr0XT7JYr2zw7P3MCi\nK9CTqMC2NtJcyHl9nQpcz9nqhP/lI/taWCIn5Qs7enoT2EIdZ4KBOQ+69fyJ\nbgBTipx3wPtpkLgs3Y8JmYrGxDWkB1ofbhhVobvyjGtA71EtPcjxoW3Hmbph\npWhy9RZc1w7cE8d/RQyL2sAEBF+udAcqqa6mCidOpK2brJ5hsgGCUHFi5mLU\n0tW+\r\n=YkRv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmPtVoTPFQ6jz8xamvkbGSeQMzGFPYevZP70P0afRO5wIhAJphOrzHpa1sGaEr1H6QiogHNFFAy96PD540bpJSAiPs"}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.1-beta.1_1566381488537_0.7034071712116774"},"_hasShrinkwrap":false},"1.2.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"6c0c436ff14ea452c51139ad6159d8b94e64b7d5","_id":"@areslabs/alita@1.2.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-QnsmqhwOcPVw0YY2yT57EYafUTTy4dmTstEF2hmgi+wn9ZdINuJmkk2zoHzkPeo7vmHqQ/LZPikVq2/T7mrR6A==","shasum":"6b4c5f493a969ee3cd8b561cc2a329a87fdf2432","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.1.tgz","fileCount":50,"unpackedSize":174128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXRdKCRA9TVsSAnZWagAAeogP/2WYba5+Jl4SwrBe3raG\nlhJ/98co/aYUXKnfms4GmCNoH0YjAeizKEhPqcGqdLh4T8IRvMl7qBwLwPGP\nFcsnhqS4DX694kaFVf+1Tu4s362VS7X2/NEhRvkLrFuE0/UpQrQ73MZUFblQ\nYd0QDX73z48WjIrT3mwoDUUeUHrdVzogNu5mLFIYwRvk7sFUmAJlncoX/1O1\nLNG9y+oSCWHPDdQnetHXmHsM1waFDVLjL6g3wHjTPREmom2UnRo3lpgXnsnD\n2u/aimWoLAInrJwzqZCeRmCaHepKwf0mqifEEqWoX2oHAjzK0HkdFbYRBhJh\n3eEkIoB9rmWae0SW/hGh7oGSnvQbGrj+quPT1iLBiiMCGQMXbrz90eeu/5pv\n63TLWRb1OpxnmKemzZCrKdEZwAqLK454udJzY55515MybzcItcMCKSTxtJ2S\nh0drAHSA2Osjx0dGmFRylFalGKcL5+Z+eOBaxi2wpVn9/eY1yaF7+5KrOoDj\njP4XrVEqJ8t8O1n7FU7hyMjiHX9OleVgn7N0FqN2mwdfAZr7w+neHT9m5IB7\nXeuKxbiAJGr4+XIAtLxJWNEYfh1HhRNBR4DrXQpGtLk9gIZFqQzUa6NtJTbF\nde0dWqDNWfKfKKjoirmPwcMw/TIBI6+ApY9Yp1DHC9z5qdli1uwQvZ6WHYuF\nSiN5\r\n=rn1+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDJOm00nD7Q4cKch/t3GnIVH1cdlItDHGY0niiaoTyBAiBfqnlK9w4OBbT5PR6YfIJ7WHq8RaHthfBz2M/BibhJLg=="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.1_1566381898282_0.23426485119637808"},"_hasShrinkwrap":false},"1.2.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"6c7342e7bd248c871e73da2ca4c682d09bc82208","_id":"@areslabs/alita@1.2.2","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-AA7WBcVt88wba7/9ctD30ZE5RwF+1YTVK0xYF7cIrLiXCTen2yMLhsNFj18UTMQ9CkklLhH0co5NfmxwhwplJQ==","shasum":"2d1cecf539ec75e44b62cb188530d70b4da22797","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.2.tgz","fileCount":50,"unpackedSize":174767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYzhmCRA9TVsSAnZWagAAx9MP/2sb14RMBq9M39PdkhOj\nJ4DTGvEUudPZQ/aQ+HbiLHiYgGvlK22hDlBa5ey8iE5Ut2+kZfojru1o6bq3\nVRoYfBwv8crllLbMVdHchDg+wxLR7bF3AbgHcfbwMmin2ca0vaxBOfMHO4Iq\n9inoLq4SvC/4z4hxRsJGZyBty4Hw9jDnzIxABp83OoIywl0zIMVDo4XHzTgi\nogrrZFGPE0fgA9j6hO3vZULBkdi8hn9Kvsjo5vS61VLP8a0FwFv/2JP8SHZe\nIzR7NFAzsMGDERFP3flzQZNLBXVTHB9tBG1ZxboZS25MutGlgRC20JRb8oYG\n6l34YcD1TmR5OcZo9HqYxck4hRCPgfdb2I+YIkmfOhkJaZCzasNMot1nPUs9\nXt0CezX7/AZqlz68TSTGM4gmAvD0mTRujBfry1qK6f9LOK33ZwNMuC2YJbhq\nht23cA+FCq7UXHTrqhsSnWTYXPvS1UiR8LVl7aUcaxSE2dd7LIZFlbQvgu1j\nODc0En7KBDW3wZ5F0//O7RKvVWToEzR73MVxcE1eLrh1Mibs4q+qEEN4jlPB\nNbv6dXQVEVU2+WgByHdnq9seIGBDB3gGubVo/ehZlJSvriq1DxIwRSTjNb1Z\nqJDz9LagMrALDztS617chR5Cwcxil2r6rRe+ZUJtF83PWgrGnhSUvnymFvCX\nwd6v\r\n=6Pyt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFUD24RPLS2UyecvHrU1GNtCYHFcVworAkbgt4CNYTnAiEAjkytIcCUwn7DIf/wrYJI1+YtUldehkNU1puZifQOj2M="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.2_1566783589982_0.31536443944647163"},"_hasShrinkwrap":false},"1.2.3-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.3-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用，由于Alita在转化的时候，依赖[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)，所以请先参考Example目录下项目，做些许修改，然后在使用alita转化\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"ec38d66fa3db3182f6ecf34b4c6f10f9b810b46b","_id":"@areslabs/alita@1.2.3-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-WnVoTrzUUDenZ79MIh4D14tQWdmTyE1OQVy71wQZJtc5rGS2G1/CS/JDZSJVyb77+nziOEOe9nrdiZmNUxTStg==","shasum":"b4ad85206ef04fc17dd22c2c239bf8c3ee5c01ec","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.3-beta.1.tgz","fileCount":50,"unpackedSize":175435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbkKrCRA9TVsSAnZWagAAJckP/1dgCQbMpS4Du4735iMT\nEa0k6XAOTVecTJ8fiWX79NB5yK7h+YU08bC7PT52FqDoPQnxRXqGemBS3d2/\ncmr8J9OXa8AGQOqiyQ801SngLfv3a1q5h4zmbxEM6G0wy1TQ1IyD728W+Ny4\nMWbwqY4nFetneR4NQrHakDa3kie6B7lH4CxGsNlP7cXUmEtrit76p1GbwWAI\nZbmykSQ3yD4l8zTwpbIhpmqtaNM8KIw3S3ED+QJqpqo6+oJFBahqTWfimyze\nSQHHBJvftISG8n0LnhEQtpTZLlAIZ5bK1yqORBI/RC7FBW7QlrmQaQJsNkve\nyh6/BYSVUa2whfTYEbNdkJq8xu1mgwGhTTvFadZNQu/8bKpuw2yh/fJSM84x\nnuYaF3z+dDdFAyEi43G/JMyyD54e1FhR0v3vcydvJo5D3DRFafwp2TmjsvWi\n1ZdKHFppLnqE4H24C8X3/gS6p/x8ifnVNiBak66pxiqoNb/mTpCZemgIaFWs\ns9fmZpmjlrRNC0uu/T1JdSEDKZB+4Kh0D7cdPEtJgk+VjblXqoqGHbVNRf6w\njVxxG9FQtdU0JDq4IUVdYWZmnw8i7w9dNndSF38E5DQWwCtZwXV5XijX4hjP\nP1AGkKzrObU9fHmc1KteQt6EspTjZdGWFw7HYRiI/6eOWH/CHmF6wGj44MPG\nIW5X\r\n=/Qfl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC51c/Q6oBFtuS/E7fdc08TENmv4/oCHq9iJfOpyfJgRQIhAL7JvRmHE+Tt6GLVfD6PjlxnleAXF+YqmEb35Ysizg2o"}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.3-beta.1_1567507114860_0.17659020517649204"},"_hasShrinkwrap":false},"1.2.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"cb78c93fde9fea7a00965322ebe3b772c4ac8d17","_id":"@areslabs/alita@1.2.3","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-a2iavcnHCyWkKAUUJkAV9GIM3+X413CnOsQnQwp2KmV/NY56B10onFazNkHV2NMaS+Z7+d16R+XTjJu99z3Ujg==","shasum":"43aa7ba5e8cc84c1cb5433ccd6f4139528b6a68a","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.3.tgz","fileCount":50,"unpackedSize":175428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgda8CRA9TVsSAnZWagAAqDsP/32vh2lX62qHXeCdXt2A\nXy70Tbt5UvGX3VYaMERcVZv08P3BVrdxKztagBGdnOfPXgLNb/2ZMigIsUSJ\nECCXF+zPcwVLaJKbE3q4I8UIJO7s1+uzCLopeeDy5Hf5SwwUDiRlGGdm1JIV\n3UZXpM8Nz2Pgp6lfmmem2oj1XAMoD5c9Ct6oMS+UrfYsZKSCK60XRmkbXMN7\nEq5yi6AZu+buubKkeMavFDEdM7bpagoMGDbSfLJwCSE1dUZo9vQ3nhhASoQR\n2BtouRQWasMBLOg0Z6egYNSa23qM+jvI98l13xhS33A4uBXtE1XZXR3oXh+j\na45/ze4cQ1WW7x2AzJ+vHcVvcUOw2+hDa/3GkryaZvIpb3Z2mwHq4BpapIKO\n2D5kDiv5w3AoZvId4Yyo8t7ID7XNhy2oKr32CU1cxVPEAzD/XFxVlz2Izpm+\n2cr/xqV/WkxrqqPcitPw2B4sgvtlSbceuCaHzTodnUKSWJD4S3OdAHo3kEKM\n7H1oE3gw4DBu5qnaWJ0AmlmitURtIlWV81rItbcjS6ArApg/jlMvJdEEf9EV\n8Vl8Hsak7hDhIbBCvm6JEDkBer0sHgfc+XbUDMYkjX/onykut0Z/KuPdtx54\n+aGZs0yuXqT4B/flSJyF1gM5gsaIM/8vR/JPHBrxbkP8WvzgUJPg0ik5banv\nAB8v\r\n=ADx+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChyPQ3kuoF7swwJpumtsfLuha+J4hdZGxJRhrNomSCXgIgRtdwU46BbnSru7W4gyvzxYvw0JHv0IK65eoRUYyvGnM="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.3_1568790203532_0.7207246885621383"},"_hasShrinkwrap":false},"1.2.4":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.4","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"32e831d50f5c8ca3906502e1b48ee6410d3c3bc8","_id":"@areslabs/alita@1.2.4","_npmVersion":"6.5.0","_nodeVersion":"10.10.0","_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"dist":{"integrity":"sha512-mmDmhSUiLJ1/1F7e/Mnte2noVnb3OVS2W2WvICcfusBgOMa98AeGtPANRanktk9sUg3UaAd+A6OXfTkwBkBb+w==","shasum":"69b634cbca0cbfd98392d8e301d69859334394d6","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.4.tgz","fileCount":50,"unpackedSize":175544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgdwOCRA9TVsSAnZWagAAzrgP/jace+KJuE17+T8iDn9L\n8b3lbQ5dn2iJQPFfKPOGuPk93f07pLOslzymMeSq435wzdeTy5euR9LCKyLw\n9t/wyz/tnImRZzbw3JnvikCNOMogrRiyXI2KFuGCLZUyJjGmO/tfzgKD96kO\npOCXKGL5ulLsPeoh0PqRw00/HpCwLmTD4u2fdnEHzOBzGNMgUs3GXtMNSrmD\nyNIN2CDwwY5krSNs6Vr1b95rHCKnZOwKKTROhBHHQgBDUDsX4Jxtl4oKtC/w\nZL54meh+EwXK9czCbyduz+KvvV2Vv2rBdIlpbdfeiOwBQjTy1XXomJb8RNaB\nZOIjPR32yOHdyo2P5w87HIHBFTSayYBtb/eTbSWhcc+PtfayVmcIKgfB3JIj\n6Wenn6m/p/58G0ZM7+NWPwxasgTgt/RADcSHdSmUYxw8LbB1Jb1X1dO7N8YA\nyQWeuzUlnjMaAPQYrnpXRVWg3n9uqfLzBQ6Lvcr8pHnJ5/hiWLbhkfB8TEdE\nNgpMTDgVy9f0ty+4Nh0m34t1d5QbqUeAEqOrx5Ilwl6wn5+MuZlBRO6qVBRM\nZOX/3TF8cFcOd69lmsSRdIflxeuMA44CimPFQvxU6vcgOp/vyQ/xG6NBwmJJ\niaiRSyAL7xdKsdAwYROD6ifEACIJQMCtmPd7qvIIj2563F7L63GbwLMP3job\n8++w\r\n=p8jo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/RiYc+Z8K2UimD28Z47+OPPCixFz/aLyQ7z0ZrR3LbAiEAgdYYjrFZDoKx0BC5vVqNz/fguxvHY38xB8ayQ7feQOc="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.4_1568791565941_0.16591096829852914"},"_hasShrinkwrap":false},"1.2.5-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.5-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0","terminal-image":"^0.2.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/wx-react.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码，包括HelloWorld（Expo命令创建的HelloWorldExpo， 和react-native命令创建的HelloWorldRN）， Todo， ReactRepos。 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以建立自己的RN应用：\n```\n    react-native init myproject\n``` \n\n**注意** 应用的路由需要使用[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)组件\n\n下面以`myproject`项目说明Alita的使用，由于Alita在转化的时候，依赖[@areslabs/router](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)，所以请先参考Example目录下项目，做些许修改，然后在使用alita转化\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. 在[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)上运行`myprojectwp`代码。参考[微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/)，导入`myprojectwp `目录， 运行。\n\n   **Alita生成的小程序使用了小程序的npm功能， 所以需要在微信开发者工具下构建npm， 工具 --> 构建npm。如下图**\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n   (**如果开发者工具报：`﻿module \"xxx\" is not defined\"`，说明npm模块没有构建好，需要点击上图构建。**) \n\n这样React Native应用就运行在了微信小程序\n\n**注意**一般我们有两种方式创建React Native应用，一种是使用react-native命令， 另一种是使用expo。 这两种方式Alita都可以转化，但是不管是哪一种方式\n创建的项目，都会在项目根目录创建App.js， App.json文件。但是这两个文件在微信小程序平台有特别的意义，所以必须对这两个文件**重新命名**。 \nreact-native 命令创建的项目只需要把App.js 重命名比如RNApp.js即可， 而expo的方式需要[参考](https://docs.expo.io/versions/latest/sdk/register-root-component/#what-if-i-want-to-name-my)\n\n另外， React Native命令默认会创建最新的版本，而目前最新的 0.45 及以上版本需要下载 boost 等几个第三方库编译。这些库在国内即便翻墙也很难下载成功，导致很多人无法运行iOS项目！！！中文网在论坛中提供了这些库的[国内下载链接](http://bbs.reactnative.cn/topic/4301/ios-rn-0-45%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%E6%89%80%E9%9C%80%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E5%BA%93-boost%E7%AD%89)\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"53c8de4b5316698068cd12f612feeae58dda0b2f","_id":"@areslabs/alita@1.2.5-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-nMP8N6+c8lMmZDpF7C0J1H0ZcvS2Ss6c+g7LTDeHUl7obajkjKP0o59qj3BMDSQl16ixlRVIkN9oOxS+Cul5FA==","shasum":"d6b53af7837fe903619994c5b67bf3211472776e","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.5-beta.0.tgz","fileCount":55,"unpackedSize":193617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgyJMCRA9TVsSAnZWagAAWagP/14QKPuLpnpNn+m+IlC1\nov5QphDN97LFvcjUSNzeOEVr2cXquPJnKqARuIowfDDb4VDWjnJ4AEM1QNH5\nXabo7eQP+7zhZ+4LKWxsg0tXrJrg4IIr4tvqPbTcaZT8TkfDQqTimnyDsCCQ\nsoEnw57qsdrrJ3pGuYAP6P5h/N42h1CrrbbGetjYCIP6JCI1m743sO2Ulr3N\nI1MiAOxn8fm7peF0cvazC9iYkIg4Yb5LJQXoQzw1u7wQHYnPhMCwH+w/c7eV\nPJJhmMVim+K6PJpAbifF5l9OmMErDOfL/Fm+xFeUJCAjy5vwc2HTZ+sfjAn2\nnWsB8aFEZVhGC4moN05Zro0pKZh08PM6Jswlq/kGpApc8GWw/nw8fshzcOh8\nTGzETNf053dQX02vXTvtMLdZShUqBk5XyIOTW76TN6Rqg6I6KCNSaW1u/5di\nssXVP4fRK7wTCIVI/7glyrTXe5fhzfNuo8WaqQJpC07ADEKPZh2xRA1CJWSc\n/05ERva4yMf45sdT227mXD8Z5W9Ym+76oltqQlehwJfxt8qP25coIk/9bUGI\nfLtjfHsRshiMTT/J2kXsGlLbLoM+8tZ/Mc0XQo+sZn06z4f9fADdcRM8qfq9\nR6eq3tlC0RlY1dsm0qXNaq9yewa5ThjmzCYrQqhPZBuyfvnFTC92kUHewn32\nzW8I\r\n=nCke\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWSJnzot3Xc91BlyqQE+8xAt1ZBpZPBwOny51VXbEOdAiEA+gKCIQFpnORKqY8j0Wre6lzBuYcl4cwlTN++VmxuAYQ="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.5-beta.0_1568875084051_0.9805335408290248"},"_hasShrinkwrap":false},"1.2.5":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.5","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0","terminal-image":"^0.2.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"5a596daf1288c2033e416138e2f3f9abbb5834b8","_id":"@areslabs/alita@1.2.5","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-JuMKgfq45Onq9LYFNwNDIY2pum0auIwrEaNTPtT/3I9CDX4LHx7TTWYh55ee/nagzF7ay3zqhMCk6Rn3Ioh7/A==","shasum":"67a2c402fd4a7185ab95f8999528deed1a1fb7b4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.5.tgz","fileCount":55,"unpackedSize":192299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgy8PCRA9TVsSAnZWagAAIo4P/3TwT5LZClFCDJsNubiy\nnkV8+HBw3rCyisoPKasZm8/nxl4az/6PqmdIdBPgYl2TEt9zWJ/NnsidQDMp\nuqWPCOfKm9zYYH6TGOAlAMTnZwS/wXufB0ZpIzoKOu6Hh02EGQJHY2g/5S6X\ngKEkypnUlFamNmWmpID70BJ5hfqniUQ7eNBKJ77ZnJR5Z24Vs0TsrWtqhunT\n8/6Op3v9nX3KBIdUlGQLGzctskaWmtjlvbOASBLCqM6NXORS/457LYSjaEW/\nf1aFw9YdACBtAtU6D56mKfvAJnoUUw39C7dIplwa3itZJSufPk4baasy+wY9\n9GlA80ZLE5ygwwjS/j8FNq7TgzwlrkYj62wwj0jlQ2vTzDoFRcgEpBt+kJYM\nVZpOsv88+LVsnc7FfoZ6YqdKbd286UiDx1/Aj8wVTWOD2PLuy3CFFkFdOwAN\n2upbdjdAq77h43VLpnyPhdyMNE79bDrIZcXeeXChbdgvciyx/Y4HqnJBHSmF\nwjBXzusDR3jh+mqr23mWFNlnOJm37u22JjG0GCUOij3DMPGci/tY2BB2NJwu\nK8hoqvPxcRgOCT9EAzoXDVkdfNvpk9MddPTXUlLiZ9Zgwbz+DSGOn9S18OaF\nnc6k5r9PCdViRQl6f22nBdsrHrncQ4eWhZkbHNo+6E6psDwZyezXl0VAK37E\nolqd\r\n=C7oy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAb4ZbKJcp9a0Kiny28MajNRtu5/CVIBBR5dKQlLiABgAiEA+rD7agNtiICj/oTrdEgt79W8MES9UqAVWHRJJimyuIM="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.5_1568878351293_0.7527201484592434"},"_hasShrinkwrap":false},"1.2.3-lgsd.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.3-lgsd.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"ecd45c120980c9af2757fa34867a72abb52809f4","_id":"@areslabs/alita@1.2.3-lgsd.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Ti9DUYsntnnQ1D/nQuwKcafIk6MlQRq9cDWGn8bLpIPUmRvt8S7j3Xo04Wmxzbse6R+xUsJVKwt8Clt+IsuZ9A==","shasum":"596e1106b7b87ec411220f699b4014a4bb7f8b51","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.3-lgsd.0.tgz","fileCount":51,"unpackedSize":177089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiGfGCRA9TVsSAnZWagAAefMP/1NmJcuuFrzKrjkWCGDg\n9m1clAkzLSnDNo/sUEhKWoJZqZAiFzBYorTvmeEvTbFlPjv1TyqCAAOhyVSN\nRwerPmAjqxYckSntnhveMuz9pDKpgBRbx3ZoF8u74dI11Md3vBhJtvkDmJlE\npVL0suji7ai5bWl3axW+avWss7wjBgEpWMTgmG3nbQp+LMuqqdS0EPaweKW2\nDZUA3IBFYF2pKApwY7uVxDB8ZHqrrCKANOlTWU6NsWgNBbVkYy27Cvwi5yzG\n7ARzxMpWQ6Ogs0PHFjjxvkNapo7rRIv5avorCvcSdTQHu6gjBsNwQ8I4KYca\nGn7iVnrckJYVWpAp1nTwdAIHu3gB/AorjUK/D9ZWmN/w5afp3i9/UmgMkjbx\nFBfflAcEtx2zQrKibcaxNpy7oe3SCNQEi4uqEGJyUB/7vTXrVVem6w5hjTLQ\nIB6pfsoIFQJNKNWvXBEI3oz7UjR1i8yzizKFYu3Fmr/ps3EHGrjQ7sMS2gyr\nPgztO7tcGXFDClMl96yz2SWe0EK/wgNE6IW8KkvbUkYZrp1hZ5VEovrkfSPQ\nhmeP6Fz8gUcv9zyHNWRh23x1h9x6eLMW1VC0MB455+vCuroGU4mbhr/fUo2D\nBzGv8O080spJ9wJ/I4i/IW7Bg8WJ/t1nEh7WuWGFbdJMxoZGIdKiBJ8yTmir\nAW4w\r\n=A78W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWMJ07VyYJVNV2Cq7r0V4vMAIn0nfQnwyaBudvBxjZNwIhAM/I72p5Xji83oGqtui4p6mZgZFZTypraia2qWBoadcq"}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.3-lgsd.0_1569220549573_0.0471120335520856"},"_hasShrinkwrap":false},"1.2.3-lgsd.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.3-lgsd.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"ecd45c120980c9af2757fa34867a72abb52809f4","_id":"@areslabs/alita@1.2.3-lgsd.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-gOAf+Te/zxzwcD9Jxkdtjcke4UPKiHtxhaczjxKI24QFGeWgg+URaR2uHSWj4VdXDBQ1VmGh8HHbY2ZLsculdw==","shasum":"d874d8757271b99224a72f3ebc648177a573fdc9","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.3-lgsd.1.tgz","fileCount":55,"unpackedSize":191399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiHPyCRA9TVsSAnZWagAAc1MP/RdUZn6Bj+wgHUiRQGjL\nBxKJyUZEncxqJQMTzs4gbf+d3nHfvYTSFxm4XDe5yrTJ1+MfnMvdW5bQn95z\nmd3BjBk+Hmx9PFPC70y4lo3l387vulYoniUgbUvoYBj/VFelO880PrEm9yqx\nxo3v01KO+PgvXK2f4ZctLUfV3XZr7ngykHzjqdzlxi0J1l4cYpISqrCe/uvw\noC3aOLQGS6o8Yr0vGsBZngpHCOvi2Hz2Om6MesxdwIcjvfMbJGGM2z6en6Rg\nGAVVORcmsUsiYjMXTs77cYh3Qyp71Ux7eaoJMaNhCQZ2pFe72znb4oLQ3Cbm\nuAB9cOGl1wuWm2vZzBjThztUk9GCTsVuQuU1rX7dzT+oZqYCGE3upHg8BPqx\ncqjoCXXwWv9OoLkfZk+kWD+yNK0GeJm9nPbAJUEThilRXmZQJaBqT3rL3wWB\ncbz3JPNSI/CpTB8MYaW/HslPBIj1sYKJ56ofK+Nf2jGPqYXG7PLPyiRQS4cs\n5/KkzEi1yokX4X6p/Q0wvUuFLS6PTAw0/vLewM6bGo4U9Rx0NzOL0fVCFyUK\nh5rXnWFVGZxYnitKZT8eWLKzTHU4f9r9YnmGmsNbNRGSZ7aAK0NDh+HFd2N0\nFPMZhjHg9dk7uLGO+CXH5G/0x6TamhnkJfb3SCV7Y3E8gJcRtTe1KjH3IzB2\nU14U\r\n=reKW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHfLS7I0DunMyo847CovcaH+Qfqrbngcnu2vazgd4y0/AiEAwGcBgprDRSsjo0dU89YtSZFTyC1SDMarKy4yplGo1wQ="}]},"maintainers":[{"name":"jameshen","email":"jameshen@gmail.com"},{"name":"ykforerlang","email":"1527997464@qq.com"},{"name":"yvettelau","email":"542783088@qq.com"},{"name":"zangguodong","email":"237974119@qq.com"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.3-lgsd.1_1569223666101_0.6321818709346112"},"_hasShrinkwrap":false},"1.2.6-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.6-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. Alita本身的一些限制 详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"d96f3bc4183cd916d936c6a5241446e5949ecdff","_id":"@areslabs/alita@1.2.6-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-sanBvEYMhRmQOwBK4brAI9Lkqe2k4JWYchXtDz6lZZPFf5BoJrzCNCZpnMTPQf9sQsHa9AosrLNMc1H05EmZKw==","shasum":"775adfed02c5dfab565620f3010e9959cb0af4c3","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.6-beta.0.tgz","fileCount":55,"unpackedSize":192637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdir7tCRA9TVsSAnZWagAAb0YQAIzDwfsnipBrstzJGiVE\nq178gONDosRlq3SDsAfMwgs4kFtaYsbyoiloEXMW54aSECL9K1csxrE2SIcp\nxiIH3QwYX3Y8IWe+At/Y0RZy831MICQ9uOfwSC2WjQPWcNPSgoO+obEzqmhB\nbyskOmQBOVYTpxup3UCn35x/0FKVAXb/muIAvnNatZsIQuo3EOQpKgFHx3zw\nvDLJmWg+fljipUiDEQhotJVOceOzeAEg+/TyPAOcAJQlKws6jykNSFjQoqU3\n0PPFBY9S6bVbYsLLxqiHV+SFEMxm6O/umHn8Nt3ei3Pffe3gew4lKbrdcpmw\ndhhFGjGBrJB4H+CE31Km0iuSgvQiKmvQvKIH1yYF7OU1wHWve2Y2FW69YV57\n2AuIC2aQOvGfIPhLvdVOChKpM6qvBvgbM+UzUntoue/gH0nebTex/5FQqpRU\nZdvnj4scHQPQFFE/1KPfmePIODu6hZ8PX5XZ9QskjqDrlnNe2hTrSHqRD3+t\nOo04Bwt+q6AdQKP7CALaEb0gVHH5r56IJUSGpEqhhCH1VbOcL/JGEyI3iUNn\nu0cqjGNkGXZ5N36L/Guow1zP+LErHztNL+PYKsqxVU+7FNJbJmzGj0ipP5AS\nCg+YQhHbqYXh5qoHM32ZwNCNjkySE/DFY1XKHUhk96QKjBI6IiLn196if8wx\nkukq\r\n=QgI8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5sNtZg73sNtOEPH6Tjp6YidAfbKA2wPnyPQ190bUl3gIgOYjsbhRGHJdFW1nMcH/TpEPcNYO2PewB2tp3vYIaVhw="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.6-beta.0_1569373932884_0.9268336811300104"},"_hasShrinkwrap":false},"1.2.6":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.6","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"30300b9f298e29b9fdff214aafcc9bafeb43c071","_id":"@areslabs/alita@1.2.6","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-7AOUQvhBF46Z1zNrJ8k/RUNq22RI8SXxOROCR2J/tS33W/LFnK8pwv/V9PKzdY5PFEvz8czEYQ6mVv8ymM66iw==","shasum":"4d483ff2e20bef42be6c9ee03f0b3a900ac6f874","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.6.tgz","fileCount":55,"unpackedSize":192630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdisx/CRA9TVsSAnZWagAAzgkP/14AT7w1Ne8JFsyhD3SI\nRHIu/No0T2hz8ldcf1Qu0FAzx9PYrRuTgu+m8nLmE4n+bqtIzR2EZcoRcAvL\n3Q9xJJI0xUni2QoBnQHCsF8OlcjPKOARlWhusK81AKIw/s+0okSuJBHj9LNF\nNOI0b+aTrVkT2p1u/ToWusolMpV1JQycgKjJKhG1L+jzc32qCrpjYPnQ8zGr\n2w3nmbJLH6Eszg/XRdkKe7m8+bwvmm89oisShgz+TldufKhg7qtWmZb6JqOW\nD6zjnrijwagH8TV25z/almZS0MlTm8eeqIHfOYEUhr/hqoIpixoZAnLRcskn\nhq+6Yo3hot9eKvgNXVOSsPh67ibUF0wkKDZR/wL2QvnuWD2wPSZtbfqOMWy5\nCLtg0lFyqOURtSpnhgHubLeLGb31vec29P2GGU98zFsBiRkDy6fpUmjmCnfM\nUIcz5OwOhFHArLuoFL2OWFlPeNrtayr0pNauI7rmFk81t+m0HhCIn1AmSQC+\nW6KQZpY4KPXwH0LqTOfFOk9N9xZxPEC0SKRLx4CNSSvPG22XPpgg9yIg2ZTW\n0n3cots78XsistTj/5+GHD4qJd3a3r8LGieW9l5Nw++PLDZC/c92prCYNltF\nGQw/fW+EqoZdmwoyuNAGBWhV9k4ImwVEgXbGJ4iFkdC77ve+hoHBy4t4+nqn\nBV0i\r\n=XMM4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF32EJ/6QIDgpgL1E7rYCLepwucZnQPOXvr6G0VPMxLhAiBlvOTWdi7f7uU2u58L5a0bRYGzfzypO6EG8im8dua81g=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.6_1569377406799_0.2253030120370021"},"_hasShrinkwrap":false},"1.2.7":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.7","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"e955b6df590ae65d08ca0f1974627192c9a98ef3","_id":"@areslabs/alita@1.2.7","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-KHa/iuFXMHbpzc/Yp2HQqUcEOfhKJZ03R3C+2s73xNr/tVTd0W9ApILl1SHwLNy0ZHelkhiWwexy3vnGTULJ4w==","shasum":"a90a249c6dcd8eee4b96cebfc6d043440f00f15f","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.7.tgz","fileCount":55,"unpackedSize":193464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnUt+CRA9TVsSAnZWagAAtWEQAKUIEovkQzhHBfd3rKo1\nap63B0QMPyvxinh9ZdN4TYZf7EfZWQl4++6sRhdsmSJ7HEY+d5DCH2geBpAj\nLMtyrRqhK94ElRecy7GU2ex6ZTv+VA6OfreD6fFa21uftdM1M8AK7bd52GXa\nAE8kdkYx3JZVcT9+xfpLGTZ7K+BsqUwK9b9K7/7eMhNnJx417KvFjLY/eqem\nvWN20YMyBuGjwtP4ucytXgWvl1v/HP1mNrrK5eoGUiQ8rpQoBCJs4S2Ck+zF\nIqL98QwaPvbX96CWq7l2XA2EcIunRm3Wo89G8+Ag5aMstFFUMbpYsStk4GMR\nqGS2TQr6byaUntDsPlRRfezaY7NV+GwPaVU+yoivM4GAFNdT2qODpLlEdz3F\niQDpTcaqqDUFPrxHr9JHuYIwVdnk9pmxbOMD0w6qexHzgrMTvgLV7nqVg8TK\nXzJaBb4af8rWff9JwWlK8OTlFejB13D52N5kCTNZ4BMloYY0WSEfveLGze9A\nSiW9Ihb4dAY+9wYioH/CiPeVPRvg5tmH7UCXNxEAdLjKV9pRlAFKxs4c0XBk\nEiWOeR61Ad3tkv3uDpnSFXTMTlUSmbNSNSDSxCdiSRRT+nnez3rCCvsYmL1+\ngt97KFqiLjfJdBfhpgnlr9GnalBojA5KKMRSCH1seXxPSXLx2D1spgL3RaFy\nafEv\r\n=AQti\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpdFjGiuym/VN6kBlYjwpjMfjv13qGnI19TqaNH5pamwIhAILRJYqi98IPM+v1IbkrShI7g6B7n0JX6AJamLnRliLH"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.7_1570589565707_0.7088878824374825"},"_hasShrinkwrap":false},"1.2.8":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.8","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"efcbfdd128e668830160a6c66c103cece3504602","_id":"@areslabs/alita@1.2.8","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-d+LU5m2999P1M4aIpyL4kZjeZdPcgcEFpFWVFGrWXvoMGeIonkkDl4LpbRTfLZuANEUKXYLJtDxZLtTMkZ4ueQ==","shasum":"8907957d3cd803e7d52fc2f8636a90a4cf59a2b3","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.8.tgz","fileCount":55,"unpackedSize":194684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdncVJCRA9TVsSAnZWagAACfQQAJvN376HEh6RzkiXL2VT\n4QEN8YEzZmH2f1tK8gBC/ArsZW8K710H04+L/3e3mY0BexhcDBRr8q0iU6yJ\nXRwQQNb/ASvfZgleirWFnLsa8wkT0UYuBXgB/Mdct1t9q98zTkYtwTXdjlI0\nJNyfy65e2B+VqNoujwzLVLIVLM954Bg/89UK4RzeFZa+B51yM9Zv84BFLJc0\nUCydVIakwc1GOTqBK2/2hlPHd3NlYHsDOHVafEv8ieI/jqWtDzZxaK0Ercp8\nh28X7xzmr7puT73UoVomBybwMqMlF09n+9/ZhhWDRmrfqO0FOAImAHeOvyTC\nAknr7ecM2m1go0Hd9krqka4Jg8yZDpIXNgaqJ5gJ0nfLo4yr66xreLDBJVns\ngU6GwbHNOV14Tn5mKrcH6Lo5swH2FfQZg1IqeHQu931hcNrQ3tgK7w11h/9y\niC9p+hLmNJghHgkL0m8udUeC2Xr4D7o2uSOQqF2ChSha0CaO95L/L0/UlG9p\nPMlGjkw3qFNpNX3UG2tyiq+BJp/FM8XQzWxvR3fyrv5BWc/6pECrUqypS+bn\nmjJiRhVBIn6Ggwq/TmUcOFrMoEEtkDMBLcH9TJqbxMtaDyKiQOJNSwF5tRkC\nD/dV5A14RHmmgln8lvriqEP8TrKCZ75O4SiXMeB+1SZteO9kJvA5CLCaotLY\nmsI5\r\n=8UrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTTKjbwpNinIE3N5diwh5GJeKjIL37lPhhyMiim7cTWgIgO3Ynud0zoKLakeR6fg0SCMAQbrRJ4rUa0iBkODJlroc="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.8_1570620744529_0.7519004939661138"},"_hasShrinkwrap":false},"1.2.9-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.9-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. 根据这篇[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)，其实\n   Alita在JSX语法上的限制是很少的，但是由于Alita在处理自定义组件的时候采用的是小程序自定义组件映射的方式，这两种自定义组件的实现存在一些差异，导致Alita会有一些框架层面的\n   限制，详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"00eb16f39027f7e7dc231aceebe4a50f0cedb019","_id":"@areslabs/alita@1.2.9-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Qr90qFQ3a7e25x+O1mkpOOYqAZIN77oEbifKUtO8VQ/zlDBrJJ+KILgUdXWaNrcB2V/Z7wLPP7PjwI8C7GlyJw==","shasum":"83c39932f948457979880bdad1706349b95c70be","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.9-beta.0.tgz","fileCount":55,"unpackedSize":194471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrYqaCRA9TVsSAnZWagAAt34P/3yP6sh+uwNmEOCJYzsh\nwjHspxbLy0keLAj43m4Sk3TiOrm9YWjSD9wnhGzzd4fPHwafAwQnw3F/K0AS\nNeRa53+ogiklUD5HbImjmD3LzkdmmktJA00ySUBcxHrC6y5YyE+IMtjPww9k\nttAhfab6PtOIekaLiagSiMixlmNN0/5esmqgH1TBekEsnu+F8GQx9/hy0+NQ\ntbYk+Yx8YEW2S6BjsGQBsojKUZt1OCLLtUgiLFAyYo2BWk/WGTGemqqPsS+/\n/jv+98p0p9WiXW2f4iHgktGunVNYmMdJet63sVaWmrOvl0BGNYzjBSG6HgyQ\nk3zcw66iquTkl7aTR18Lzl10+xKmQKXlkRH/LYtvh9bt06RagHrKjVG7qLJY\nlwi8vsQgtXF5yRYlFa2BqeA8fzrOpjALf3Ldb2nqYt2LkXVYD5nnVEsNF2RG\nRgxpSD8ypiypgBY7ben/HHqxg1Kp/hk4l8PUD6xjxYiVuEShU17feSy4rRvj\nIbPrh/OomzamF2SVzJgqS2u5zRNPChuKtCSrFbYci0VlsU5QUuKovkzJWzm5\ndL770Uecf/AqhCMfwFVtPLaI/q+8Pln2ETdZ4SquhZKbPiugQ9gynHVxyqaq\nnHS+KXbNy4AhVIzBjaNxUXSl/vq8nl+lQH4MW3FLieEXuJHBKzKnly6y97Xy\nVldH\r\n=UD+4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlg0gyfP80fwx0LWu6rl+uKeWJHK5YRCngxlfqRbCGrwIhAMSZuKhSwfmdbNxvptPw5tKVuJpExQ1xO434lDHSbaIr"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.9-beta.0_1571654298133_0.10474460739921021"},"_hasShrinkwrap":false},"1.2.9":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.9","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","start":"npm run compiler && node ./lib/index","pub":"npm run compiler && npm publish","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"9bb88d8d3f579c8be4e90e64412db01b9d92ff9b","_id":"@areslabs/alita@1.2.9","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-r5TxmDTBpLyMDrciQWMPf+nJA+xt1GBYhm2pAgbTNTiRXk7JxH+6k5JyTBbFZZRz97Hxu95yeh+Et4DArkLMoQ==","shasum":"a2cbe557ff6ba88e2993c8a6633fd084ca7898cb","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.9.tgz","fileCount":55,"unpackedSize":194464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdr/2nCRA9TVsSAnZWagAAz6wP/iUUgytm9oysj5oiLYMr\n4w0sP3QjDp3FKA5GL7klHm95nHZbtL6CPs4gRlI3kvhUSC6RWOCEng10zrkB\njONLNOPo0UYkKLabQR+zxII2FMgRFLlr5kj6MzMyzGAaz0e05hKHCxzQidi3\nLjuToNdnyve3NrPSKa0jOGs6ssIuoQcJxakLuUw0SccMSLNcm8sQWSuLBUM2\npKjqLtzKI1rrk8tQDgURizUiIDFlu44t3Taqn44G6wh0hSCLGMd0M9Sulzte\nU2xbYur3fLQR3LymWnSSEnovHrtggj6UuTd2nEOSevQdth2FwN9jS2LvJ9I2\nSqQHcpbmMLF1iKN31VAXu22mjqDaFrOPVLCeLc4JhFLiETykJOuOda4HkxgL\npj0JbjezDGj13SEiamUATm2WZACAY3gYZsbS650mUVmrCbDBVrjftLnmidHj\nothzwxe6ZcDS0UodUQezQ4XzyXjcKAl2HHHPwNAAImybfxSU9sUoerA+3fcT\nyAeY9Fcyxe526Tnthvukg+56cd1zEPrgIUcynzlgdvW6D91y/jSOlW45cSKO\nnzHqSZrLVbcALVcoxFJAR+JlKqf6PG2EyXNvjb4ln/Dr69xUowPL74SFTXoB\nE4fKgfSViFsaTFj0Fw9GOtVp39DGn1nvsTchAENy2Q33hjmerqgDGSmqP3+f\nO8x9\r\n=B4So\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxjVfrbfBCrktWvdYK0Y5qWTHsVWTSotCI7F2xtjf9gQIgfLriZj67zHEFZFwP1mLfA0ia/hc6Rm0HrRrQLGk7PIU="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.9_1571814822850_0.8401842007515463"},"_hasShrinkwrap":false},"1.2.10-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.10-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. 根据这篇[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)，其实\n   Alita在JSX语法上的限制是很少的，但是由于Alita在处理自定义组件的时候采用的是小程序自定义组件映射的方式，这两种自定义组件的实现存在一些差异，导致Alita会有一些框架层面的\n   限制，详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"c94aaea7d3a21a3a02d1d611df0d31f4f1bab47d","_id":"@areslabs/alita@1.2.10-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-T3LevSMjNugyFTN5fLKoIRUxvp7YTa3e20QbUVmQjqqaNrfM2BuEwiq2uzHBXKo38nw1EhaYLfQ9UTKR4ezEFw==","shasum":"08c5867d28f253cd52ec5ad7ed9c0109a48e00db","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.10-beta.0.tgz","fileCount":56,"unpackedSize":218980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsRKmCRA9TVsSAnZWagAAQKgQAJ+Xs3XmoYePYDZWHqhH\n4YN8DTqlLAJSDIRLV1SrIV4aW8xPg10Zeov/torXcAirpo483yRMDdUCTLxp\nZJPhGxvBEmET8yMwVp473/wXFsW13Bu8IpsuPxwiSuNCSfrTy+hZ2sMZNehJ\nWeOQ16r7BQlQOJMNw1r4HjCxHQlhXSD/0oOZcUP0CBBiWttXzkGc9JW7d+Sj\n4TDu3GAf3LVRSSCYAHL6ZAQc6KzS+ztFNKJGCG9I7IEy0tw9riUZUWZF0giP\n3cG6KX8A+dXC2zHstmsU6STLhTy4qEXJeOosr2FVdaXzA6BULwcRy9e3GoVy\nyGoD5Mx3EyWB06tLPTznjw7ebVe9OO2Q16pGS+b24685+z+cjC51BISk63X1\nery28nICUIoxcJczJ5x2SjwJ9jAKIbjFs3lkoOFDSyf0NkAiS7+5KL1Cpoc2\nRVb6riNXEU7Gk2dRbUXRflE+XXqMLt9yc6tLOdHEMGvZeTL1P7Oh642CuJ/H\nhzhI8iJybS9li0m14W8kDfA1dHwSwczgAlpgKlM1lqjGdrfRlRSgzQYzSorT\nq/7mb3v1jHcv6mpiPqmJuY46QD2kWr4mYerktOXI5+oRDHCwLJYVLLpZoRj8\nj/ckx5YNbFToEOwSSiJWVeAV7G7sKrjxmabcWPVNJQvXbzo310N4lLxaEwEa\nWWqq\r\n=ep5t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKmuf8rFWzeJpWxCeBunzxc9MSMEVPpCslxV6ai32FKgIgCL09q3FJbcuxV6shJfN/jT3gWi0RffmfXuUyDF9PADE="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.10-beta.0_1571885733806_0.6343221872900782"},"_hasShrinkwrap":false},"1.2.10-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.10-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. 根据这篇[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)，其实\n   Alita在JSX语法上的限制是很少的，但是由于Alita在处理自定义组件的时候采用的是小程序自定义组件映射的方式，这两种自定义组件的实现存在一些差异，导致Alita会有一些框架层面的\n   限制，详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"72fdea5470618b34f9309688ec37616a253e63ab","_id":"@areslabs/alita@1.2.10-beta.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-RwwZqen0b9CSqIXvxdhWygwA2iLtlZO1m1Yx6820Zf18rbu7E60+1GoavqLAlrIvnp7M0omD+grCxwmYUMNpDQ==","shasum":"1d8264fc567968584e1609dd409806200a709b5e","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.10-beta.1.tgz","fileCount":56,"unpackedSize":219065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsRW1CRA9TVsSAnZWagAAOGwP/AuITgnOeFeMWeYKqZGP\nqT5y9sSJ377bUKwWptSmZOAsSq0pPJiVF6TVApOtq7fkuO9eeRTGyIdh7537\ndyEIAK5bJysK7ev6v5Aisj3rdXVWctjvLu51Pv5COcxNe4DVouYRQtHg1qcJ\nQSgiB5o7y9i68BoVOVRCSQBqFl8pvE/VEpk+qV7hVv++QyreVV9O2z6ZRf7l\n72yqlotpKA5Hjydu9ifq8k/iP+6mF1r4dO5c4EX0CVnfqBL8KTs0nIbZ4vba\nri51+sdSc6fRW5ZhLdQzkPUxJBXlPF+wTJipruLLmaVbHYwqwLpagiDaapsx\nPKTut9/jqlOb4qG1UW9AtXmGxy1BjlbR3kS1e1bcBB2tqm74EO+iz9im3y9y\nGmN1ZwR42mGezJ9XwgS7cO0WCi0VjEVCeVTI0uu7nl4pF0ELpIvaWGMm425c\n3Wt2IeKblzSV3FsqJi2Dqp+dKjTORqzzUcDbcCsueLZDDWd9vETbfZKyYECB\nMhisCLHxfuxLdgLL3HKeOxUxotcNgQg2yqSjqheSSz48686t3+N6XRgB3nIO\nFzYFt2acz3nJeNNu0GdHfSiID2ZwWe9n4JNXvtAXcqS1d+rfTG8Detf0rPeH\nJL1XJQFP47s0A00T/BJjKxbUNZSqh9iigZPP7xo2JbTyVww3iK9uHrg5Iufn\nuN96\r\n=YE9b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6DZ6ITTt0fhH/y3VnCgHKpAvOQjJ6v6Uw5Bho6ak27AiEA79jJPLcwUhOBoTXDo09Pz8Pd35/AZWBSCi8d2OTwZq4="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.10-beta.1_1571886516571_0.9466059718937612"},"_hasShrinkwrap":false},"1.2.10-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.10-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* 支持第三方/自定义组件库扩展， 扩展方式[详见](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)\n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目\n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 要求与限制\n主要有3个方面的要求和限制\n\n1. 转化之后的小程序，必须符合小程序的规范， 比如最终压缩的代码小于4m，分包8m， 路由深度不大于5层等。\n\n2. 根据这篇[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)，其实\n   Alita在JSX语法上的限制是很少的，但是由于Alita在处理自定义组件的时候采用的是小程序自定义组件映射的方式，这两种自定义组件的实现存在一些差异，导致Alita会有一些框架层面的\n   限制，详见[要求与限制](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， [静态限制](https://areslabs.github.io/alita/%E9%9D%99%E6%80%81%E9%99%90%E5%88%B6.html)\n\n3. 如果使用了第三方React Native组件，需要使用[自定义组件库扩展](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) 方式进行扩展\n\n## 关于第三方包/组件库，原生组件\nAlita并不能直接转化第三方库组件库，RN原生扩展组件。需要你预先在微信小程序平台对齐好相应组件，这一点很像你在原生平台上扩展RN组件，这很好理解，比如你在RN上扩展了一个原生平台组件`MyComp`，小程序并不知道这个`MyComp`为何物，需要你预先对齐好小程序版的`MyComp`，第三方组件库也是一样，也是需要手动的对齐处理。我们提供两种对齐方式，具体请[参考](https://areslabs.github.io/alita/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html)。另外，我们还会发布`alita-ui`，她会处理好RN社区常用的一些组件，是直接被Alita支持的。\n\n微信小程序对npm包有特殊的要求，你需要确定你的包是否可以直接在小程序端使用，我们在[配置文件](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)的`dependenciesMap`字段对npm包的使用做了详细的说明。\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"72fdea5470618b34f9309688ec37616a253e63ab","_id":"@areslabs/alita@1.2.10-beta.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-qYxF+cY6ZEVD+mQTGlA6XVdV0nQWUZ4mN1hMKp7DxEbH/1amVdQplr5XlDnjoDw9aNugzqlS0WlStwpdleL0BQ==","shasum":"e75ddf9a7ad27bba35a6f73604de71f2f2b445d1","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.10-beta.2.tgz","fileCount":56,"unpackedSize":219065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsRlWCRA9TVsSAnZWagAADoYP/ideOZdt8/fehSleETzE\nFDwBhaOFn0GfCAhiCiIuJPf3CJAyhmTQzFKJt4r9tqORW9UsWiF4oZg0mFVW\nfZOrpXw8LnF3fvHfpKLcrDqhOx7oMfke2Ciuos2o4o3fFj7ji5LDPU28JHA4\n3AG/EdCf07y9SvBm4aiI6r1iN8tLGxOzeFKBWEeUIiNxkB2g+xsFl8nSj8wW\n2Xw68D2P01Y+7cen+/M+bB5URLUUpCWF3AuT6wCqDC9i/o7VY/UyyEXYbakG\nbsxo6Dxs06lg+97refbP8aXV95qc8OxQrz2VqoLf35HDLuSsFZ0Ry4w1/tjt\naeC6ytp6XteFEO9JA+IlqXF3UZ4wGg7aDLBYoHxo81+aELEkWYNSgWrSsts5\n7aBWSWVlzb+gg//XyUPZ1oRmpx0hQJVgJpLuXJHuT737FCDTdDz0GZx0ZBhn\nKMEr3f5+Pf2w49tT2+k7EkLmssjB3NginHgRVCfR1WdhZiNtRCcQ+wHWq3Ta\nt+nMKDpZgekowsU4710jje9bGc5yNU4KV+bD4Y1PJiqCZRDQE8fc+ApPgKJ8\nr8INMMI1+EMgDF1pBgu4GZgbBx4bpsdlrbzTvWk7sMSkrXB13Gol1qrRlwx0\nIP0kp9QS9gKt+HLkUw2m8tZnKpvDbHfJQsD6/s0z9MTSR41jahJLfVM2CP3s\nwbfh\r\n=0Bh2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNBZNMg5uR4xXAJmAcLXAgvT9ev/4IOBHW3VI1FNjPqAiEAgNMp5UgSd5fxT0yO/oxqTi/jbXHEzNaacIBVMHUswCQ="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.10-beta.2_1571887446387_0.778059517647453"},"_hasShrinkwrap":false},"1.2.10":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.2.10","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"d20b8f5a78ba30530e9f1e9002c380363c26ec76","_id":"@areslabs/alita@1.2.10","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-UJ/b+KzKFHrY5mQY7xfZ52rHSDODyMbFwb6bFYrPkoAz4z4XTrU07ojRjK9OF0A/FZEG7X2ueT1EhQ6y+WpjAw==","shasum":"a00ba14f0acb8420f0db082ed13ae7adc04cebc7","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.2.10.tgz","fileCount":56,"unpackedSize":219058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsSHvCRA9TVsSAnZWagAAx0AP/iFANXEq0ds/HUzJR8vH\nvtQNQhNM7KqOKYm2T7E5am8dC0piRstKiGTDW1WByuV8rjGcS2sS3tnHBvDR\nbzxhd89QHin/0y2zc0D2NC9+8VbhI6+WugMyxhxgDsHd5HC+vp+Ksqr/2+0p\neM5TdIkBDoVeU4suYsPBLa6zdnzEcFy/D5gIVaoN6pFmHwL0FD0hAISbTHBf\n3EWZcZlMBYB0hyGtqKUhlPGWNftxpVg+NuBBt7uW0JmbTxjKiLt+jQHzzFMJ\nsA+KyuuXlBiigLirZcWrTINnEQJOFV72DwPH2EsPPV7+pnzxhp6RIB2JGr8A\nCwUcuSdrgP0QEYOQVjw0yvKKpEGXeRxQYC5PVel+gcM1UkcULCVr/mns/GUV\nG/BKpD5lBzqFy67D2V9QFNGNXmVD8aguJWCCbcVLNv2w+UcPnQMC7ac/yct1\n7BeC9uLRZ/IL6XTNzpyxSCS5BTZoUdDxfuIVbqezGYqGGFpjZnEjs9cx3prU\nuSqb5TeWVfeFaVMrF44ejT0yoo86t2Rhf9L1/g/zmP3qotxsY2hPyRqqI+x1\n/IiBCbw2rw7hMUeqDuC37zTEd1dkggYB5LuXSaZ7iJBy8XTdOtLMNtnO/5S4\nL+RsCLiCt6fcakUliZ0XrEpdzEiGfTaWFyNYRQ4Xn/NMWzmsDt2FL4A1sHVB\nu7U/\r\n=ZF/j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4MEZH983crSv+x5c8tDsZsu8AipMN+yldVyXA2PQ9OgIhAMlS74ECWmvZCgrlqyUXbyQfB22g4oa06z6D2bnR+MUs"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.2.10_1571889646991_0.08050135967264427"},"_hasShrinkwrap":false},"1.3.0-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.0-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n\n## Alita限制\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 现阶段，Alita并不会去处理项目中的：node_modules目录。 对应第三方包，可能需要手动去处理。 参考[npm包说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"bd61a0a049b93096c044856c0939c34ed1ce7ba8","_id":"@areslabs/alita@1.3.0-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-gdQH29nZjrALPGCHkaoDYzyXJP9jjkf6OPQjJbQwQSVorrsD68nr1UdIMam5S0q6n+3fd6riyTvbaxD2LZUKvA==","shasum":"f3f22446505ca16afe48798c2e3c18174257d4ef","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.0-beta.0.tgz","fileCount":58,"unpackedSize":228556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduTF9CRA9TVsSAnZWagAAU/4P/i2eSf4wOB+B73CspPop\nGwo10W0tW30tIbCZCcxpd9sbMFkZfRCrtdLZMtQl+PEbC2Z6DAG63NkdJZNS\n/u8nns/MoXUaBhpQb8EDpctyIt+34BWh42XOjj6nzo4/n/sVMIZNJSYjfIwv\nU3eLrljAJDr3hLLmW8nG29ntmYQEkUKukUDbRYW0WQWxWqNWAAiG9RnyzBum\nKDiPcAdE+ayB74r8byA3PkrtCeWMIBrBPs6h2cyivOxp9KTEjiT79NMqkBY0\nWwL/WOne91fKf1kfYhUXWuyxqWJ12TzLKkia90foKE39gVoEaZyg1IyD4RPu\n8ZXZVQ0XJImrInmf1KUX6O2Z9gr+3XOyoyiRkIZC6HRtdfKt/zP/iucqC4DS\nrP07n8Pj9I8AhrSUPjLdSvJMIthkaVG4iVf7AIUK1rj+J5wK3vH9s5UUp9Fn\neS1hI6xYn3AMeYN8asi1EqD6/1atyW8FGn+vS/UN9QrsGXFesDzBADGHAPKz\n9CybfGljAGoFeHkU4Fvp0xiAzyv0NTLaYHfosQCD4S1V1e7toe3zgHdaCsTS\nO/dgn4nX7p7Qzg5A0JzHSSqXjba3MD7h9PPtDqzvRiVqjPber0DWWfpVCFoL\nK9KhZ8LIcOE+MEMOc04zS/tre/NgMCS3qocjkP6KDksHacq04RRlHqqH74yg\n0Jlo\r\n=vX+1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7OIoYJ4GbzJMXLTm4z+9XuStjfRTq/W+DMkJQg/wNtwIhAMXIqoGVh0SG/O6pnLN5IXSIUB+Ly1zHE5+g+XAYh2gw"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.0-beta.0_1572417917149_0.1871695720913198"},"_hasShrinkwrap":false},"1.3.0-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.0-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。它对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n\n## Alita限制\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 现阶段，Alita并不会去处理项目中的：node_modules目录。 对应第三方包，可能需要手动去处理。 参考[npm包说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"bd61a0a049b93096c044856c0939c34ed1ce7ba8","_id":"@areslabs/alita@1.3.0-beta.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-K/rz0t/8eEolWzgllUrtAPYOlwHRwgBX1MPELVzBvEdq7tCtmXoihYtx3FQNMS6KP+f2CV/lDSeV+6jCy/FuHQ==","shasum":"2d1600f42c9324d4b47c16caa38d1c466b772e02","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.0-beta.1.tgz","fileCount":58,"unpackedSize":228581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduTQzCRA9TVsSAnZWagAA8W8P/A14j4HPH3iWH+whCHOy\npnRy9eLMPVmFC6qwSaDAEetp185Zr2H4CXwCZGI4fX49jcIoCMeJRIX7Kycw\nvsq8mQ1ibQ3c9mTMTkGu7LyweGfUktFpd9LrEiOl1MZ4FGFGML2Cdl5DP4GG\nLy4azAR+C2aUIIItdFA5aVOsJ2IG49IVnt0kOyzMiunpuELjOKWqJhoFaikd\n9ELKiyngj1XRCPrKHHG1Ue29Spn+LU+sQ3IlDE0k6Kff1PV2q0/XuslRj2VS\nRlm1RxaEBqFKs6Fg03wItmLJ03/uKdfLOGUMdIKhbJujIcuY/BxEmEFKDNhR\n/97JLWueuit3OTsoouayhVCqZgD6PPVIhoFEDT2L/yDQO4grNB19nmSVnoHT\nY+B01bAHqJ5/oU2qLb6rEO7oqq46o5hnabt4DPssN5ZjCHRI+5DBZVS4w0Hq\noi5pGkazkU07EVH5IfdjkNhlrvJ1GY3uEv9BopRCu9wDu+QiBeOqtpH6Tq8u\nU3AqQgWVjazcjWazxQT/YZygkOhENn4yiLk4WJ8KP7yAVoK28zjFrQYrLEbM\n1e9672LfWEACB25vL9iIXyimgJqVN7W/7DOvp4gfwfDsEPV7sfgXYOn3hhwQ\n8LtPdnZSN6PB0cYUSLLo/FM8Fz3vRLSztFzk3etHwJH/zAwACXuCoNOtvkt9\nn2fR\r\n=+u42\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxN68oTLou6sbiK3R9Gt0Xjkr7S+gyI+PGIfrs+fskaAiEAs6kraDBVWFF6ASWsDuEpSl5jt/Vbq17rmlPjOAc0HU8="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.0-beta.1_1572418611084_0.8268586631889809"},"_hasShrinkwrap":false},"1.3.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"ddba45d0d8a9636496a8650ffa402450cb5b7d6d","_id":"@areslabs/alita@1.3.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-tKxpwsI9nqYJI6kF+qLgbaFpF+3x7Cu/BGTxzIlDSgx0Es0iyUgmKlDnvt0+dRoGZUyadCWvmZnGVltxoDNUNA==","shasum":"eebbd43e48fad62f41d2a8c91c21b11266dec8e1","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.0.tgz","fileCount":58,"unpackedSize":230233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduTq/CRA9TVsSAnZWagAAR+UQAJzh1jDlipI4GyTB0eCI\nyAM58iSbSq0A/nug51vRNLTKU8/xiQAQ4/rpJrY/t44dpND4AJ3AYJp91WpI\n/LLvg8MGcb5WJ/tWF+cDzarL8uPoo4k7EgdT0+jbyrSqjsxHHWwspqYn2fvA\nQKv7lvfEx1+Cqa5CbCN8CCQ18DRtfFlGsQ1wuRsshpqYobNt8BygRbMUSXoi\n/yqsSAYP2EBA5DW66tnnv84O8gAQ+8GsiUr/ZK5DdUFYSKjoeK22csJw53SE\nfhgsM//jWxS8eopze/TT0/IFxdIhgJP0qRQzijgMmh5vsEc64q6m7nKoZE5X\nPce7lZMVRqv/OoUFR2ejYUYiehoi5W9ACzdhYsQ3igdcs6YxqZ1NQe+KKtqI\nXcZgcsI9IwdieODCvixPjLVEXRmVNMcXJ+3ia7CGUZoSeJWuhwo3PVIYk9CH\nYB1Azf1sftsHKn8jrsgtHRUaRsOlMOLCQQUseBRifKReEdU5jG1IaTa/VZ/G\njLTdUWpYOG2j2HhJAXkvScH+HWurVsk1n/41juexFnYfyPZumzWWzTbjCayD\nLccztaaQP52ZVGuTeB/l2gUFM2uNS/eGDbvhRh/KV/fNQKelpf23SUv30wQW\nAeIMPJRYoVQ484x9AaVMn9mFq5zg/x2YLHM5kTC9rikLN7LSyVmpahxM/geD\n08xW\r\n=vkmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtOeMNiuK2PJnKoCa/5eIXlTze5Rl6SS8NRFXmP6cuOAiAPY6LgzpDDPCMLbaqTdr1uwBS87LhY5+Y4l0BWH14b+A=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.0_1572420286908_0.33804742829359347"},"_hasShrinkwrap":false},"1.3.1-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.1-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n\n## Alita限制\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 现阶段，Alita并不会去处理项目中的：node_modules目录。 对应第三方包，可能需要手动去处理。 参考[npm包说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"668bc3e1be3131374d4f2d17ebaf8e3241501d1e","_id":"@areslabs/alita@1.3.1-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Wfby3gXWh+aZWtywxqUp9KktzePWQ/unJirUwZBAMJMA0ArQnZSULDKYquJuV0yIXPwkPLEN8G5DLqfwP2ycFg==","shasum":"df06b32520264fb6b39bc1efee6c2fe62e4defc1","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.1-beta.0.tgz","fileCount":59,"unpackedSize":245067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwoNpCRA9TVsSAnZWagAAYb4P/RAqrfmJjkLq1ys2mdsT\nPMVMyoZEtV9ZmIYg4B7XOUBL2D9wYe2F0dm3K7jyndc0wTF4g1IkFnlVUPFV\nNVnUSRDBf/MCDhBnbDsg6S6mcA0tHK/+rI/wLTKXLRG9OG0boI8wr/aCo9bY\ngnYndR1z7+KvUrqvj4MogRFDzGpNpi667m44RXNYT1kGJXDdh6t4g+YpPtta\nKMgvPGETKZjHDFbeNdDI1uKWVh+48s7zpyWej8yD1t1CGSooE+NL0QXKDKWW\nhApcZYg6R0uIp7wC66cOjn1EB/OGh28/dBWEq+zwV+kYXVzid4A7WwBz45Ed\nBAVAKPPXg5VILjfk2+9vXBE02/Bv9vqOvmelrYV1vreoj3iQLZuv/J3c3FAf\nPDoNs+X1SR1cc6MntPYdbQuHRkvSUkG98n1O0U4U29TctEvSFmbjhYY00hq9\n0rmaEAsliSYP47sbzm6Zo82K8YOlvCv1FERdOMrrwlGuJVcr00Bojwndf7/0\nKwtcnpcsOTlzXfZfZyZsYbn3CFUYczPqa9R3/gOGNn87jJp3Xi06RHpUTyhP\nu0ht7r//0/ICCLBD1wlGkDzPUQzxbwJpoYd2w0LXaBOk6Apn6z3E4HVLE2Ym\nhs5ifM3lKR5z/8zEIspRf3VTWWxL6vBQzGa6lBidKmkIqKRg3ja92F2Ig7fo\n4im3\r\n=nUxz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSF/v0uS/BsTDIpqRGI+w/0w8InGmmmLaWLyS/U/I+NAiA62MvgYH0pfr3oc//Lo4d6RrqZJk/iZr5OARbBbFnj/g=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.1-beta.0_1573028713107_0.950656058034232"},"_hasShrinkwrap":false},"1.3.1-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.1-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n\n## Alita限制\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 现阶段，Alita并不会去处理项目中的：node_modules目录。 对应第三方包，可能需要手动去处理。 参考[npm包说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"668bc3e1be3131374d4f2d17ebaf8e3241501d1e","_id":"@areslabs/alita@1.3.1-beta.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-CAYBzqiPUc9JsCofyh/UyisVDOFa5pshFcZ5SzRxKSil828ygdNnGHqkkRHlrAFywcumwK4MTXLS0RaGVzJS8Q==","shasum":"028c143ae628299dc33a322699eb575df850206f","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.1-beta.1.tgz","fileCount":65,"unpackedSize":265558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwotECRA9TVsSAnZWagAAI0YP/3Jh9fQQXQTAds2OEEsr\n0k7FS1eOkXxJpZLwSSe0INN4rXFiu85Q0ag4bizRsBBEwxTNidxSpm1iP4td\nB+u/LFQ+pCeEhhuGWuMM03OAE+ti+nN97Ko6eTOnN+7dnVpEHu3aYwhOQoXi\nIWHHmomDqbip3Fz7HhTiew1pT2b81hI+xkb4Sbi2mN2VX7dTRitvpw2UlsRh\nwsr3QY3Wr12lMXFmtp8ywvzJcuNFETc6D1tlNAeDNAog5JMfnr3M2DcaHsm4\nSTMeAh+QARNtwShYr49DvbLKWCizuhsQISR60vXhhuwpw4rkCMzFNaseaAE6\n7ckLXo33N0k6RsttBYVHqIP1lQer9BymnR6soZJ1FFzF7Y1LRoaaW8oszfmx\nt5jiXrgKyb003YawvL4rcFJAo8UnC0GQW5gKjpPx3s54h7uyAunY6gh8r1Of\n7e+UUWezh8DGOU67MBgvFvz0aCzwor1sjqSIg1kuCMTkbQLx9zY2E0g+Y9ZM\nwYnM8J8NW+Y2ZZXv1iihEFZia/fXEYEn1wSumruJdx0B6QKZtNOk8q8V0fDT\nk84w2LqQIDax6awBpodPZx6GI6DdRyoplj9JmK5J1KbWPgRFOXVC6QXqfVLK\nGs+O/GjiG7iY3HJCsX+3lRaF317yqlLIe1gAlnlk8kD5vQAy2KHQa4i6+Hui\n+p+H\r\n=dd8s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmp7tuBgbCfxB7Hp/WZWo8isuQGfCeAmHQV7QsxZZT8QIhAJEDfEK+8W1zLPRqdMEbPF8ccyUyg2hXp2Yr8UvdTv3R"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.1-beta.1_1573030724428_0.48148369947434055"},"_hasShrinkwrap":false},"1.3.1-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.1-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* React生命周期\n* React Native组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n\n## Alita限制\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 现阶段，Alita并不会去处理项目中的：node_modules目录。 对应第三方包，可能需要手动去处理。 参考[npm包说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"c44b170742060a1f300df7a22af66aab9b689b42","_id":"@areslabs/alita@1.3.1-beta.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-uXH07HeZrwMYlGI708sJMlfXAypQ7Ju22stsrr6eyLqYKt/lC4Q90JbG7QBY36qWbybi6FQ/+QtBu/pjuCJEIg==","shasum":"b2b6464dc386a4bdadbb0cc84d5db53561a44e94","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.1-beta.2.tgz","fileCount":65,"unpackedSize":265457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwqbhCRA9TVsSAnZWagAAUeMP/R4rErTPWt2epFwlk8Wz\nZWRT+ONnMnZn494EvYvJLL1624JUfGilXZVykQ/7WMcC/gsAV61D4I2mtd7a\n/YDdnCm5HiQL5Li1I7vkdKegCEyaByz2P/2Vwga5gE/WTYvrgNKY9TagBFOI\nvNYli2vwpCzPOmM1+dVAQr+PeP/5BMioi1LhdC0dH7roL5TghVRxU9GG/KVb\niGN3HqBtntZHwpbhIrXTth4m5Y7ruc805G++MtKhHV/CL8DjjXe8Q1naDGX+\ns6nl8g8w6+pSqixT+nWiiCaeP6+EE5ENJ47ZTmXDa3+NGOOlWiEBdm5Deiaj\nyb+Zx+i64bkpHIgjb0o6rF+Ka04qfCt4TRji7ptZve4ClqOuhtUUctCXLl/t\nomV7i8HssEsFyQ5Rij+299KrpKjF3hozEJvzY9KRVITdpg8WxsKwcDkiFPlM\na5PC0pXmVXl0GPet4lYtUivWaIVAkqmXjvCzzYwUm+sMvx6wFlLRTjMNUuK6\nBte4MY8SJlovfA/sOJLdKFlL/tbgmZxyK/hHwGeRzxClfZl/76RuxACZbMn3\n0KDi3XWt9i3x8/fXZ7KvJRJVbv/v2+s9BwMcdob+l/C+/IdHyqk5MrKexjXa\n9461rs4KfpM4mVJUQSbHulIBnaGQ3g1+nD3YWtmF2nEyg3XN/H6kR67kPWxc\nMSuZ\r\n=r6wc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoo+lm1+7GMqSEjJR1hj0Hdaaw7pZLj5bSPLzoVHIxpQIgEPXki/DxrDCPkvn7ygjwg8UWNDlUg6UBDojQtMhX75g="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.1-beta.2_1573037793245_0.52756279803166"},"_hasShrinkwrap":false},"1.3.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"b78a4dcaa7bcae35caa381677e89208353959c3d","_id":"@areslabs/alita@1.3.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-d16hDwLVLEuTHWYnkL9LX3WwzpNXfLqskB2zJQzBba9tHAsgrJO2dgEQnlSg1sEkfnfDDlCc1W3pSKp0iv/ivQ==","shasum":"1f913b2698b80506e82a7be3390b630e9d45a7d3","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.1.tgz","fileCount":65,"unpackedSize":265450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwsNfCRA9TVsSAnZWagAAyvcP/2otLRhpjszjIFNLe8lm\nGiEjjO+RxeP4jg6k6pOca6Vy0XrYWixWRy1qzz9lu3GU+LnE2bAl7Au+cMHs\nqvQPkztsb80NuZdwiyyhdCJT/Rx+VVadrfHGit1nCZk47jIj8VknTlcvCR8o\n6ZCcJcAG+D/FklzoEC3WPFPIOM4DiD3jVvvQedHR9rl85rak75FsJyMSZyYs\nmdHNWHwYNkQe8CMRlEsukZBjYFkYrGz60asjt9c/KM0vqEQkWqlr8aBtdspa\nr4g4Ir8bYNHecd5r8YJYIHeuFoleT5VAkU8tlcAIiWBiJZCq6r7ckD20lVmS\nog1YWmyeO+GqFc9dgLvZnSWNQgz8gNTXVKnbcXtMTQ/l/9/kckFiQhARBYes\nVgsdgFpHaqZyEM+5YQEVkubHxJ3tVRtzvkuWitzwOnERRGqhBh4JKZmLLlLJ\n5I3fsjvI5W0+G5guTFrouP9mLH8nCNRkYNREUbc+ObE2AOPkD6UeMiFsUvBM\nmKR2mqMYcVD1dh+8sV5f2noCUd+xqH1C3fjGaCj7RRGh3cTkRtXWrDE5b38R\nGjlDqru/h3qNZ6jn8plKmaCmvowLZ0+KvDasar5a83ymNbiaaW6A6lzNJHML\nfIG5bxre37Ol+H2E0cOiwwHhn0AUq9toadE4PMD7VXtPX4jRyWhTQ6dcMZGd\nfVsP\r\n=8xED\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1EU//4YOaWOJv7Z1ZwrdS2jLBtUk5zpWOC5oL15c2iAIgPRwvf7s7HHlhg4TgY8RDaFNRV8RwOO3FwCO70WZ7Tok="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.1_1573045087331_0.19237529455734248"},"_hasShrinkwrap":false},"1.3.2-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.2-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点要求和限制[详见 要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n## eslint检查\n虽然Alita支持了大部分的React语法，但是还是有一些情况Alita无法处理，比如原生RN动画库。另外Alita在转化代码的过程中，使用了一些保留字。我们希望这些来自Alita的限制可以近早的被发现，所以我们提供了一个eslint plugin。通过配置此plugin，可以让你在使用Alita转化代码之前，对你的代码进行静态的检查。\n\n[详细介绍](https://areslabs.github.io/alita/%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5&Eslint.html)\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"489f966cea4b0a31607316305a0328c836fa0444","_id":"@areslabs/alita@1.3.2-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-wS4BvXbJBxud4du8wnV1pzSNEnGzpOXUayrb3giUHLM0R3c/bY73SmXu1sUy66ROFLqVnYJBPpmwT4s1KDsIig==","shasum":"8b232a20ab91eb422f47299e57bfbc1da79d3b99","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.2-beta.0.tgz","fileCount":71,"unpackedSize":287566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxUDzCRA9TVsSAnZWagAAurgQAIvlNDxxjkzPjWEejN+s\nhHbIXodBdx2rJETh+EpZPro2jj9OnhiPfaotyhkw1PaUVbjxMF2Lj7ATH+ck\nAYHClui3jfqa3q2TnurUPsm932F+VnI3lDKmpudml5kG1l82yhweklcstC08\nCk+ciQFl0ddcUVuDKfOkJbFuPzi4DjqWh5g//sarjrW8ieJcyNmk7J+ztAJE\ngGjQPAHzti14VH0k0CGdnKON8392Oiq827R/h5ZizmSG7KGfngqPuZUu30os\nVwaNXsdsHu/7vnXKmDeZUIf1p0it3E+qeIUFwOKhZzYZcLmiYHLZFmu+Jo5j\nL1GQgMMfZMXB4FDQYe5UvH85v2/aZARnGoHFlIRFL4cD06Dqbl/6uWSnecQL\n3KHIkkyWnzcPWPeeqWlN16QjRxUmuj70dOazpFznux1lFnfHLmQ/1QBZ9E9+\nIFUNLfiaGjcvQH1GfniXJjKaKxYxsAQgYONJK71SYUlP8Jx9jb/ff8oEm63d\nc6J6+iUgKdXFXHc6XZzByVCQQk37YbZsh2+Wx+KZynzmsRok6QhpDTAOprnE\nkTQj9z2kK45HeqrOq7c19uTTJ2+d8M2kVhDSytu9gPlQsvidXwvPmQkKNBWc\nCC/9K//bIOFsrzuUOtFvgpIM8o6EivYdw/Rgu2yBQ9T9hwrayEfJnDQ2NCD5\nL8tF\r\n=Y2/Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZfLh4NxWxidK/5ywjgDug46/LpqiTrah/uz8g751LaAIgO3k98dDHCZ2IOnwKO1IKzuhz34XoFHID6fwQyS9vYe8="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.2-beta.0_1573208306936_0.47958994818996303"},"_hasShrinkwrap":false},"1.3.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"3e1d1d8954a9af487802462c34ffcf7520025277","_id":"@areslabs/alita@1.3.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-tqwSmnvun6FjPYstKp1uOOcec2PvPmX3iPxyQLxFIg42OplGMZepaAAYne2opmO3lvJi14H9XFu+4ubTDhqf+w==","shasum":"30530f72e56034ea9da6dcdf8b828b92c55548d6","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.2.tgz","fileCount":71,"unpackedSize":288659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxUf2CRA9TVsSAnZWagAAXDcQAJNQCKm2dwccFAOgNTMJ\ntUkthIFDfmRYSxsN5U9UIfuhTm7D2PGNs7msm7o6IJQVpoPCYISovB2kNjZQ\nwojNxyAThs7Tbf8lW6MUPmlH8265G1E8OhK0har2SflfQbctpzoGpTqAijip\nNucQcmnYKeOVIDt3GqPbePSiX72GBX9/LQeIMWb9ucxyGDsiNy+R64Zy4wnB\nkUf1ACJlSCWup2snZE/nEURjtZdvP1FsM4ONJjNvDW3Xp9FyYPLhOitgmyRh\n/3QI4gIkFGIrgLTSrYoDDTBlq/OSGMYTJBkpH8UJL0io1S9M+nIzu6bZdYZB\n4vvjVPMCQVjlWHwFSPfIOn49CJ7AXmLwws1V61/toMU44mnUQm1rBQxwApox\ncyASgHSxLEKUBUcEvMLCpveRyYJWqsETPggpRnCOlbxHV2FA377M+V8xlqp8\nAjHKoy0a1nIZuHpt7zVYb0RlvwW4ntMxRbcc7APlh35oDyMbXxHY/QKaXe63\n9QVS7sxMB6pTVK9F5OoVpJYoX70dp213zS1kjOJbrijwACvBn2Bzrv7wt0KR\nIBcgHP7RBk+0ehLcFmgaB5c2q7/kNojVT3Jy5+Fy5pujLVYv+I51DhfdbAVi\nP7Ju2h3dC6O3/bp1Z+ac4hKJ0CLyfpNTx2OxbKRW7fsLsCMexcI7czIyqzCi\n5AH5\r\n=la3k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDa/WT/2CBPynHlwlwugTTdMP4CEYRHMTV1EnOOnbA4tAiBy1xf7ckCUxAOAsgs9wxAtbitWTfIwPbAvkaaLUQ43MA=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.2_1573210101966_0.6135016709273551"},"_hasShrinkwrap":false},"1.3.3-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.3-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点 Alita在转化的时候会对 **代码预检测，对不符合的代码将会给出友好提升**。 这里可以看到相关要求和限制的具体文档[要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"de2979f060d9dd2e1c22635f0ec88c06cd37be66","_id":"@areslabs/alita@1.3.3-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-jphuA2X8iI3mOSmSTWcoUVBRLE0pCRnBBYD8AmgnFI5zxyO70wHwXgYvqJ38TSQ0xPNYcq0oa2h6dsCn3C1mdQ==","shasum":"cb50791cb4107f2e0ecc1490f3d5da5a5c78ab82","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.3-beta.0.tgz","fileCount":71,"unpackedSize":288097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyTe5CRA9TVsSAnZWagAAQHEP/119s+TQlkr5WlnU3Clf\nk9mJvjOt08sBmRia+zWKbCqoCCbiJphSb/xj5UQtn//so79GqFoi9eEfYu/J\nYrr0kpj/TIoDBYw5Sw57fAT3PDdjQdcXk+5oU86punsXDxMaCF3IiE81kVcc\n7CjPpbw3HDgEzVq+Xo2nnQAyFv6xfRrGtEMkxR0iH3/SbWPqK6SI6HyZhw/9\ng5RnHbiJ6IYL7DuO1+X0SWp61ynDum7Yw0KrmsXrRVcdJn8cw5gFq809P76r\nvPKwjDJGU7u4B2d8JwWl9nUmodoabi3ALtN+yi2zG7xUwwMVMZQ0/NKeOn7U\nuULARg1GWfw/gyVnF0nOo1pmRIExWO3Fs9jusVgFvlZzdhyQdIdJLC5j42d6\nCnu7w51Vesh5NGvYIRUhvya+BrcKak7XDE4R8be+3Ozj0BBczdY3M2yAxlRO\nTE+YFUqUAcpWtjfCk5uUHQBnSlqRqGRswbERREr56wwCVQm4v1X3kYafDzK6\ndNEDp4ioDXe6pthEd9DhX49rJfq5r9Wrrn9p9sY88RVW6+kGrUx+l7y5Tr/o\nq9Auf/aJfdGS0BJWBmRiXRJDCMGzD/jQO4yETa5tsDV2y5ZV69zjhAErkNK9\nrdliWqfiqRCLQZA8U9EAHk6pJgB/gGzT0C52VPsHyQPKSokALEzxngKmeMe8\nuepq\r\n=pt7S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWy3CnAyzzrlGnmBwKrttZ3VewT1iQxcFIOooAmnImrAiEAqXqG3r2hC8psJLCDF0DUQ8HdTGz541snRgv/pXbPfog="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.3-beta.0_1573468088959_0.4382900088325641"},"_hasShrinkwrap":false},"1.3.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"8ee6ae79d829d94eb0fd54a1c96708b5b23d9166","_id":"@areslabs/alita@1.3.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-kLJs5VAzoWJjVQZr36MzOx/pkaralJ2CkN19aePbK6M2uXqdqP/+LsrsvH4g+8nSzOU8U9AYaNQefAD08SlhJA==","shasum":"b7cc1dc64c13dae8d98d61dd4f32a6fe9fb37bfb","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.3.tgz","fileCount":71,"unpackedSize":288090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyVVZCRA9TVsSAnZWagAANKoP/35rwMHqbSylByJ7Ghsl\n9rpBwmqrU8VGX+pGaGjsM/IuYVWmuQ9uEHA6+QW78ElWRfnnOrmpnLG6dsMN\nZhBg+riPMdXS6wo2AWbGBoSBjrM8FQwKvT9gbb66mwDZkECV0S/t7W7fvhLA\nX7O9hZbqhhxSFWJC0jiFGUWLVWVy+eVxHbMIjCy3gJIkHntXd135t1AOMO01\nmSqjpdCaJNbGu2pPKe4Fj37ZNE+rIGFTfalz9pd/ivNtr0wyBead9V8/cg2E\nomoX4nU0NFLKJm/XwDQnptpsDf66hTxwBmUBQJ/7U1L2E19jZHoVpsS1V7XM\nlbva4b8OdVMRE/RTfw7rU7uJZqVa4nSSLb7t8/cur4B2t/SIA+coTHCPnikX\nD3w0tGoQnN3OxSG/OHu4lfZYP401YFiwjXrkVReJWKISYUKA9ZD8Guo+dJ+Y\nmkFyG2c6tR5o4qZsEaF/AKuClXewVRSUKfVFkCn98qR7gOxr5kFviv0GUeMi\n/YFruN+iqrJgp7Oy6yWRbpnVr/sdEso7Vm9lXRtaFk2ZZl3K0nvg+VzbvD9W\nqXuVd9g8J/pzP30m3/4OXT7Qpx7BeB/TLw3BxeUyUwATHvWFMTS6dYo0ZgxL\nPikkWCPeyI+2C7tWLLTZVazuDU7yhkgIKY8p4F5m6mCKrVgCV/4BbIw4V8VH\no3gD\r\n=fpoG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADPfIMsvYVFR8lhjO51ibvrGBOhea3mvmr43XPxcFVFAiBrM75kkfTOprJE3qfo/31XvOeCIuyVbbka0vgvHjtiEQ=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.3_1573475672941_0.8158572194931408"},"_hasShrinkwrap":false},"1.3.4-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.4-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"94a1600e0bb18148265e083c05a9ded65d4a1965","_id":"@areslabs/alita@1.3.4-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-J9CB6RjX201N1+7cO7JfZUYkV4h/691HWbYw52LfRQ84ZtY2n7R+Io/SymBs0CYYAgD+MTZUK5fLi761fIDSgw==","shasum":"6e7b3436a648f7ff50c8c945d1cd716956d73cea","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.4-beta.0.tgz","fileCount":71,"unpackedSize":289092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy1uFCRA9TVsSAnZWagAAc5oQAJakUat1KIkZdLbAjCMY\nmrrIqr9wpifO2nqNTBx4cno8/t0hSjurnPhXL6itB28jWrfLRed/nV/inZnb\nAnCvJh5LvtmUSC9qZo1Syq7aFyjQSY72l18zCGfeigZ6IrvCFTZQ34mvqlPb\nTZnZXKHzL2fcC5latu+LETvZpOugxghSg4TQ2wO1wNhAEwA+Bjo+tPJl2Vl0\nLFie3VSEtOhL28C9V0+AcT/WJrz9X2hgJhfVDfx/fRLDDIAa7wn7nlZ+Kq1r\n18OEzFkrJVbfA7+U3Xvtn4RvG/klELr57zrHMWgpdn5QC/sfJtTQvXW35Una\nyBxCYqqF0szIgO1OEdNJymKJtCLAaG/cUMYrKKkwUgfJRZ3Sxg2WswoLPcXw\nvKg8SkWhiMuTsDGzJFoxtpWpvadCXR+2+nHIZe9W9pun+Q2eOUMpyyYscfxo\nHmYLbtur7QWIsEohXbiSJF8rqRpBrgjTa9452DLgOOgDsATgReHQcNcdzCJr\n+lem5FN1i0hwCg517fp9ghnof8mDrhx3sGq4pNoIiUTglHyGv+jH7f+bnuIt\n183RDc0ulY1peinSdJVfTINOdfU+kvHbKeQmyeIBR9jsMJ54gYZHpU2AiVSA\ngssAsjKjCGAHz1VY1KQ+4okCrFbsfAje93kZaeyDfGioCRCJX/Q5cgC/5rx6\nCskk\r\n=cjdM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3nAWRrSfVx+6sjW4yjnxN6dar7v26huW5kRl14nesCAIgZiirqRsmjyZXaw/BqTynq3YteWc/xEKQhheMEBFsH34="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.4-beta.0_1573608324709_0.1220722696482146"},"_hasShrinkwrap":false},"1.3.4":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.4","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"d848136b3cb2171b22570cce6921491baa68a3d0","_id":"@areslabs/alita@1.3.4","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-szFUs9KsmQmL/KFLzbNPk3UZEQrcx86tWkGehYI1WA2y2zZrjG1MpP2+0AAcumZ/KBGgFhVXaZH6vJiVAmdbcg==","shasum":"faec5c1042b5d068f3520c16dd0a9aa61a1e1edd","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.4.tgz","fileCount":71,"unpackedSize":289404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy2JNCRA9TVsSAnZWagAAspAP/25PhrgnIe1CTQ9nEHXb\nbXxfaiXqGkOC6r8agSCJwsSiAJGnclST+WyYwjuE68TGYD7sR3MjvJBWNNG6\nNO9Tpw94ekA7RYp+0Gi2xqW2Jl42MQrevygjNH/5fFaKTziYj59s5wKSC7AI\nurcpXbsZ6msmoO0mjOdGwJJU33elp0+BXqT9BH9pw/ehmB/tuaE+LqOMcaNI\nCi2mRQapUTbwxA64fcdZiANloDhVM/1bh+5uJDST1J6JWoiXEXUqDZgjVYY9\noDYHriRc48tWRGPl2WegIOxz7b2Wm1wNFPzWPDvurOsu9WP4XTzFykkKrOev\nWi4Ep/qL4zOcFlMc+9NG09sWAnIQiz2eoVVY7udnUQHXEW+02U5c8dp7goZo\nfsmcq1GK9katjwJRrsOiZr/Zem0xeBGDmQGpLhD0ez0VGN8byRGG+jiyNXst\nFlakdT6r3cZN6i40TOFLSPX6GLfBvko2w11QO6b7T5WmJHas67ON8cfERjqU\nopCi3Oi+ySpq+ln6UR68Q3JcZvcGFxzz6L3IvQjd3hDjCwntFQrqC44IqX3W\nA86xb/73XAhs6Rkxd/lD1f7Ddq+zYy68r9Z2QZJTTUZ1pbsoydjE2kSLXiUO\nNGhA1tM22DvWhHdRwYt92m+tmJkjKWqM5QWTjO/h8Z2MRJdpwl0+TdMjP/vy\niuIB\r\n=Nrie\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJFZ+hhAZ1iIjGU0N/wC6aB5yrQ862c6EH/Zyutroq/AIgJV9XP6vDJXV8HR1lGLOayvKMOMZ8x28AtCTaC8DPG34="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.4_1573610060936_0.41585908569429564"},"_hasShrinkwrap":false},"1.3.5-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.5-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点 Alita在转化的时候会对 **代码预检测，对不符合的代码将会给出友好提升**。 这里可以看到相关要求和限制的具体文档[要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"54c1a086bb62996e7a49fa48d3af633de055f14f","_id":"@areslabs/alita@1.3.5-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Q0OtSieLcbbm8UAp7WouiQZfbe/rsrBSNz7WlFgI9r6LopANtc+ItTU6ogyeFP7OZ+ZAtsWAdFiqlwAmxUlitw==","shasum":"711740f212230b02bc68dd78b9377384cb1aaad5","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.5-beta.0.tgz","fileCount":82,"unpackedSize":321226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3h5RCRA9TVsSAnZWagAAG6wQAJtnvObpzKmO1lwYsVEy\n0PB1f2xXosQdAr20R7ncguqbdGYuUq8jR3Lmt43Nf/E+jCkN+r0WxpOTn/1e\nmLfcDkhzEVBmwsRTUGB2lmGTRUdEaItxK4Sn3mR2COCfOvooQYlxtFzCR6t+\nmQ2VpQfPFDjWHyhkdqaKek//t/PV8afCz84w/2jNwVZidNy8zWvJTncc+QQP\nFIel6jSpcjHLkyNtRDrDvZlXlfJUxysJfqdwiKeAzaxVSL81+Q/httSOQd2Y\nnwxh0LZXLTP05zQYDIUeP8wGUd3GWM4Z5xcw0O3E4KpQYjp8338MfGUaH7Wn\nZBo/Kxx2QGeCWVaWkCZtVHUviqRQqUVQPKyOViSwSjhb+vvkJJVsW8B0wOqf\ntAASL2EdMlwldOpu/PqAW/GtDf13dn2ecUsqCis3ndJ2Qsoi5MnzkA+jGhbJ\n30UTeoz7+YZWGxWSvF8lfVmQ2kbol9ucdReE+cCO+whI9VGE3XhEFOfiVyLM\neM+K+gUzOwQjtZNg2P2+mf70Mqd8IJ/q8e46W/TSySC3OiHPPBUt83740D+v\n2umxVhahtjguWUvzaP+u8RlxW5EkrBGoCCgOBuz/uFcd+Jc20fPDL//Gg0wo\nRsyZEaqyrXDr/hs4w3c7oxK1FwNMBzTUAxyNVzjAH2dFomP3eKW+1dVs5qzl\nryNa\r\n=ZgxJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbIJLzA6tddVACLELad/0LxZi1IXa5WZ4xNBPoWG+3gAiBf9F4aYNWbLSs+3KfUUfYUZ9gKWtvK7whphqT0EqPa4g=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.5-beta.0_1574837841148_0.38800990628348675"},"_hasShrinkwrap":false},"1.3.5":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.5","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"d58c54188e97a807daa72c6233475647eea860e0","_id":"@areslabs/alita@1.3.5","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-vW2CqhELFFePinNhrNBTTrV6SejiDCMsHC6JAI592P5oRuNHK0RZ2X0XaVnUoyc1e+E0e8YaJvg1tKHh6/NgQA==","shasum":"bf8e1688b62b8900d274ec39f0b3ea79b7fbed8d","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.5.tgz","fileCount":82,"unpackedSize":321916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3ierCRA9TVsSAnZWagAAjFoP/jxHKLZuoCpng4vO89Vv\nlyo0AFuP/zT5cUjnfPAklGGs1Gp322H3rmDJROkaq/E7dmPJh94JtGM6iF1o\nGltZCKZvpPPrWJaNcVkRJqKuItzb5uCCf3WwUkmDYq0WNC0LnJBFTj0/vBzv\nVLl3GXUu6yKacaaUZAE2RWffMoK4xwYe8a19u+luyduLipDyziTivskgJz7d\nRQtI6u+UUEQnl5mZxQ2BfUH2HM64+/cbW7wsQk/7R0xKhgaL9igOR728XmVT\nSt5v8hyGjuvLUslk3bXzvtn0bD15104SdSIrFx7daTlTkI973k9r1gXu+U7h\n5EKKOwjC1u6dhjNBpOEAqwvpvzgozQRNYwG2ZUL5Ba1CNv9Bc146OV+GXGcw\njau9pIdL+jUXvEwBdgS1jXs+ao1uA45hRnzLOUNonUhJ6dmb+M9SJRvwFLfB\nMvYNkMoeCe7vtZjt6B8j0Fz7PAamLMnKAXfLUptucTevv+90zgPqICVpVoyl\nvGO5vig1asICN0krOsDwf8d54icqTJJmPz8HQ42hDf5nK+nbFGVtw5t7KIRU\n05N6xEVCucjWydlhfxVum59cn0KC4qqknbGFy/7SCJk2tVKTWGVYhgDwT792\ni/CLk7lWADv16oggw0HrG9I7TfeBBOxb5bVqBy+MBHF32XS5bXCf/Fr4XHbX\n/124\r\n=OS78\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAYSdc5IlaACrDuPq8f4ZgsGzugNu4Kzhp6IuFRA4GAgIgTYoRABrJ40hHPX2RWqzcDqRhhNDGcw/RFSB0WETWiSQ="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.5_1574840235198_0.3340375299726246"},"_hasShrinkwrap":false},"1.3.6":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"1.3.6","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","pubNext":"npm run compiler && npm publish --tag next","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/helper-builder-react-jsx":"^7.0.0","@babel/helper-plugin-utils":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.4.4","@babel/plugin-proposal-decorators":"^7.4.4","@babel/plugin-proposal-object-rest-spread":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/plugin-syntax-jsx":"^7.0.0","@babel/plugin-transform-react-jsx":"^7.1.6","@babel/plugin-transform-runtime":"^7.5.0","@babel/preset-flow":"^7.0.0","@babel/preset-typescript":"^7.6.0","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","babel-eslint":"^8.2.6","chokidar":"^2.1.5","colors":"^1.3.3","commander":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3","prettier":"^1.13.6","react":"^16.4.2","regenerator-runtime":"^0.12.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/node":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-react":"^7.0.0","@babel/preset-stage-0":"^7.0.0","babel-jest":"^24.8.0","eslint":"^5.3.0","eslint-plugin-react":"^7.10.0","eslint-plugin-react-native":"^3.2.1","jest":"^24.8.0"},"gitHead":"3a893523cc7022009e9c335263e72ae4e96cd76c","_id":"@areslabs/alita@1.3.6","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-dv45TP1Duu0HrDxtL3ZcNacttTcGvRgHVW/4oLQnZ6a+wlC2seIQ1zMEPTn6QX5AVV0QHcFczFp/GQd7AFxKGQ==","shasum":"c552615d4f43186c3b8f762a21593ee469c41e8d","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-1.3.6.tgz","fileCount":82,"unpackedSize":322155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3jSZCRA9TVsSAnZWagAA+m4P/iyOJAJxSoZRJ+T//IQl\nLQWwMWSVV9cil8811ZIbrJ44ZpEgn+Zrd5TdG46aZ+en07Mk1sBu7FifhZs3\nzdP2WyCRuytEdfyl4KSdqxj84zSFxZOKKt5LYD74XRm6SMqoY0y91XjrSFAZ\nNqIPIav6t/Vp5IodACw0k9zDdrZWb+3gkG3sVFtySt/kxEy6lLIfOPYvlesz\ni7nMZyE1eCFBq5a4G6JoYe197jsNOqJaC0T7kDF/DDu19bLXRaD5w33FeXJ/\n4XUWYbtJdbDEUgeFBLH7nuiRbw9xcpBIEuiUSlIyn1o7aQOqL9TE9NUrwjS8\na75AaxAI6+gx/t09gyWVMxiBrFEBrXvMXQSRvSCyLnppHnseKC91dnoRsCjS\nWve86wPTb9Mz3RuaDBu13aKhyYETTsnXAZHfZftsSZtnjTokqwOBP7wnZxd5\nhrDlSGcPrH+p0wX1mI+oLwZ0X5aCh0pcqmvSeMz2Nvb8FuDvHFps+R46P7WL\nikun4e1/DV63oTqtoGf0tB3I7f3Tl1o33MY6Y9sHHFlC1M+V2K0Bh0Igqh3+\nrbib2ALJ1YaLNU/h4ThEm4fbzT6DgKV6fN0ObmmnCJHHMEaFX2jMjEW7cPEW\nR3DOkgnspKA1ytKXhYEPxKAiXHyjBu1Nw+fhcleQ6Qagg6a/M4MwnnVF013z\nWM2c\r\n=i8k3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBEFKFtwqkEb8smqoHTgVOA/xbmCzAQFUaPlsHB3ESagIhAPmvzRMM+zNVeXHthAn+r4LJXoNSgpS8k7UCgmvAkT5W"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_1.3.6_1574843544605_0.27741207694743086"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.0-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"npm run compiler && npm publish --tag=beta","pub":"npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点 Alita在转化的时候会对 **代码预检测，对不符合的代码将会给出友好提升**。 这里可以看到相关要求和限制的具体文档[要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"d017f217720107e24aefbb4e2aa02ef08d085e11","_id":"@areslabs/alita@2.0.0-beta.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-KdZl/maC30h5j0Ttn7Waq5bW3iHqlUnlT6n8es+5oseYlIYb+q8BhfhOGFTbWuEQb/gMa8sB9dJCrrvQ8xNLrw==","shasum":"5979a3e50df309a728c3e1cd972f95d576ee9a3d","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.0-beta.1.tgz","fileCount":106,"unpackedSize":362581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8ZTfCRA9TVsSAnZWagAAzSIP+wSI76lQmmNZ8Sfe+LQF\nxaax2jxrvyTCJQl4kKE17w/cRElRi7KCv1KVuJ5O2ygkVBGKuO+eULyq0CMj\nm2xvW2/DVmN19g/1cBqk9FrBGPTPgvRMQbHBE/FgKmmMtds6We767EvGPwyB\nE07eXhF5o3hJ/RLIXkoY//Kv1+paSXvGtvRLaaUhDYB0KT55vbfo9V3xkORB\n203y9PwLScJi5EdHg82maODcIN1d2lfVmpsUjFcrAxuIMqTBz1vHTv/KitfU\na6SDTD9NCyCLZRUZrvDrOq8M+gOcANtqSWz/Lxlal153+aEt/HsFKvtpV/UA\nDjmuWyU+BvUHTGwmvUkt7X86sEW53Qz2YsxZ4F0Op8j3FU0bIc1QicuhOrMB\nswVwVUhanGmXJq2Hs1joFwkwdCoMZbq79ya4mbguOuaD9slLOJZRGShxbqrB\nqyiAV0RoO5yLSToEy9x5KnEO3L+udMjekIOlzqYxCHHXiJ1mCKVc2qLkaanP\n6ulBnQRUyWCSwMfIha+yZWOLvg15QaHnNUhWEibwqa51z9qtlgp9T+LKNvMq\nIUux3KF4vb1U3RsxfwAjDS4K6mqbsObhU/5SMZ4lPzQb+kaQWh99iPKM0sWr\nduL0LQ6DHM50BJa0Ow8uYKhfQEAahqBpnuTZZDlwCiLBQgJCXVShWoHKn0F+\n0Xz2\r\n=hpji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBp3rJMOG+OLzTrFh5MttlbMBQ4AF6MieK5zWxPVVrKaAiAceim+ylQUEnN8U2Q84L/v8Td2m1qip+hM2Pqp5PKuyw=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.0-beta.1_1576113374910_0.4744380431596418"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.0-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta","pub":"rm -fr lib && npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点 Alita在转化的时候会对 **代码预检测，对不符合的代码将会给出友好提升**。 这里可以看到相关要求和限制的具体文档[要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"edbd2f5303374d95d0838f1d6f509481d8a2a67e","_id":"@areslabs/alita@2.0.0-beta.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-FTYa7GeogG+Q6evr8sgDZOJDDO5DIz1TCB7NYHj6pGod9XviLmruy+cojV+kA+QbbUcfCEvW0UajPqX805qiKA==","shasum":"96cdd04237be4d9bf5c7758db5eabcaceaa51a96","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.0-beta.2.tgz","fileCount":67,"unpackedSize":240196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8aP8CRA9TVsSAnZWagAAaSwP/2VYfcSt3hS7iVxFgfky\nHHDvToQKxY+iAhQwyCDKJrN+GQt9RuOUYG6vsF1U5Zm50TCbD6uFWtFERfgU\n9toN/vqZyCz0WoOK4HNlZ9sRLKs/DAxLeOYPQirJfyB8Kso6md0aJIoJVD93\nndTtUJ9qRwW/pWvactCMdUicWFDOb1pTgD3iSenzrbv5rkOdYZdOwwLwTnuZ\nfcMpPqMKn8Hj2zwcbi+0O15lv5ljwEE7KXhUDg6YRvXRzWvQgu9eHVwNkL+h\nx8CDoY6E0KgiNL7WpExAjm8GuZ7IqVhjX31trLuYh1xIE3ufdoDD2oQtUnrF\nRMuOSgaF1LFEqv9YcQlZ8g+Lc+ufeLS+ov938ZBHQejqr4eWZo1humLwA/Cb\nSo5fPT3pyFvLkLdmPfYXSuXHwiCdvdutJdKtnC7+KMTlUcAF7CiC+WyC9TzY\nbxH0yhWyvVjp8FuvxFN3GlJTkuvuU+pxu9wWFS5D02FGzFiOQtn5m8HlPpvv\nbW4rk7gSA0ltLFcCOjY4rLayNLWsJRFGBwaz5JNgpRpJ7s6nWYBvvmIsauvp\nrzEo7qdo+bkiJ1jVhquzp4d0R6g9bLa2HCAEPHX8OO3Qdb8RSuLSJjzN+1zt\nzhzKJUiwzVo5m4265ToDhz3OBm3v+e5fiezzImHPAM3+w1AJ89cQqLxiat37\nsstR\r\n=n2wk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPoSuDPgvPa/EcRja9ZfrgoVSb5JhEZc/oRYx1xkobLAiAD29RRKj202Gyd6+e1ZE6AwoV9d2C+vu/UDtaSF02tug=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.0-beta.2_1576117243966_0.47004902953413263"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.0-beta.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta","pub":"rm -fr lib && npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"# Alita\n[English](./README_en.md)\n\n> Alita，战斗天使阿丽塔，原型是《铳梦》中一位不断战斗和自我超越的生化改造少女。\n\n[![npm Version](https://img.shields.io/npm/v/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm Downloads](https://img.shields.io/npm/dt/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n[![npm License](https://img.shields.io/npm/l/@areslabs/alita.svg)](https://www.npmjs.com/package/@areslabs/alita)\n\n\nAlita是一套React Native代码转换引擎工具。与现有编译时方案不同，Alita对React语法有全新的处理方式，支持在运行时处理React语法，实现了React Native和微信小程序之间的主要组件对齐，可以用简洁、高效的方式把React Native代码转换成微信小程序代码。  \n\nAlita不是新的框架，也没有提出新的语法规则，她只做一件事，就是把你的React Native代码运行在微信小程序端。所以Alita的侵入性很低，选用与否，并不会对你的原有React Native开发方式造成太大影响。 \n\n<table>\n   <tr>\n   \t    <td>React Native</td>\n   \t    <td>微信小程序</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/rnalita.gif\"/></td>\n\t\t<td><img src=\"./docs/static/wxalita.gif\"/></td>\n\t</tr>\n</table>\n\n## Features\n* 完备的React语法支持。runtime阶段处理JSX语法，对JSX支持更加完善，可以在组件内任何地方出现JSX片段，包括属性传递JSX片段，render方法之外的JSX片段等等， \n* `React`生命周期\n* `React Native`组件/API\n* [动画](https://areslabs.github.io/alita/%E5%8A%A8%E7%94%BB.html)\n* [支持Redux](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81Redux.html)\n* [支持Mobx](https://areslabs.github.io/alita/%E6%94%AF%E6%8C%81mobx.html)\n* [支持小程序分包](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)\n* 支持`typescript`\n\n## Alita 使用前须知\n主要以下几个方面的要求和限制， 在您决定选用Alita作为跨端解决方案时，需要知晓如下的Alita限制。\n\n* 转化之后的小程序，必须符合小程序的规范，比如最终压缩的代码小于2m，分包8m，路由深度不大于5层等。另外小程序页面需要配置在静态json文件中，\n   限制了alita的路由必须是静态可分析的，所以alita只支持[`@areslabs/router`](https://areslabs.github.io/alita/%E8%B7%AF%E7%94%B1.html)\n\n* Alita相比其他**编译时**方案，大大解放了React语法的自由，但是出于潜在的性能考虑，Alita选用了微信小程序自定义组件来对齐React组件，这又带来了\n   Alita语法上的一些限制。\n    \n以上2点 Alita在转化的时候会对 **代码预检测，对不符合的代码将会给出友好提升**。 这里可以看到相关要求和限制的具体文档[要求与限制文档](https://areslabs.github.io/alita/%E8%A6%81%E6%B1%82%E4%B8%8E%E9%99%90%E5%88%B6.html)， 另外\n   \n* 另外，**RN开发者请注意：微信小程序npm包和RN的npm使用方式不同[详见](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html)**， 所以对于第三方npm包，可能需要手动去处理。 参考[npm包处理说明](https://areslabs.github.io/alita/npm%E5%8C%85%E8%AF%B4%E6%98%8E.html)，[第三方组件库扩展](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95.html) \n\n## Alita 原理相关\n1. Alita使用运行时React语法处理方案，区别现有社区使用的编译时方案，对React语法的支持更加完备，具体请看：[一种让小程序支持JSX语法的新思路](https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html)\n\n2. 关于React和小程序的数据交互方式，请看：[React与小程序的数据交换](https://areslabs.github.io/alita/mini-react%E4%B8%8E%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BA%A4%E6%8D%A2%E6%96%B9%E5%BC%8F.html)\n\n## Install\n通过npm安装即可\n\n`npm install -g @areslabs/alita`\n\n若`-g`有权限问题，需要`sudo`\n\n## Getting Started\n我们在[examples](https://github.com/areslabs/alita/tree/master/examples)目录提供了丰富的样例代码， 强烈建议你clone出一份，然后使用Alita转化，你可以在这些样例代码上尝试任何你想要的功能。 \n\n\n当然你也可以使用如下的方式建立新的RN应用：\n```\n    react-native init myproject && alita init myproject\n``` \n\n`alita init`命令 会对rn项目做一些调整。 \n\n如果需要初始化`typescript`项目，请添加`--typescript`参数\n```\n    react-native init myproject && alita init myproject --typescript\n``` \n\n\n**注意：** RN 0.60 以后的项目，IOS需要依赖`CocoaPods`，导致初始化项目极其缓慢，可以使用其他版本的RN\n```\n    react-native init myproject --version 0.59.9 && alita init myproject\n``` \n\n下面以`myproject`项目说明Alita的使用。\n \n1. 调用alita命令将其转化为微信小程序应用\n    ```\n    alita -i myproject -o myprojectwp\n    ```\n    如果你需要边开发边看小程序效果可以添加`--watch` 参数，watch模式会监听文件修改：\n    ```\n    alita -i myproject -o myprojectwp --watch\n    ```\n\n2. 这样，你在`myprojectwp`目录就得到了一份小程序源代码。 进入`myprojectwp` 目录， 安装相关依赖\n    ```\n    cd myprojectwp\n    npm install\n    ```\n\n3. [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)从`myprojectwp`目录导入项目\n\n4. 在微信开发者工具下构建npm， 工具 --> 构建npm。如下图\n   \n   ![buildnpm](./static/buildnpm.jpg)\n   \n\n5. 概率性的，由于构建npm发生在导入项目之后，可能会出现找不到包的错误，出现控制台错误，此时需要重启开发者工具，或者重新导入项目，[详见](https://github.com/areslabs/alita/issues/23)。\n\n这样React Native应用就运行在了微信小程序\n\n## 命令行参数\nalita命令有以下参数：\n\n1. -v  打印alita 版本\n2. -i  React Native 源代码目录\n3. -o  转化生成的小程序源代码目录\n4. --config 指定配置文件\n5. --watch 监听模式\n6. --comp 转化RN组件，而不是整个项目， 配合 --comp，一般有 --wxName 指定小程序报名，[详情](https://areslabs.github.io/alita/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BB%84%E4%BB%B6%E5%BA%93%E6%89%A9%E5%B1%95-%E5%91%BD%E4%BB%A4%E8%BD%AC%E5%8C%96.html)\n   \n\n## Examples\n以下提供了一些样例代码以及他们转化出来的小程序代码。 当然你完全可以选择其他小程序源码输出目录，自行转化。\n\n运行转化生成的微信小程序：\n1. 安装`微信开发者工具`\n2. 进入生成的小程序目录：`npm install`\n3. 用`开发者工具`打开生成的小程序目录（老版本的`开发者工具`，在目录上`新建小程序`即可，新版本的`开发者工具`，需要`导入项目`）\n4. 在`开发者工具`上 点击：`工具 --> 构建npm`。\n\n\n[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpo), Expo命令创建的项目，转化出来的小程序在[HelloWorldWP](https://github.com/areslabs/alita/tree/master/examples/HelloWorldExpoWP)。\n\n[HelloWorldRN](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRN), react-native 命令创建的项目。 代码逻辑同[HelloWorldExpo](https://github.com/areslabs/alita/tree/master/examples/HelloWorldRNWP)\n\n[Todo(redux实现)](https://github.com/areslabs/alita/tree/master/examples/Todo)，react-native 命令创建的项目，转化出来的小程序在[TodoWP](https://github.com/areslabs/alita/tree/master/examples/TodoWP)\n\n[ReactRepos](https://github.com/areslabs/alita/tree/master/examples/ReactRepos)，react-native 命令创建的项目，转化出来的小程序在[ReactReposWP](https://github.com/areslabs/alita/tree/master/examples/ReactReposWP)\n\n[RoomMobx](https://github.com/areslabs/alita/tree/master/examples/RoomMobx) Mobx项目，转化出来的小程序在[RoomMobxWP](https://github.com/areslabs/alita/tree/master/examples/RoomMobxWP)\n\n[SubpackagesDemo](https://github.com/areslabs/alita/tree/master/examples/SubpackagesDemo)， 通过[小程序分包集成的方式](https://areslabs.github.io/alita/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E5%8C%85%E9%9B%86%E6%88%90.html)，集成的小程序包\n\n\n## 配置文件\nAlita可以通过参数`--config`指定一个配置文件。当你的项目只使用了React Native官方组件和API的时候，这个配置文件是可以忽略的，使用系统默认配置就可以，但是当你的React Native应用足够复杂的，就需要使用配置文件了。\n\n[详细介绍](https://areslabs.github.io/alita/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html)\n\n\n## 已有RN项目转化\nAlita的设计目标是要尽可能无损的转换RN应用，即使是已经存在的RN应用。但是不可避免的，已有项目会更多的触及到Alita的限制，包括路由组件，动画组件。当你需要转化已有RN项目时，我们梳理了需要注意和必要的修改点\n\n[详细介绍](https://areslabs.github.io/alita/%E5%B7%B2%E6%9C%89%E9%A1%B9%E7%9B%AE%E8%BD%AC%E5%8C%96.html)\n\n## Alita组件库\n在项目开发中，仅仅使用 RN 基本组件和 API，是很难满足需要的。我们在内部使用 Alita 的过程中，积累了很多常用的三端组件，包括ScrollTabView，ViewPager，SegmentedControl等等，我们正在剥离和梳理这些组件，很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一，我们将会不断优化和扩展新组件。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## alitajs\n社区另有一个[alitajs/alita](https://github.com/alitajs/alita)，那是一个专注业务的Web全流程方案。我们重名了，带来的困扰很抱歉:sweat_smile::sweat_smile::sweat_smile: 。 所以如果你需要的是Web全流程方案，请[点击](https://github.com/alitajs/alita)\n\n\n## 开发交流\n\n<table>\n   <tr>\n   \t    <td>QQ群</td>\n   \t    <td>微信公众号</td>\n   </tr>\n\t<tr>\n\t\t<td><img src=\"./docs/static/qqgroup.jpg\"/></td>\n\t\t<td><img src=\"./docs/static/gzh.jpg\"/></td>\n\t</tr>\n</table>\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","readmeFilename":"README.md","gitHead":"fd356935509e3896bdaedfdd552eb5642a8959df","_id":"@areslabs/alita@2.0.0-beta.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-zWolSGbhPUJ/jX8j1qMxnt5wRGA83ZBr1EcNc1QpgHzwudp8UqM31VwgwydtfR3qssl19siSeOazWhRRjwj4+w==","shasum":"2c3271baffb334fd4bb1feb0bbd8b1eb477b87a2","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.0-beta.3.tgz","fileCount":67,"unpackedSize":240214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8anVCRA9TVsSAnZWagAAGZMP/idkeNwl7vZDSJEbwLzH\nyFeRCDr73gNyOjsLNAZCx/CwteC4AzBYiyyXEZEDD8M4E3RHc3J9Br6qJBz6\nbr/GAXSuKleyVCG8SNm84eGiSLc5/uRRT7c3sj5dUEChpApOZwniAMqwLy+N\nqfq+1mkOTsb78xg9vjXtKh4WQIxow6QCOPaMb6P9mg70sWGw7Zr1z47gqObt\nvc9ctZ8+9/u04KAQtdDe31Ro0vnVszCFrF8WV6oZ6/9gtqrQDl5ps38c7Lie\nAT2SoV4T3EjSCa9gYnTbkaSx4A6B2I+dPkAW+DOmAOv9QfkQ88D58BV0KIWN\nsBkKjq4U3YU76TlvzRe6p2cjEcnty589P6hCBmBs0BbxWEtoWNXNHz1OCUzi\nIcLgrEwhixquSryTdx21ya+thDR3qbrD42cVFsRO6p0Lo+N03qWqd0+ey8+i\nQxXhdzQ1x4oUe4N8ORSB7NsCrA/XnJa+93Y6q8SQ/i/boruMaQqTkc0wHH0p\nFtOl878OobWsDgBISmIeUAJLDT5ZEQ/u3alI+JKgs4eahjVWCzG9wdWUBQ2i\nK0DiyP1tOo03wlCwdLB+7c9BxHhY4003+nhO7BY+XZftjHL909sES4EMWSsC\nGt4Gz0L7dbWAa2FgLFs+Z99JK/0s1zAGS+jD4l/1A1WLUM+GhFdb2HfGmnww\nMCwj\r\n=klKZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCivKqxKmUOA+V+r8js8G6J0UpoN/gMeUlLcg5/ge2KSQIhAO6HdtWnuNQsNGjq9OOfRBvIcsdkQ3i87m9xKKYgUyfg"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.0-beta.3_1576118740686_0.8168109719076737"},"_hasShrinkwrap":false},"2.0.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta","pub":"rm -fr lib && npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"gitHead":"441cd1fb40e9af568984dffc2b713c02bf84520c","_id":"@areslabs/alita@2.0.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-r6+yOdZOUJNbiDqUCPY0ga4IPagw40zDvSFGiFOXOtbU6Il74vC4I1jKOUOhmdYbhrJwv0RkYneM3k4OaxMg4w==","shasum":"53ede115fb4b9a27df275d3f62330877b9a30851","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.0.tgz","fileCount":67,"unpackedSize":240211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8bDxCRA9TVsSAnZWagAAFUwP/1ZBS/XlBP1+Y/OCag+l\nRua1YiATNLQhczLEZ5rmIeE6i8xVgBEGvspmM9y86gKlaFTHt7BVOJ7ym0tU\n7DGwp6QKZxVz07wxYo70qEDElLyVaiCt1uHchr7nfAuUwLAQzqQ4jYQ68F8i\n1HfCtHdXddRgDHWMticPkkSW818hpfRBNloanLU77hJolrSouCViMOYRFxEN\nKcOvKgTqigBe9LoI41R2JX8J/+xt/pdv+zDZ76Ct0rQpyclN4G1JL8kbpj85\nXcvBAgKyv2ccJ6kEQ3H4dxZWqsRvNXSsguUwW3UZ0KfITIiYE79ghzQ25hqx\n9di0H59/TDRRlOUj+uSPtPl2h2b2SxSt1pvkUT42LsOG71B+Fh6baiWk2BpA\nhhpZRabwFMXW8bkffRYKXJg7/K9nHFSYHcXx+f1BeFuMiL+DTc3y8Stt48go\nEO9oRJBZYAXEM/Aw8921a/XoAhk24U6fA9XmuYtVVpjxHUXl24/uypfKpWRM\nJV+1/M11rfmlSkdMinJNkGrEszsTADdhMEojqzLbqZVaGIdkMQ1kkTHTxtjj\nJ/tlERhOuw90ZqkM+BkMv2Xc7DMrMcD20vXQpY1CXAZ2qxLHoQfE/5U7I/pv\nfIdhns4IoFky+M9C2gxhXUgQ/nytxVBLs7tK0jlWurvyQ0JhAPfqQRT5IoQY\nlwD8\r\n=0NKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1xpyFdUXFJrK3/z/s0aIWIiYAF/ndhOORV8WvowzSpwIgEpyGpMWhDNgyfZ8l6owYAvu+8UPKnFzNZL2HfV5sltg="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.0_1576120561402_0.30501305731919914"},"_hasShrinkwrap":false},"2.0.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta","pub":"rm -fr lib && npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"gitHead":"bb5e978de9a7c24bf1818200a37ae79e799f7132","_id":"@areslabs/alita@2.0.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-9auvfAI5G1hDio9CNqhSV/vn/6jOvS5Ce65BUKSlgxWm7/GrRMbUxfUbFydlXVxLX0/9xNYlziVdXRrc0FrASA==","shasum":"320fe340c89c9f5f7a60db0907e6d91e02001bd0","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.1.tgz","fileCount":67,"unpackedSize":241073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8eQ8CRA9TVsSAnZWagAA9HgP/i0xBRvXXJ213L5Lamc8\n5IK+WbsUyFSwC6gcte1bGj54SZJx4ytoieGgpW2Pa1kSpw1rMpOZT12x8JS1\njyF8UwG1NQyip6rSgFH2G2/LO7QfHn41xzQKSAgBal6Wwlgy/pz/EbfNZBgN\n5DF5RSA6cn9L+4gZb1pwXafJdjwHkwNjk6zEDa305W9M9foJJryDIOOcg/uM\niKBvYFX0Iydw+EbnrLN0wYR2Sc1UwnuH6c630YJiCJ6OgFKMspXwPYy9SJe2\niNbR3Y5dUWPJiMOurVqMSXPDHfERBt/XJhiOsalBwBs6sx/V6wD3dGf00NKL\nWu97gpNu4YT8vCQSSR5zIvF2P6WxTN+qEyYaMj14rKLaWH8b6b3OPos35LhJ\nDllJ8CfCr5zS6qDe1a1AMmJyGMJBVhya1XDCddZgajN8J3Z4DxDVBQR7tGRx\nBhO3W9i2OBm2g2FCHHHKc04WLMJf7TTULhjCtkCudSfvRMKt6J87zLCYP1zL\nJ9IDSSrU1IpSD58cLVFYMQwE+csSHIz0jwTFylANY7DzRepfUNk/oXseyhaq\nS2oppZl6Jr2e///L69p5laGez1ZLzBB0pWkGACLEUE9eAoq/2UCEVhs6r51K\n27FROa7hpdc3oNz24MAAQ6w1mf9BD+mvFXkYX5CwADfrYWgQqjqGP2v8PzVA\ndqku\r\n=L6Ei\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR4lsx+d6ULixKX+UrTXejs6089HwsdmofqqqfKEz0hgIhAOcS3ukPjVBko9zOL6luEkdXhht+lgXjhQVn8Sah+Wvj"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.1_1576133692301_0.8244323185845561"},"_hasShrinkwrap":false},"2.0.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta","pub":"rm -fr lib && npm run compiler && npm publish","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"gitHead":"57011cce394a59d6bfd3caa469e2f670f57681b2","_id":"@areslabs/alita@2.0.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-0cQ+1uCjmekD8tr/+X0DdOE4a4usHZ7qEHktgN1sDGRsyzh2CjgncWm6ANsK2iH2JdTEDwkIzogTlo7HSlU5ww==","shasum":"e85aa9799514668d6b3129630c2c0bdb5527eef4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.2.tgz","fileCount":67,"unpackedSize":240919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8xCbCRA9TVsSAnZWagAAVecP/i0dubn6yd+c049dvl6y\n8JT6nuwQ1rGwQO8s7MOs1cB3GH+ioiLTlfp3oKp231P6Bs0FnfTL/LeN4IhO\nQR7SVDN6DJVGAoXfFTDzenjubv5RXVGDf+D3I0KEqybfSp+iqwsInR/EmypC\nr3Ta277jCJRXqmeb4MADuwqWSSS0IFKKCTCgz939Vuh/AGUkOzEsQ1+KskOF\nfWwj5yp9JrFVlNhmgfq77lBgw9CY0Qs5DO8+CqrezTh0Kv0x2oOR4OG+ntIE\nORUWF/Sd4o+0/lU3+VAAqYc9zdvIRUtz2nCFPxyhMB5Hv9rnsQpCS/YT3Oe6\n02Y1icMscXh7mUxvUpEZNbYY2DY2I5IG8FDoiypSQtH0sQKvQH6yjFOR1duO\nnVrzIWHtfllOKXlr+5RFlmnTyCQAMV/VUiGTDPBxK40B9aiKz/d+WmPXmybP\n3TAdgTs8fieqIwfuUsOiQYkckVRskf6Au4mkeqGBzc5+tUfXmVHsLkVZ56AW\ncBOl6MNPcCPELRgGlbQX3ywATm0xfGDwDqAuaA023acD3eu8OBN3EiwZZnPN\nmUuy9119REKBQ6u0+cQFtbDPu62dIRQ9zmjrpwfyikZfaE6CcHFJGN/j1XkM\npcyMrCC8r7HTNvvPT2bCGM/kK3kVlhq0bI9aARB2ggVKp8aDHQYfO2imJO6x\nk8f/\r\n=V0D7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ1Y9g5HlmZJJH5RKuBLTajeMGo5CclPCq7nX8rL4uCgIgCT5jkdeyMQpoZDg74AYzSIuKd6G2eRzRLVPIjOLiO6I="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.2_1576210587256_0.20813048937071987"},"_hasShrinkwrap":false},"2.0.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.0.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org","start":"npm run compiler && node ./lib/index","doc":"gitbook build ./docs ../docsTmp && git checkout gh-pages && cp -r ../docsTmp/* ./ && rm -fr ../docsTmp","doc:serve":"gitbook serve ./docs","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"},"authors":["yankang (https://github.com/ykforerlang)","liuyan (https://github.com/YvetteLau)"],"license":"MIT","dependencies":{"@areslabs/alita-weixin-runtime":"^0.0.6-4","@babel/code-frame":"^7.5.5","@babel/core":"^7.1.2","@babel/traverse":"^7.1.6","@babel/types":"^7.1.6","chalk":"^3.0.0","colors":"^1.3.3","commander":"^3.0.0","copy-webpack-plugin":"^5.0.5","enhanced-resolve":"^4.1.1","fs-extra":"^7.0.0","getopts":"^2.2.3","loader-utils":"^1.2.3","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.6.0"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"gitHead":"cae1cd8ae1e4f82032674dba3c9abee1cfd52e50","_id":"@areslabs/alita@2.0.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-68NIXMK+NIVS3cTKixHlIoBrc8H2VTLhRSX2oI/OYNG56S95DxQLVsntOr2klLuzLP5x+9lAFMPY0IW6ZYD5pQ==","shasum":"a2660a69f13499cf99a02d9bf4ffb64304b8d0ba","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.0.3.tgz","fileCount":68,"unpackedSize":245863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+cVkCRA9TVsSAnZWagAAxR4P/3LDb4i0srCbHjiDpRed\nhTJTLwNveZ+GKDNDfqO8oe1nrosXJ73MOB4MiLO2VFS3QZhm+7XDtUsOcNRd\nGowg+z2dCjIQS0/ybFokl+J2HrdFuDlvumcIp4M9yHmStUkg8afjhxlLMQma\nyHP1o8xDhnC70fx7eKvJhjg0yXqt21x+cSjs9pvuxxLTbia9PaDopasyhJLj\nakNMGnqfL+lU4q940IzVSBxKytIX7z/K9h1PSS/LLWX997TD0xTx7h8eUKvO\nbq2wlzmCEfsaHNNSpa/k+9o1tn5JhnT4kpPeMx7N9vvOhvxY7S3aOseICTmQ\nE3c88mGrApagCS2d+OEn4sPXe0uImO5eEEqXo0KYWUPzltyZhwVh5m4KTclU\nij2Iwum5Hbih45YgeF/m0xltE4DH3xjuzQqxInXKladlcOqbLxqBPwnxKIGo\nzZvWkqpJkItLwBHmgDb+PwxGpyD0lKZDrI8kWbKI9OXqDFYLhboG5X1Yxckh\nL0Cg7D4KJuprCFvPLKe06RZywlzM2ZirzYMi5fFud9gCZ5BfFQEj4B3fs91K\nMap9NHvEhDmk0y1cwvOFPrFF4Sl48PoJO6qE1O0tgM+o38N+6gEGDjyHkct3\nTytgVx3VQV8Zb7we7+c+zV0sKmaYJtUPSUzeP8dW52hfVGtNvFY/1ejPT/rl\n93QD\r\n=jLqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7ZNw0qanK7qTbf0ZAsjveCDL1kPnpxfXkMrsVHDllowIgVJxzDPEC1ZJcQ6AlLuc8RX+wLZ06VwSU9UTnZQwllPA="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.0.3_1576650083761_0.16257750652784564"},"_hasShrinkwrap":false},"2.1.0-beta.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.1.0-beta.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"devDependencies":{"@babel/core":"^7.1.2","@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.1.0-beta.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-oWjDScVIT2pZ3jbRalSe7CJzpuZ9CUL1eMwcPaGtIrlfNff3xEehq/mmbv2OY3YU/LDEg0bauSG8d6wmvKigzw==","shasum":"ef472e0e8f80b29b851ec5f47b2b034ac11a6086","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.1.0-beta.0.tgz","fileCount":3,"unpackedSize":7144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+3UdCRA9TVsSAnZWagAANQYP/3wmgB/L4z3yit7xX2xH\nIggOszgiskJfvg/En5nftZawNH5ERrkSDPZ5itDe+e8S+ELVpKLvT2hHUuQG\n9MTqdxb5yfZfYW/5gFqlsWWNUv9TBFfd6PzrUlVgG/NbS8zmuPPY5T4QNCXh\nNlMmtChoaRUHWG+wR2ZtwExi5jo0JTPVFK6IKXZvCOvoeD6avJaRkaJJzs+i\nNrOc3zc6OGMEelusk4ZeS4wo2/OvIrtsgyjvRtD2iQBgWrflvA4DcCYaWWa1\nEA9c62HNNihJBUb/fN28+veJssNyTycJtO+OEqc66xRVaFEKC2u9PA4iz2lv\nDxiuo1E85cSQ9jrY+O4Glk59Qx1e4CHKXMc1XEsohRK+Lyz8JbuizYnsM8jB\n4VLp2Ek6ufwDPtDUYOltqwE0p0pHoIbkf6321c5BiMN/Cs2xjsHo1EYxy53K\n72hh6w8stdSFkdbi9S1p4XW5+b4cgVONHvbuvqp9H78krrgYIZTZhy6neKJb\nAKXy71HiBKvF6kBEMETQ98oD1F9zbo9EoTCUg9xBRQV6VRQTvOiL7SglOdu2\nNQUE/yLo9XW/LLitozwt1s+Z7y5H3e8GCEGYwn8b8D2vp2irJ3JPv4WRKIvj\nm0mEIRTqkLm/RTZ4hBvS6D5H+7MPSz4V2vgkEjhTeIDyLrBxfTNIwPX5VrYT\nnwd4\r\n=OBma\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSrsj7lr+K2HrayAs9FAcHxrPp2RXti3z4wQnaXzgleAIhAN+9NhPvyOHijNfHM6AM0EnkJJB1kJGoIV97gK3JYo0z"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.1.0-beta.0_1576760604629_0.5807590769077489"},"_hasShrinkwrap":false},"2.1.0-beta.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.1.0-beta.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"devDependencies":{"@babel/core":"^7.1.2","@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.1.0-beta.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-KH19VFRMZTtiO6Pj3LhDyKKxpCFYAkaXR1fzJXopRd0Qp0zGNvjXcocoywcMgv8HqmnsiRjQTHz9J1EqqLW89Q==","shasum":"cb437f95536f6a899d2081ae26dcbc1e635cca9b","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.1.0-beta.1.tgz","fileCount":3,"unpackedSize":7166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+3eKCRA9TVsSAnZWagAAQSgP/26EL+Noi1nGDt2prGRY\nfDueOsgbI63w3WQDaJEESaAv9vzKfkiJfh1zz8EJQNPwDkGGUJkS1QvZNLqF\n3+JOcBHRFxWlQ6cCOQWjrQIMDR7ohLXrNkrQrFQ0K9HtfarpqvAi3CEgiAbX\nNPebm1lOANVBcv+sjRRWommBarvYcjyXy4wS3uAqN7WDkHDlKwhhk1zjBH5O\nz2PS2YBi7qsvH+Xx1zeUK6dCKPyOZXf10ucTJknOsdZGoH5x2XLaKDKphiEH\nmvjXQYjXq/l7PdrakqfhL8Pi1q/h5GRRjox9KLis5sWKfuQT3OmZyhdAc0jV\n1jUwsie/dWUPoN3tAXLmegf0dRJ76A/3cXJjVpJM9C7+A18EWPYY6cqEPQ9Z\njVQxVoJ/QXs9rzFxvYSZxoXLb2ie2vKebdnlRkzVriEv0Tel2c1hMAxikWb9\nAfWaDPZcTxg3Unmw9RXXeb9bVmr4PPYoG/HHoqZoRFBryAr8sGuJPWTEZJ9r\nrvKS/ekqtxIbodu7AIiP4su1A+XicRBS6oPVi9Ut0vddw8Qr/fgKTT32z2cR\nRpXxxeAZbquCucFvMozwv9n2kQcZoBiKuj7GTV937lKq9pmimL7g+ibcrE7N\nkkw44sRXi/wiXRYIfVNiRhlrT7SgfJkiFnngVawzMNWz1dZpS55hldwKEFzS\ngSha\r\n=S8yu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT2WV5+EWONqdIzd02rViGNhbjW1M2Tb4QtU2gDTweZAIgee1gRxlxC3SRHjJTH4uIwLh6CkTuP9qR/41PmCAtXVU="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.1.0-beta.1_1576761225686_0.4103799956973442"},"_hasShrinkwrap":false},"2.1.0-beta.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.1.0-beta.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"devDependencies":{"@babel/core":"^7.1.2","@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.1.0-beta.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-iU6AzjuUx4gOCRs7GosjC4QeEs3PNvvu+sxtCUAc4CxquJRX7qdui5XNsUicw09Tt8cPsbTODoqK9LiL5nv7Gg==","shasum":"177e780fac256c8ac40bb324628987b3c253a21c","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.1.0-beta.2.tgz","fileCount":3,"unpackedSize":7205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+3s5CRA9TVsSAnZWagAAqmkP/A2K+zAmMMgZV3bKYaM8\nS2qoPj2O0G9ta44evDIiHioshxsOHboeCUW4zspZI0A8+8FUDl1uCgvUnS3T\n4hBUWjcZ3UvuY5ZEMdi93TvQemWmmPxkRV6JLAL1zUUwHDeo8jB021Bol28X\nb8ZjHeGADiAntX2EyJXd9fTwp69tS+do1Zr1owij8+yGnBVZZ1bAA0x6zIqL\n1DDSJCSEs7MalMi0ENrfOLxdAjc4EIY7Wb6j0sIbF49Kfd0FOUL5bz004y1v\nGXpyHZ+ZsZa0EqhAHMieHsIckXfQr/tlPlzRtNB9aSNruFtv2v/B9ON1n+fQ\nAldKDdff+HOycX4ivGJIjm0L/MdZA9Vf+aEW9sfk1ythbzCbnonGI+Ok2SoM\nzRZV3yMOAtn0TJuj2LUHYBzZ1GoFsvgx1nCoGVL+UCEKMfh+v9hGBN6TRdT5\nT1CTjLgZqz+ZhBo+cpaEIbYHDIifSPFUBgyzC99MdJoUc+10PrOQvW7pxtXz\nuDUdiAyJr7jscquOYloB2ta4BZR/Vj7yALdFYxzQxgcEqNpPSFM6UXCBoJ5w\nK4wYOBnaLfwdOzrpFjdJ1qLaq+JkSICa1aRW4K2w+FFntRpmv91sDTH0VF2V\nlbY/d3Y+2m8+N74AN/kf0yJceSoLgf7KxGCJ5M1GQTFXdtnKKK1hWuWqW3DV\nQM3H\r\n=MepU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKSeXsRHuyK7LWopvScfsf+W+6VJKbyZGDqOlZzcXW+QIgd/wE+H/SNwdM871RAjvV4hhrnDxvRG7n3/YoxryQQmA="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.1.0-beta.2_1576762168775_0.593887151494707"},"_hasShrinkwrap":false},"2.1.0-beta.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.1.0-beta.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"devDependencies":{"@babel/core":"^7.1.2","@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.1.0-beta.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-ppx9vLsSNwlghDRaSAtVw6wZSmVBq5XhrnFtqG3h6uSYi+T4IaBvcXuGDfEFE2L44K6P9tzSUqHG1hnxakbhdg==","shasum":"2da0dab43b9a1f9bd042721cc40c4f7e8da7c4f5","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.1.0-beta.3.tgz","fileCount":3,"unpackedSize":7192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+42XCRA9TVsSAnZWagAARjsP/3yXwvhn2hqAuzaU7sCa\nqSVCdNYpXk6WHExDqGwQDcBP3oDwKEyFE5Jz9Lg48W9DWRsnnnhIbhPXFfp9\ns2GvQ81J753jV25IIIqJlVtv1+02a7v5LDIRS4nijkrnxzo/aF8PybJhjSn2\nMlAiqqMZEWGPkBNeqXW6aPEqFE5FzjeYJ34lrRTK0xUH1Fs+XKlA2ZAvsbyc\nsl468nE9rEw1NpKrPsnZf0MJAML2SJ7QXbhM6nfD8diZVacL9rK6EmkvbMzy\nd7N5BWXD95swMy+69KB2nLZ86inavvwb6TuLOsCP+f7TdBHNF6+egaPcsk0d\nX7aNhNTOaeRZf+fsCmzHYKS9jZKqLhvEieWZ1SDHk6u8/AqBGDKdrIAWwxqX\nP0My/BXG3mkE4c9or+P5Fcg8veqn4C8ulgbXqcoDkN1FQJm73cAuXpzYiegW\n0TMu59wLeMfeLagVWL3v0m2+VbG+4cSkkACTl22UzUQ7h19/yZp80obBd3Lw\ndAygSGwN7wEokB6NS+NNyPCPalAoO8fi7WN2A0dcor4L/WYfbfoZKOUOZibp\npOK0mqXIow7mH6o2/lzbQmJifCr6VxBSaSPM8anVfZpLF4s360FSv3gdQbY2\nx7dXxQEw3tRFDT/09Lz5yV+rlXwekDrAL79u5xKeUojTDGnIZN8HyWtgdqvc\npbPB\r\n=azOR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJV0B6jxNHgOHvv/OtamQrUuvF2Z/NyD7DWX62YzAMQAiEA7jKSp6CcyGdSG+yf9ym8rrxA4xvIdSLQXc3owlH1DJI="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.1.0-beta.3_1576766870813_0.22536343552822347"},"_hasShrinkwrap":false},"2.1.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.1.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","compiler":"babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link","pub-beta":"rm -fr lib && npm run compiler && npm publish --tag=beta --registry http://registry.npmjs.org","pub":"rm -fr lib && npm run compiler && npm publish --registry http://registry.npmjs.org"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"devDependencies":{"@babel/core":"^7.1.2","@babel/cli":"^7.1.2","@babel/preset-env":"^7.1.0","@babel/preset-typescript":"^7.7.4","@types/fs-extra":"^8.0.1","@types/node":"^12.12.11","@types/webpack":"^4.41.0","babel-jest":"^24.8.0","jest":"^24.8.0"},"_id":"@areslabs/alita@2.1.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-EIQ+7lS7gtrUgSOTW0uBoK5UsqPx8ZsrUR5/+BiJMH/P2z2O0FGAqf3eIbCtBO8Gbltiudyv7H9otbxFvADqxA==","shasum":"57fbd8ecbc45ee79d14e5c7738f9d33c84ef743e","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.1.0.tgz","fileCount":3,"unpackedSize":7185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/CSWCRA9TVsSAnZWagAAhCYP/0lpRMWTbcIob8zcy2aO\nwBYnm3hQ8eC4wrc1o8XXHpA88BqlHnKXuEjWSq+3eJhtgVGiuOb/KOJG3f8L\nisZ2awYuRGYckjZPiyWCrBhrhe+vVdLldMDibKz3e2c0KQ2kPAzqSE9skcNk\nU+C8+qt4bmorZ6kLjbdF/De2Xsq280woh8KeCKzvpgHeqa784eTlyIf3Rctu\nlmjbxle6cYmpF9tFYrn+kz4gZLGH+htJJLhFP266G+iApI79wWL4DSIetM8a\njd8G9KiRw8MCknECU0pKlibhU44JJx/G4/oDkAma/88Je/gcawGAh49gaZum\n6lGoZcZpthZe1wP2PO1xnoPXg9AxUbUe+NdY4Qlwq+wFT7O4zUQJu2YRQh5z\nRvFnCauoa7l7zORlFBrD3gM59Cb33gS+dBej8MqZo9xg/VDtyCkEQJehLIzh\nVrtaomAVZqmgctB0F4MtEB5BeHDKRUgG70MRiDzrbuG2AmuzwySEGfoHHo6B\ndDddZPJlY3ZDphHpepn28wIF4VlR4wU8dcyn+c5OdIhicagg9T1JDI3rSU+N\n/N7xEuNRGPORq8njzyaUNxSdRe9VO1LVHDXgsI3iUri+Ywt9apqt3T5Dx1Z6\n1PmT4EOY9E4w2eg4b17kQGqmqmLnsOAYj4Ik82EC2Fmv89VCBy5+FzVwFLaf\nCCXc\r\n=r6OH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXP2xSoO/wUqNeecUts3kcz/gCKxJKbHV15FtcVT8RngIgX15mPbGY0KsreFo4fwR+QIZziUnxIQdUDIqXVjH1NuA="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.1.0_1576805525788_0.2766722656148226"},"_hasShrinkwrap":false},"2.3.1-alpha.0":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.1-alpha.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"89bdf95586d1f35c15e075941f89ade57ec9e2c6","readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.3.1-alpha.0","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.19.0/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-P0C+/Wi/SEu42GpgtZI3ojp5aYe7IsCCP1/NkN0bsQiz53ZIa5xM2SbqhYgr9/CVl4zGCX2Sm+jluEU/gSrU2Q==","shasum":"541c7ba38c15b3af869f782d21fb46488217763e","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.1-alpha.0.tgz","fileCount":4,"unpackedSize":7795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJQ5NCRA9TVsSAnZWagAAhMQQAIjXi8hy8071w6bEjVxl\nzw7cQ8z98mT8tibCWuZip8cZdYjWUngqlnf0mpKKiJpQnwupz15iZj91H2iq\nYQPmjq0Fai8MZ0hF/RaTI5XinHX8crymIJvv1Jzgj/b0NbcE6T1YsoD7t9Yu\nFaasoNE9FWb6vFLWrYeOh3bPqm5VK6qoJ16kPensnUF/JZ9QdNpk1YjgyPun\nmtHTboyoGg1E7gXbRH2fgSNNbveY39JX4J1OPH/dGEZGPSSWry60hLRC8dZz\nFi/JS859KIqLQkK4+hSSzLYexc0iBDedieFnW8waleltiNYnSCSo6dzE7OhW\n369D9GN0MCE2QEAcbIPqr9lz5tWuWjaOY4surHlXxj5nGahTvWQostwr7Nw9\nV6qc5VaItuf8QolNNvsro5dNZtdTFLoxf/euoTWzCUNHTL8JBf0No1WwuAhT\nOte/f/A5FW7DyxsDzzAmU8zaxovS7X9eOCRBSHDHh1HLiAUBdHKCSmVDI0if\nWEVNDAeC7/OZZPAnHnmD9TorlF2T63RELABxw+xUljukC2Fbzzddo22nGDBP\nz2TNZ7XaY4W/fFUqz8tWP7XJXFgo1FdDwj4ciXfF7hFw7KBedqsixkzmSsmX\n+tDpf8Wym63rpphYwOht4sDWqSYguEkEoi/Hmg5LPPusaIshWzlV2B4t0luN\n3JxV\r\n=/JGu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQBh/8k0Jvr23JRtK44wjgu5eBfB3/KTI3ds2Vt41lVAiEAoi2I5i4CzDGaZz4PNvDUhJxLyHJFTDnZVMacJFr8+cQ="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.1-alpha.0_1579486796682_0.6686750540959097"},"_hasShrinkwrap":false},"2.3.1-alpha.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.1-alpha.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"d2d2b94c6267dc2df397dd431b6d31740fbff979","readme":"ERROR: No README data found!","_id":"@areslabs/alita@2.3.1-alpha.2","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.19.0/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-Qx4Vcv0+3KW8HnfYJiiamRgcVooP7liPWizqaF6QfXg2ppkU7RlwdjuR80T/76BnXxds2/3UHJv5A11Y06or7A==","shasum":"6a3f0221521c08f1691fa4fcec6689dcce9312cb","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.1-alpha.2.tgz","fileCount":4,"unpackedSize":7773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJUyACRA9TVsSAnZWagAAjrgP/2qw9zrvmKZ4Ehg2QGfV\nFt1ufn0bS1fn1xGpwYUg/kWXsqCMRhSKRYNSWIcQ+laCoMfS6VLwrJ5mO4xM\nVDU7sDnDkY+3XHKPSGtVvjI1m8e7bElvGIwm0bY4jSK3ofjEExxBSsxaNk/1\nTz8pVsaJ8kKztq/16urjL8TCOhii5Bp7k9feyHe+KHihs333H92A7AWTc2g6\nSo6lCRoVvqgtyFa5OKHswphBOzir4OJVsA29RfKfQ87j8uVX4RviR/MFzNcR\nS55L0IVvRjTCU5yApWsT2avtRiHNwU03apFFyffav0Y4CYl49H6A9y8Y5Iwx\nArXPNTMWeQxzdHxkcZR0zUYkBJqRPGXFVt+JE5xs2U2VLHmUunaI/ehaBoO4\nxSiFV4hn+ieKKBcXCvreuEZVVRcHjQNa3JW2rC5sbhcfPTZjso9C0xs05I68\n/v4mwMN2lpt+pR1L23Lsgob9gIHZ1vz2WZeTbTHxXlwSFRD96LQSgzVXW9L8\n9Ye81tUa78QBlNsqM1/evXoF9VBC1T8mpeCS0uiNBCVPKhUZEfY91s/bi4Ob\nCLZQIZrY97ImTQRvHzIfp3w1CU0mKddkkodVYZUCFleFCL7QIMfj008u6khQ\nfuYtL+H6+38znOwoXr9WM091MEX9ei0HGol9clV7JjpuEoZOYIC3P/ns9dQ4\nUYrA\r\n=R2L2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBONg+v2nXAH+YsaxLjdhwxmXCz4ctquJw1JPmuE93zjAiAzV4Xl7lHsRLRto1HIxhvjNHoeiFV/kWpDmrBKQ+VXeg=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.1-alpha.2_1579502720182_0.72865001407401"},"_hasShrinkwrap":false},"2.3.1":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"6a5cdb02428188b9fb18fad4398f2b0b30eb1694","_id":"@areslabs/alita@2.3.1","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.19.0/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-jcImiJWsKpZoLGu0UFctJJatvCMFnuUDUYITVuDyFIhCRGGOo9TDnQlTGMEBtVbLL367AMMZc1qM+fHWEozW4A==","shasum":"a8cef135bb48d3a85cb813b4b9f4abf2854e6764","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.1.tgz","fileCount":4,"unpackedSize":7765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJW56CRA9TVsSAnZWagAALYoP/2Xg5Vn2bBl0Zu9lRpKh\nxc2mcG1Cnx+YSxSvGDj9QaVNaOvCexbpunZtacUlbbJvvmzuzFHT85v5wD6y\nLz4Xne8Wx5/KLHf6n7f8qTHr2pI8KrGTsdQlM8LaTvfhOXlnkw/hi9bQltcq\nJRSjNu2bSv66Qv2sug7m2r0o09BZf6y8rsE89TVkVe5wTmu/hrHfRKnbPv8i\nB7ayP6yw+9VW37kddlmQENw9Itxok/Us2HheZKl6TIiD6BGfpeHE1U8ku4qB\nVjphw/hTOnhc+f6tAsDLyvKVr7N04J8scdVljRILrhMP5v7akGJ8ccXN99wK\n3ss9NYgZRrZ2/Hi9/t2fDAj0E/oW6io/cpzXYHYamUrXRp0ntxbhlSrb9w+n\n32nkjskqSVkeZkF2Z+9wMPVTaWzRssj7QSkBwgPtUlrENGufzVdJXC9fkV+S\ncvujS1LfZoVJZpLS0oIqmDWf0kG+vJSAkOBt4bycPRDKPJffgaDAs8hNyViw\nJv0VZSQoYRSG3DkyY1/tt5WhBIfzxoqEMZCxKU4JH6jVVirDL/VUdasFfKqM\nPGL/CTjO+GjpqC3NWz/q0CTOFgZ4Y0J5nxEEtyTsYn8ON4+gMq6ncUNdnbzX\npFoS03RoTjAgP7JJvv80mT4DKfBVWQ3q9oXSlU+Sh6sTgpASCTxARgyAJxdH\nKuWO\r\n=c7qo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAoxQD66z8+quzT1XrE1fzBrPJuO+LZOqmIEEMFYTtlAiEA40vjRJbLyzi8O6xST1IrABkbTJjnzq3lY9McXTzE2z8="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.1_1579511418371_0.4183391894067001"},"_hasShrinkwrap":false},"2.3.2":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"fac40edcafa551346a831a3fa1150691b178a835","_id":"@areslabs/alita@2.3.2","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.19.0/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-BxzNNnkTpuhFz8cEtMpHgW78n/ORODG5GFPDJMSXM/nekpDJKoCKB18NMnlCk5NAr2eFmmza/ikwCN/9GUjqZw==","shasum":"8b1d9dc73be2d37ef168330408c53c666630efe3","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.2.tgz","fileCount":4,"unpackedSize":7765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJW+wCRA9TVsSAnZWagAA+lwP/2NKZoWNAGMI4BU6vkLH\nUSgyPx2CydIelgf4I7EuwWeaTsuoA8S8KSravmZSZIx5BEo0mrRcQqpanzsD\n4yx8qXCkeWsIYduBd/zB43K2TcieTptA8CPDCoTXQwSzlJcHS0V5sLnyYQcg\nMpO0TpIdSwYGBJ6oU6oLyEd5TCgxZZ9SzgB7gBQesjDsxqPejO8RJyx5jQVb\nighazvmBBl+4eRJw9JYhkN8p03UAIJB3mmvTJbLn0sui9y+96CWKcwQoxQUn\n5xpmmVSoOvLPmMIu6YYuHizoS8n/snYGB9wT3JiL+03T+HCwGQxU/ly74KdM\nqS9PY+XJsOTnAkzBOtq8cKgFF4/MZ5HutiSrccRHmmpNrP607imOkVaii9yU\nRrhnJN+OOWvtoLfmjL3QW2btJWOAbjfrL2303bJ474sKUPNvVdCSlqbqybMf\nUTqemnaKn3y2IUQr4+Hh+QWNz6DlsG5Dt6H5gSEZ0Fe8lTonmFcEUaCpCwb2\nGvhjFN9ofgH1zninaUalGH52X6vSyg/NRraBBrYj5UGARR02mrzvOc2OxxAP\nkcm0toDSVoAUemPsAvBrTB2/CxU2rPrFu8VoPd254nFqkYlpV9GMWSZTCL2G\nnGhuu6D/LkADp3eY1yfjzJqIhpOLCKejyQFQjmryIVrYG9mFGKeotzQ+Mo6p\nwAmD\r\n=1Ofc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0lipRUsHCb4FW60nu85Mq0QbsXnpJlFpB38ZBZBBmPAiBbJy+Yj3LWXkinKLKe39cz5liQhpzPBjOa7Yob/sVImg=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.2_1579511728441_0.27900170001570923"},"_hasShrinkwrap":false},"2.3.3":{"name":"@areslabs/alita","bin":{"alita":"./lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"a8b4122a27254805b719bbcaf76e21d9d3771843","_id":"@areslabs/alita@2.3.3","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.19.0/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-q+QMxavW8FHznWhH2V5MVjwPutGlP+x+oFLSOW4DLJpYXmx0a4GMK0FaovbImqOQifAm3TOSr5tuGgWGFnC1Vg==","shasum":"dba58527b136f00170e38b118c1b63ae97654723","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.3.tgz","fileCount":4,"unpackedSize":7765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLqdZCRA9TVsSAnZWagAAnMYP/0244wp9dkP6euuUWAxu\nJqbfRcIUo+hqB6J69ci4/aY6pHnl4QHUsluc2WWrK5KlLXq3SxD3uPZ5ROqo\nzG4nMu+oqH0EyGA7fzOZz0S62npVaJMbMr5thDl2Z/MTXVOfoAx/l43BG2xA\nxknnI/MeA8Up0zZKG3MB+vgLNrc34YYZJLD/u+2u2JrMT7hHNgv4G5nFag8M\nyp4WB8NHAzL8KgGjuICsVAsy3vYeNHLw3fSc8pPdjhSDomAoOPEOBrL0LRdj\nzAecLFQvOzY+HeruheNEDbn3Ep67LpomREB+FZ7EiHQXQCb7WpBVQhmlXbVN\n3jQ6swuxqytWGDIbNXS9okHtMzq/sWXMJQr54PRIg/4VxGQwKVnHhpo8hBRC\nA4vbPeaSRRD9lKoiZ6p1PH4qtTl4wPtcK5kq8J8dOOGSojj7Boe+iHNVErgB\nDUzfeL3tsXebMQlxADjVDRo8gWTyeqm6ZNNwRmKlBG4Nx4pi+XyBtku1k/YD\n/T/fYJT/VBEcapjpQPCdB1mtMYktSEeXVlVs7eWmRMdizefqrYwBPceGt9gV\nCBg1hKujWBDUvdlyQ4SytRBpRjBlvgBiQEt1psMYtLprO/0r2z2YCdUn8pAP\n+8YBR4HxC1pzhv+2EceKMkfGwSG8W/cvcpBH5w7j5R+FE1PuFdllBunUAaZv\ns5pn\r\n=+BUF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBCDXwBzM3TmbosT0EK2Gfx1UZpHZdSKkt2e0uamrZgkAiAB7X1w8VlNA6EFwx/lIz/yqtHI7SMFQjhvy8yaUUUVNQ=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.3_1580115801287_0.9351618825289496"},"_hasShrinkwrap":false},"2.3.4":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.4","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"05e6a74a978ed51dbf224fc2883d90b9d2150b83","_id":"@areslabs/alita@2.3.4","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-G9VrUm+asGBNmHeFbFSLHmSLHvpz9AOFdTAQj1C78LcMrsLcLmzUtdb8OMI3FFwTk4KjGYcPcy04Ezssy9rBPg==","shasum":"79e77c8cfc5394c6275692639a5c0ef29bde6c6d","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.4.tgz","fileCount":5,"unpackedSize":8217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNpmfCRA9TVsSAnZWagAAbf0P/3kN6Snhzuv/NubrUbYr\n+jvzvztjKQYVbXcev6+TIX/K1yD4rt58w3jpDg7ubiVg5puCtC/UTdNmxA9x\n6v6BdkLdYLGKkbMGQADid6pCH78poBUPvkASOTmZctEnZgDEFndc3W6/x4p0\nB6tqUICRl+0WVO1TEzH+1gkfO63rPk0fMbb1h+9quBIR4nnxHAfkGAj3RVB2\nue9//axbn2A0tjBW8jZ3iXbErRb1WiulzExLKeZfn3Axyd4+nFzrpVHq5Qpl\n7TwOMDSzqQohYOJjktvOdcBN4cwjTxd+8WI660/Ir5Z0BYoq7T1aCS5xUlBX\np02nXUiGo70lDdLmthku5Z/MKAdoA7JdKvhqBPGvhhSWHLf4U9tHDqtQ7NQh\nh+yIAAqkc2EnmCqpnMVUujhb4/lgIVqNyCKm5GSg7kuIUAStTxM+kwXt8HCN\nRvgQZqqfMRz5/EmagM6hgFhWdf7q/xPIzLr8HaH5xHNSeI9rLmFYdiT4k5pf\nkxeFXhuzpDfHbNTLoKBCINufRcUAzmg5xcxf+v/BL95UyOGAgXVNRZRwEReQ\naWiPtYShB33jvKNY74kBX1iIo+65N5xYPC9ZDMVMjNfo/mrL9eJ6eShCZip+\nIUb8NYLbrOrh9ihz6b5pEkMRnQk8qxVNil+1dzphwQLFS59HuiJd8c0OBuNs\n5FeL\r\n=Ce1B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsLUQx17y4iD+yCqmwqG8lI3DLCgtavt6EOUuhMJ40vAIhAJX2MHxDVlLI7l8KGQtqmjLqNIfZ/g34iGwCvZJXqkeZ"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.4_1580636574790_0.613562998517543"},"_hasShrinkwrap":false},"2.3.5":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.5","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"c1f6fc703a0c972d2e10b6bee9f7c0756f1e78e5","_id":"@areslabs/alita@2.3.5","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-WyI1eI7mt0YwhECm1NhK2imqBXzkVLE+KoYo2lsKpKPEywr6qG+RX1CmHRkb2yoR6KeLNKwRxo4d4sb/BN3oWw==","shasum":"4fa3873e4331b3d04c64523cb2d387632569c9eb","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.5.tgz","fileCount":5,"unpackedSize":8362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNrNVCRA9TVsSAnZWagAABtIQAKE1xOVfDbv/mZtmN/sI\nO5WJSk3vqgtbwN3HCWKQL+Sotav7GzBlePx908tTJYAxsaixkHanMT8+Xit7\nbGai1cZetN3EafQN/0X17jjWd05GgZDXH1YcVURhGJMqXJhhMz3er4slMSWn\nn5t5JsXagD+RmRIEcbnE77NhAT9BoJ/mvxqz0zu6RWgHn+29pxeZYGe7OK6X\nfKxz8qP4XyTZqJAuNaTqQfU+ueWuviDc9pV24HlV1hSspoTpgta0NHDYLS9H\nLKzpMtWoksM8Y8j0U90LyBEKiDGExjIycORg2Vd5Ut+IYsYGaTok8vTwgzX1\nsvN9HYRX1sO9My+WvdkDntfqCPkudBoCZsQ/h8yZWPPKjW3eYW/caJyDKeWQ\nWC81A3cPlbuYxFqkqBSd+Ntqid1nmUAKPo7NFZYK8jUzKgXv+VFqnMPoL2oe\nsKnetwq0zI0yS9PJv5HvQovI9Zcr2L1sP8b+VuezxpWUvVV7fSNToO/vV0tr\ndV8GuM2Y9s3plKrqLTeNDDeE6fDOOyQgVe7dBN+X8cTVWcvzT027R7IRTEoH\nmUzmmGXszcNh3IVi8O4IM8wf/A2NlLtCrvQ9/8TMed6OTLHHwSShSUooNbiF\nWNbTbEWJqsWWLzbRbh/FmXHrmvmEejC9MxEqqORgPJVV8eoLguSQlfYtSpr2\nuZmd\r\n=OSW1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0BhYJEPaO46hWrhZYZ3RrLvWYmy+T1l+44aMjslwArAIgdyghozReCy0QxXBoCA780lKSJRiOG0VtrbS+D9sExdE="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.5_1580643157103_0.26808739563148687"},"_hasShrinkwrap":false},"2.3.6":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.3.6","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"9fcfda3676c06b45be3ea1cce6637df91103d2ae","_id":"@areslabs/alita@2.3.6","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-v9dPDWDRqTSDKkXSBMM2jlzCNsmgkzJ1AfWAL5sGVYAKgV0K1Z4Aa4lO950lv8RM90llmOgvP5eoU96EeIPVdg==","shasum":"92bf8fa71813c3649d00b75a863dbba33f598012","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.3.6.tgz","fileCount":5,"unpackedSize":8507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO+nZCRA9TVsSAnZWagAAon0QAIPTS11uwpW1gf73oo8Y\nJXd6aF5cg2qXIIC9lfWal2ZctXAVEhX2KLQNpRXtf5x9sROVRn7GiP9ztbQB\n8IR/VWdaePqKtOMNT0eQUhVspfULMxCnIWoQGjNyo9OJ+/LEs0E2lIQp2cew\nUUICRPEVCfVfozVczD0FLhQA7rTShtBp0UvFNgQXQjrDsCsrvNJNo48/Zdqq\nSV1rG1vP2b4pWEvacUqRZm7Q5VrwMkhiIIKc4p/MV48upenKaOFSbMxLvBIo\nc/PcyMZZNtPQIZsv1dMCDZNnszGzwzYC8EVuBefPR1qLq/00oRZDOgkXkkaa\nwnLUMayQM1QXP+8+Lr2Hr81QO8Pk+O6awc2gKZusf/IvEZCWF/PO5mqf22F9\n3VKdvLbCB6lbz4qVPnVWeecfNcuO2X7llYi8e9L7+TJVbLSz1lw0cYnpb7sX\nHSpDxRBTyR+OCIQOV6kGPEKyUqjMr926t5hELYHPKso8Z9OOvTiA7dkCZD9i\nLyQR2qTPOeLwx3yeTRmwWYLUnQokIhet9WwCP67VjIbYIM29v/2hvODdnj/Q\n3zNwyYdviD3I+byRCZKLO2boesmUylB8TjNEEnK+xBurTitMjHs7GH3RxxxK\nNQWVUwO5w8xrBkDnY8y5Odvc/42vhiEPCWC7C5URM0rUdbDnXBOvfYgp8Z5F\nTW4C\r\n=OMuz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5k2vEX9Va8NmlNb75Yh1bAVs5cVTDrgZLH3EelTVM1AiEA6Mo0mx7qVH9kU60mPna+gREZ4whnyLp4wXs+9c9I1i8="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.3.6_1580984792789_0.3702128082676348"},"_hasShrinkwrap":false},"2.4.0":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"a8974e62424832169ba24a7036b1e567d55c08ed","_id":"@areslabs/alita@2.4.0","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-NqZq7fJH6iuhs2Xk7r7rOosilrklYorAdm9xu5HF+p7JgKFyCI6JfQIjHqXFwc8B3Dry4oDtv2rCesitgPWlWQ==","shasum":"9d0cb77660f5b829f31e52e0cd4bde9bd130f9fb","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.0.tgz","fileCount":5,"unpackedSize":8651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUJ5dCRA9TVsSAnZWagAA+JwQAIMYXZ+JxXiFe1QTzo0i\n3LeQ0cirRTb+xZNT58LHBARZ0szYtG4cv0jrtT0f36eYyxx2Ho3XVJDHt1e2\npYh0eF0XF8NhPvhypomvuokWg48wYUrEHN88Mo/a0i1TNstLV6PR4RgEtIy9\nFkkFOE0WmBgAJw3oKCbtF/EyCnwzIB5sQDImm/Bpk/7wRJoyV51jZF9WPSNz\nj6nhCAX3vTWrI6ViF4s2Pb60ZGiQofWycSCrGVKDgapTR3N8hDfGWRsy22LF\nLggPi0I8TWkVN7fvLxJZR83oHDi0GuncbWkZyDBy5QT57bf5uy1oWdf8Kvco\nOPHwH9viSv1L7dTNIGMa7/J47XPcq/sSIqkL7d6D+58lhgKehjWYz5Atk70+\nm7N+wOxmUSWtHIwHyDYqKhThzat0nIMPA8aPdJG3HKuiNDGvuB2QPcuf46YQ\nLYPLkXlxrA7Qp6WpV2vLmQmGbQ0rUnfTGa8XtfsH9lKUweyWl1FVa+qxj5Ve\nHeJM8kC2NiglxnkQ+lZs1ceykAQPEddmX98gZCCCP/H1NxEGBntPZ4Mi/TBC\nwdKVeZWtDKjw+cziXQKNXN9z52EjMHf0+DBBtDqghgux6mPs3JNFjePSDvUx\nmIIG2bcgSQdN0Izvh+j1+eMJxlERs1jrW6q0bJ83kL0oqSqWjDOhIJQbIM+9\nCkZP\r\n=Zj1M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJpmwEPlR37d/pzrJaCXEuFd2pXFU5Tczf8B4OxVeYZAiAobeKBxusAdkpvT+9f24p8xhx/V8NRowwKI6y5svhYvw=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.0_1582341724707_0.897064953282269"},"_hasShrinkwrap":false},"2.4.1":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"4b0821e5ebc461373e9c121a895efc541c91bf45","_id":"@areslabs/alita@2.4.1","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-RDQum8LSA3LS/jS9sVXsJtVZs22KPX+I5utchtGY7ZMHCf0iEUyHqn27pgdAhoBcCUKH2iLpL97vF8kKu+b87A==","shasum":"60fc6b00bb1db9a7a5f22ce4cef522788327391f","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.1.tgz","fileCount":5,"unpackedSize":8796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUnwMCRA9TVsSAnZWagAAqPEP/3MFMEzFsU7MVZHnEQCc\nkEsoYcTcjDCLD4Yg7RV6Jv+1MffO4wMLdDXcWPCc9KF0SbhBLGJnfgSTNnZA\nyf6e5vj6QGM4viWPe3kyV2pAC/1WvhOECcXlrHDBCr+5ZVGzBtVNf8xOZQql\niTMlP9+T/kfzb55bupoq7eyGSZJDq6WhMQx4rtDCrpMh4LyuBt51nHg9lbsK\nCHGhcNlx1oUdj2S4ScxFS+uYNlAXA1oYFl4oeM9TpS85+rpFjCJMmM+1fReS\na+EaQz19DtQPJ7/SUqTnHr0EGLlTtI8SLl8gyGOrBT838ej+WhIkeHh9qWID\nAOPJ3ftyPI0OEB+og20Tdd629Bzv8KymazSjmHZubcDnzEt6Fz8dPtG1kQ++\nDZJ3gic0MGds+0zcyBTVn3esbDUDVqitNfnhku0ayeecDDUPRbcnehQx5LQQ\nAAXszjI6HBxgmB+pxyhH2AXEvzcGXau1tBXQ6HyKlD8uTDrrP9akj5uR8fd0\nLDA3R4JZGKlBt8hQl86iOonZ2VvoQG7ux7GIlKtFdMeN1pGfaZdrl8oA79VG\nle14kIK/xUpYKRAgliy4NLeKGbVTa7RwU9VT+cGwqMs984x96pyW9LRzj2Xc\njKQrzUvvSBURhNCwGlaUAhO8VTrlVVp3NDg97+rWSW2FnszhKCvRzI/GBIFr\nCho7\r\n=kTjl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2YBNUT7Rx/MbSRJsiRgh44R8zwJU5MWWL2r4Yt/+fbAiB6JyeyR0tIB3ikj5kggyuR09JJih/m0U+eODWwwO1cTw=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.1_1582464011938_0.991724229692746"},"_hasShrinkwrap":false},"2.4.2":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"1bed2a4978d79f4d028d9b400dedc1b0c542b582","_id":"@areslabs/alita@2.4.2","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-t60MYPblRojE4RhkhwiQlrjaJeiuFY9Zm102GkYDhQqLyQP+f46zc2o0C65ir2j4edk7NeeOGvs2SUJT0beowg==","shasum":"d4248010d0862b154c49da8208031e3df01ce927","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.2.tgz","fileCount":5,"unpackedSize":8941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecuFfCRA9TVsSAnZWagAANM4P/RqmJxGVy2I4E53o3xPI\nsfZpMdhzY8eTfmH8AbhnPW6ks8sdoNKksDw1wdTw4Q65roWM+8ppvJlRB7kP\njy7psZfwwafqqUifouGiC0nClydLYWlL0jB0FrFLSU4lwOz1SWkKsMps/6jn\ngaeC8iqKt2l581lmOqIXZXr9n29BWcM23sprE+ShscBB2iat/dER3VUVAS4U\n1CfYj5axfCgc79ImdzDCvLhxt6K2exjkP5N7ESE5Ca6Gf3pjtmAyGWXwQEuv\nog/u8v5sv2AepmtxgjSGdK+l75uKZtOCSCTpYAi4AwXqokJ8KftvocwkRasZ\njWn3muCJSqirKnglbK/0qTDJ8MGqgeIXd76njWGq80UDb1ltim2g969xOrLp\nyw4SYg3Fp/Q+xQbS3n6ebuuzqSYIOjYKNSb/shGvzxeKXJmX+np5brxNcpK6\ndLWQBb63BjRrftq2lLxsht8MYVQ8HqiYj3aWvD9nobrZhn0fupNVRL6mJoEZ\n7QxIIReAv/pLIr7hBQ+Bwjd0QXoXi9HE4sY4rboDIJqVW3Y29jVqdIllDmd/\nuCJNYws/eCP3OjIdrnf9YfOXwUfroVVkWpvBYVrYCuYVaoBbMOZkBjgPQRUA\nHHN4bk6tJn1Mt++i5QUAC0lM3L1q6ul+Q+FBzxcDoxW5F7Qwxg11/hRAPH2g\nvmxJ\r\n=WE1f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5Bf8s9VJbemTzXZovUordtB0kH4dsZj0m4uAPpUaeSAiEAhitjDfHw+dR4A6k/rLMiQh2BKWRklaovGURDGfgEHUc="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.2_1584587102930_0.07420243671267146"},"_hasShrinkwrap":false},"2.4.3":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"92feb0fa9bc53d34c7c300f4cb1aaccc3af3f27a","_id":"@areslabs/alita@2.4.3","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-VWHDQPIF4/pTc15iWBmjff7Wi/NaIKf/9pdLs6KLrtrWeI+OYMqPDV9lUl8qlonlHywPpYEx4SQjONtH3GTvjQ==","shasum":"663a6ce2d5a8ac3ba737403866a75f89099a98dd","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.3.tgz","fileCount":5,"unpackedSize":9086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehYDXCRA9TVsSAnZWagAAcGwQAJFhKWSMNIleBTEGhsS/\nEaX/rhv77QIcaGUJuDsVezG9bLNPv7GhjvjEKfqZ4U3Rm1aZIVF3wINdocuC\nvugTbeMJ4nNvw/4ckZ5YjQu+s1edAQK9c8UfMEgMdzRQCYyOVS8Rtz1n2y3Y\nU2XzaEsbRS3rzO8nkBxZk0yIcK5h6bwPW9h042hAIRZxRkGss3TtlMB10Ued\nuPoIqn0QSyXE6UHh2NS0CQBC79GD1BWhizlf0Src8NA3pRkIWz8e/wmmwFm2\nW3socZwZgtgiHhmfVJ90309776Gmn8j1nxHIxVUAO++f/jQkebrL78uYTJPI\n2rHqDKQRp8wsOoOK8HDhXXJY49ZK8KhsOEMOabUVzrbAYRiSagSf5VCnG3n+\nlAL5ZL3ksJTMAk/dpmImy57D+BsivkS0mHQ50mYy1cU0us8aBQ+GFg5hpUsC\nNVUWcGZNk2yZcOnNjTvl3N0jCzar40mCoLZfXgVGejX6WG+dbeKF8uW2dLtr\n2fvC7aVitHqGDbdQQy4s20KAeL+UYAcHjxhbTwRGCiXe23104Vzk/LG0QCEg\nCPg5jl5r6yNHke73yjqjgJQo6QgL2vOF+7Pe+t1HlbxY1CLgyvc/jPKmajXg\nHTeZ2Omn3f6Rbr9dsUUJ6PwIiWtvxEb+OhEYlfqH2myW78aAs6KStgUn0CXe\n62lX\r\n=tdVc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDS2j2X//JGQ6qgrZTRoz+hKSonJsEd69ahOZjet/7hqAIgS9nz9VPbvMNQjOBK4Wk69ELb3+DxE6pLpkhmErJWX1Q="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.3_1585807575399_0.2743076563042621"},"_hasShrinkwrap":false},"2.4.4":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.4","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"93bc0b66d71102c18329877799c7030e9233ea0a","_id":"@areslabs/alita@2.4.4","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-3oeijRCOk1k5uADfDzQ6UyDpv/j1OsEmBNLeGOfm6dp2VHrZAyWm0SwvyPckYJlGQBeWHAMbCqz47f+eA+rlfQ==","shasum":"0c6d59d6fc62fabcabd9984742a77a66f681c5b4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.4.tgz","fileCount":5,"unpackedSize":9231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekBj6CRA9TVsSAnZWagAAv0oP/AyGWbRTW/wAeDkLR05s\nEQBKAxYbV2vKNc/wqIGn67r2JbsjuuGTnp9CnbOAYKzugeAELvvW5lBwhYsp\nOxCbMhaR7c0DMqT6K8fNLuuGIr2jS0IdwkPKfAZ+M9/Big57ULyb/RjiAlN+\n06xOc56ET2ptklxjm6zKgqrasdBSPViKJLpEdstOJuD/v2aC2zy7qPPdFHAN\nqkpSNYOseOhJToEB8fG6vlqzEHIRdT4ljc4ElPI2qk9puWakVHcSDmgtJOKG\n8Dsf54HbnonYNuBMCEbJR7XcUy4WsvAim+DQQdSgVWibcEybJ74dcGtZcBsA\nT/m0EnUwFDb7laXZKEmFyT9SR/dY2CmsZ9DU9yfI6OkxzK11p285Z0rXwbaG\nH99h97RpOVBHhXTS5eJCpxQZwTwBlU4UJ5O8qMnINCpAq08/AGQhwu4T0hCb\nHfNU4uIiK8XK1pyvWO/ls5OH1FKec+dTqmitiwQHq0qOP7LM8to/9B/Mn3xw\n6YkbMbyKhpH1KqQs1K5N9VPqlkKTxGC+p7S9ZgvdfkQaRCucvC0tnkBHmGQP\ncLaSU9LhKSnrSp9Czvwe2slKSeVaL6FkY+ata2YayvthFajvBSu29KtEvmwe\nAW77Xzur4yYvsDkAQk714VJZIJQzyXPbooVx2nHtmyF1uU4w4oeiWmTxpkrO\nieTW\r\n=07IS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7wb3XWVgo4uU0ppbaL0qMVnOFg8hBScIvvrrIkAt4HQIgL6SyO3XsAkVBKec090VZ6JTrEY5iCH5rxF3PoPg4/Qw="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.4_1586501882269_0.19412454377836053"},"_hasShrinkwrap":false},"2.4.5":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.5","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"6db86215add945be89d8044247ee5df96c674f03","_id":"@areslabs/alita@2.4.5","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-KZvHxDL+VHY5B1r/PE4RhUUT/6sR+3vbUbYaIxXjClQ0g3J+u5aZEy1uT4rgnytmMVpzNlikn8eUp/OqLJpJdQ==","shasum":"325b371ae821dfd17ed245bc2d82fc0157852eae","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.5.tgz","fileCount":5,"unpackedSize":9376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekCEHCRA9TVsSAnZWagAAC3wP/16Suiufvghn7NN3p4fL\nxlm7kJXVO+5QPSI40F1JsI16qlGSfIbIED+VTMwDildt9AuxKw96JsVtNIj5\nGlto5REN3PyRh80Mm6PcpmYeASGdSqgeKZKFJJp5JrDWSHstKX9DXU/BTO/g\nj5r4m9wTdb7HkPJgxpx54reeAUd7s+vjxVMYJQtUkcQI1k7f36IYNcATHbff\nXs+DCrvu99GcfEb5V5uPnJNPfNODTCYn7BXq5E6HLa3auLCqVMhAwwl9E5zU\n36oQ+jHKIM9LUlUxmNX2FuySvTnhPznIHrgSmyPQIKXtMdAyW4/3G6lC8b0j\n5hAl/Zd59KtleTaeYzn0bVadyOD4XZKknN0ETt7ao0Zrs4+7B6uHDkjDi8jE\n8lsP9m9c304RwBmWN26BOHmdzTayEzxMlOM5BgFjs9g4OPNFDq0VveCa7q6S\nQ92b0ri1ANRK2EJNd6rQf7MJwCmQGtlvyZ7h6+DzXyCPkF9Nig35BdZaX/kO\nD55LXbJbpTqRj0vklC9QSGBSjrjKpMHn+KXGHzjmjiKr6K3e5SZVw4Uepc+f\nePUXJlGsJHLAX9QvAXBrfFhWzmu7tuKll9UCv9i5VFwmodte2PXrFEEIdGeJ\nRuPK1c59vX79kxblfMeu1SbI7YRkTEEdwqNUx5P1Ww3do7j7UvX1Ve/DyEUz\n5Nr5\r\n=u4ZZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH1DTZSqx277GzhzDovY/ELooSLylB76w7g1b6fglvfZAiBUCsfG7cvLKULqmKKsSdjlcthZd3mFOPmGcaYDYnqeng=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.5_1586503942835_0.3455110182565997"},"_hasShrinkwrap":false},"2.4.6":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.4.6","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"b04a83b0bdfe6b8a5b049b9cb222343b52cc2b3d","_id":"@areslabs/alita@2.4.6","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-A1R5l696A1dWKKVFB3/o8Lp5fQh6bi7rSuJFAr8aPmYKBlc30VTSEfD7SDxcWtKlGcqijl8zTSJ+kKO5JhQstQ==","shasum":"efdf468e24e6591fde9e77919b4b10afded236e9","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.4.6.tgz","fileCount":5,"unpackedSize":9521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemFG+CRA9TVsSAnZWagAAIjMP/ihsFO+af3WaTF6NNWTM\nbRf1pxObYIZzoiKek4NPpoF3/SL79KBOrZDg20J/MoZkGgenTGSctFEm39FV\nHdWXBBOAcAKxuzCfoSr3eFPmb4ZJBU7E4UA68B6Hp/oo6E7/lbKVHBgiAmCT\nhiSKn0XDPdDwFHbQ4/GVOHvnwkb40+CKR451eo+AUj7S3628ryJ4er01nxYP\nHS4AtODX+WpBDjf/DXxJ3QuSaa7T5Y0ZYY9iI9+CAQrh4F3k+yFcsLkEHqGL\n0Hn+IwElgvSjaYkcJiYBwAzmOs/PeWtxyH/CSa67PVyUQ35U/Dsn3moAEyq/\njUDQZcWaB/IPVz41t5QZG5gh0SEikgijm85EDxEPS5p2YKqrqTp2NJ1HkSVf\nPsRcI/c3lU3cUcNbOA6OWOWgG5o4FF/J09sZKiPAXinGr/WecR/2Zyj9+KRo\nw1iJM7jUGxWsnZiFHDmS8XftbQRBvjKbqbFIS/ctQiGxRnhsD/RN173AuClO\n/IuvLBsPee2JNVAEghaZ/gWaDn/H4VpEkfOb7B67+jvpoQp/G3rur+DyPlmT\nKPiExADMF0rUB6gBAGLKfPgmjpGzOqmFwHV4JO+SMJ+C1zAj3VX7652ZPPgo\nnxKbSgqeOAfM93Lm4j1TPDnUeCsb8vbzBwOmRVL+jxvaswtlRF6YMn4GoHpK\nUTgW\r\n=bcpK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrdQkI+xPeNi/p4PuoNw2sVn+4/4lFmn/W31nxbbB/FAiEA9I9CqA84ifXCmCPrzgpj/fIJujXPz+pfLkQYyRMrNlY="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.4.6_1587040702179_0.8362618172409064"},"_hasShrinkwrap":false},"2.5.0":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.5.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"c70b6c92a31d3ea77e421b84d92773a6d9200855","_id":"@areslabs/alita@2.5.0","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-N8vyi4ydFNMEKnqi+EFDPvtEA+znadjSH7rqxLA1ut7/06+/TKiPa2QAl5vZ5me9ncH36IhgDYnrNUHoaSsIRA==","shasum":"1c9ef517c7ba97e626ef46eeabdb1ac38a45730a","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.5.0.tgz","fileCount":5,"unpackedSize":9665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenRBDCRA9TVsSAnZWagAAwYwQAIrXJOt9UNkWCQNuUwj+\n7rbycwJmp7LvimOBPu47LaU9RxfQG+wAVFRUuZ0Ife8MSpp5Gfe7zgAbZhcV\nod6ghGrPvGIEiM36RUL4+5OYjDK1+rk5sa4LUlPfFy91VdCMKI2rgSfv8pBs\nrugYo/+4azbcN676WsrDcaYfiw33xoK/pR2NhDddE/pb5qRYQov5l6lvlkiJ\nMibBOYsK0OjpzeGctS41eS9YZUHxoZUWh/mIRvcmRfNWXex2QR2lOl6ifnjK\natRaMZzW6YtliKhq7m1CouXID1NLpoPFpVUn8tJV5Kh8XGcj8KuItks41Pt/\nQnZfbC4Nz2Az0jnWN22WY3Ii9hQfOPqfL3NG5/2KXBp6cwCSS1ng7MS7x7dj\noiQjR+DMFjyvAEBZmdZD0e8XmSgFlMgfkLVea+JYvdN/+/aWu0bstzgd9Szv\n+AjIQS8eLkrng6lcF2DAuSTRgNK7YDnfot3lGvyzCOJR9LBIRCrp06eQdD1Y\nFv2NhYtziB9Lf/fuA2G5gZSO/2lizwavFjOG1MNt8VK145E/pHIMA/kPIU7K\npv14EZgcroYSlz6FTus9Yu0w1cYnhiV0Feq4pRnuw7ddNr2W9/nvOISNwusy\nGzgjP0EUsx2YveXy6R39w5lzN+fHZKt0AUV2Jf0F3XeqlaBRJhVr6yzLy9n+\n7pH+\r\n=bG+k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZbJTn1dA9I/ro7rh0v1M0NJXZlBYieZ0zzPizcJhEOAiEAj5DSRm6i0vEZaJqvkwOm5ArVYkuCmQCLxyHbr3Fn3VA="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.5.0_1587351619366_0.5183302650550234"},"_hasShrinkwrap":false},"2.5.1":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.5.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"fbd12e3bf1532e7307528e20b9f1fdc5a164e82c","_id":"@areslabs/alita@2.5.1","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-VU4uXU+YJyxC2X+R3FykAVG1hQOGrgrONXGp3SbxbqQScEWrc4WSsOBdv7aQTK4mIDDkq2EI4mweNYlxAWSmQA==","shasum":"ee09367e8d6629390002eed1c3a35767d6685bc4","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.5.1.tgz","fileCount":5,"unpackedSize":9810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqj/PCRA9TVsSAnZWagAABSwP+QEG/kdVGSvwvlWbpsAI\nled7BWxS2WqVDM+Y2NHyJSDPNfxtZ2GHS3UAYXnASWu16uIC+xcZvXhssqqa\n4Cor6gv3z//e7Bw0fuWRlKwj0MAmM/7AEixrYTsSlAXD2PFoAwYn0o+Yu4zi\nGPL5hTMHoS+ZfGvOAFwbMsK3+y7nSMNBFeS0G08F2ThHZmUv/tbv4s0127z9\nla2I4m4lQYhLmLZuGduXLhbH9gdzRqGuRbu6Q6jNmpjLPQlDz2xpDWEdzVpA\n0YOf+hikTDei3Lgt8tGfZpX76YS3sBAD/VNaj263aoteIXOl3lAhI99xzrEt\n/5zKlZ96WaN3hK19qskYQ9T+CS4IrKl+bUviDU8a9au2wfpp0+4Lx6v/MO9s\nusib4gwCn6TiyWEFfEWOuaFpE/B9wMTA9ejGr3G/r/AGwIjpK+vL0PTuEG5K\nwdjzwuDkrtuiKqJPW959YRxi24abQvr78cIIBZ9XhzlDXwm1wv+9NtIRne9G\nJmCVSOgIGmhURkD7DUS+T9PLIgP/hBsXai8IKRcVo0f4HbfjrpvL0U2vfIPl\nYU3YrhETTgXEyemxUwKhnXF33AkDOscdPMoTKBZI9sxjXjxv2C5bc2OTNZEw\np1ze+CVqbsPRfC0L6Hc17L5qJPhpgSoS5wMAtAuD7pAMnowa4F77DMcTsx5U\n3M2e\r\n=kkq2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+4iad8l++I72tUEITvX6Dc09abaqG6WMJny35jyflgQIgE5I6EXtk7gTCS9qwXNvalQWaiRNNAJohR1Rs3+60gfI="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.5.1_1588215759388_0.028186058400824887"},"_hasShrinkwrap":false},"2.6.0":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.6.0","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"c15cf8cd2145a53da54138cd6e822f3b29a9b5c8","_id":"@areslabs/alita@2.6.0","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-RAYPOU5kwoH5Ck50MX+jefpY6ctLSsDmDarjghUvH19dmYeFgCHQgPRQf6XK7KLDzET5+uaMbZYqXTxXQeBZ5Q==","shasum":"f52750a6c1869eed3390aa0da08de037ff7e7dc2","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.6.0.tgz","fileCount":5,"unpackedSize":9954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevfYECRA9TVsSAnZWagAAE5YP/1fEjhCSwGzYBM7LPdxC\np6Fc/wr2/FXsXhRNubAX2XAYvTfX9ThPkitS0iv+WnTp8flsall4Gt4ZgqN/\ntVL+7SsKGZ2T2kPcnnZWCn+s5n/unJ5VVJAvqb+7H3qXaoPsjLjGq0QoY1oT\nNWKYYEsZkkkn2xhQnHedDPg2Qp1cfbYOiMag5+WCn14z3ymvTitufl2gJpV6\nI+Cp+TwVeX/aJE5sjpi1A+FjVWhYGig+SBRH5/e12TE/E5Eaqmb3+gwwYBDl\n/66oMvbQJoi8BOU8B9eKx9+3/myj0I7wy9RYzv75FXNZSRme5fzLPfOGWOxR\nuP1H23Pe5vbnj/eFBycVNORxflwr7rquhpd8/JOuZ2hrLVeHfpTunu8Dnc2l\nBmumXDVm5uhhoRbTxrdLTpkpQrDmM9KTMaSm35SUEMDzarGzL4txXvW19fcv\n2a8ZvX1vzwH0ZIMarWvqAO4zSOgvTvI3nHhe/6PVdAjHVITcN1G2Wox5goSe\nQnX4BnZr4xIfRdrMTPdpUlDOKL4w7YErNz8MUFM/1fHE03BmtjjJYozHjM8t\nZYhCM9mbbA9JMft3p4uS8VARwhWgxEUFQu9/fSi6PAVCbWmvn4iAvg7af3Dn\nvCIQs4k7DKaGyCowWOh1xbi21x9wgihV95nPbURW8JH04JSPBnySdCs1+5pJ\nQuPZ\r\n=BYdv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQwNgrvEn7OdkNIGNoyfI9AFP3xeM2lG26ppoX1Lo0LAiAx72awhYs/erYM7XEiIC7CLvaPTDXSVpXtEK2Ir92g6A=="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.6.0_1589507588124_0.00334855241056764"},"_hasShrinkwrap":false},"2.6.1":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.6.1","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"9fa67462881c8d81110f31357e864356d0754152","_id":"@areslabs/alita@2.6.1","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-cRqeqibX+X6SY7lW/MiIlC//jTHyW+UEM5kbLsu60zYQinFsdMFBktD+Rf5mUcECl9P7X6+410uD2f1E7y8KFw==","shasum":"50287d9f994d627853d57673a9055c134506e9c7","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.6.1.tgz","fileCount":5,"unpackedSize":10099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexpIlCRA9TVsSAnZWagAAGb8P/0Xuj8UGcXsWVAcGv2+a\nIlIoveeYQLnJbl7E1pnQuIXorbmN6OnP3Ycr1zOKATidqpmEEjeAAM0YWXVm\nAsL/0AqyJ7q3H76R2QtuHCnvhZXbLAULw0WqTRug4AYtH9Ehw4z7/DVukQGF\n4MclD1SYPMbox39153oDG47rVsjl5oGDKPWvgRCnhKRe7sFlqsgwzIBj8MNt\nNCni9LMd29nyJjOMQk1ivQRQabNsdstLQCL3hPsH02xSAbix0sGFdaJNVge/\nbEZ5Awr3yD2MoviyG8rNNPrd3mhc4H48XvzHJyiSCUv/28bttlcEU4iTMUoo\nxdJ6V7AwJ3prhise1XUb3v4bYjo58LKDTagNacl6W6LDMyK3MD9L1O62DbbQ\n1+2QBbqqyJEBPVNqdcoD0WZ9heTt/PLrwi1TR8q6K2p3MkQyGS3cWHu4h+C1\nr1oOEiJyiduqGJHyS+BG3uJyIa1VMkBXMGKXJup/tUGRfjvc2vIyjCfgHV2g\nvTGEgYMmAVKE4rG7Aj8J50oTnOlRIG+Fzf4HVQOrUYD1PJxs/qbbpZdNKQN3\ny3tC0c29j45qf+i0zLNiPBhNRXcWrnJGC8/Hzc6zbjwpe257ilvnX2nzyCZH\ni47kGcUzE2lQ+HD5QmxkuK8umz2dlf4h9by1D4McmTXzrYIPDyYX4JaOw39B\nJFOU\r\n=i57A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIDoLfehyEpCMKI8pj1xTbJdAS51ViqpVRDe4LCDO25t1Ah8aY2NkhawNRKyFnJf9Hw7lUOCrxE1jPYWlFxhGsiQs"}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.6.1_1590071844630_0.7120842163333805"},"_hasShrinkwrap":false},"2.6.2":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.6.2","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"11988af808d021c6609a89be933dcb55cd4f4430","_id":"@areslabs/alita@2.6.2","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-qV7j42c5MXhknc2vTNdxUxDNO2pIk1zi/sv+Uai2j+aBXuog3WAbg0eP19eTPUOxPITiRJ2KLxSIop5F39JU2A==","shasum":"7809e5f77fb6f6481525def6863a8a131bea650b","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.6.2.tgz","fileCount":5,"unpackedSize":10244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexpP3CRA9TVsSAnZWagAAKpIP/011BS2hWATGLh+XXUP0\nurt5yWdixr9v1e6P5IyYV1ozqNkztbR8oLnnrTvev5AcaVdt9IgkuMLH9d8d\naS46/OUAs39i4m5up4o1+k4qp/b0m+Us8J2jYA3TNiRxSgDWLSRU58re0KUD\naNysZtiVq/u8EKBZr2AmuIjalUcPh7o3aOrFYF4ba7d+S9LV2Furm0TmxAyb\ng5Jk+tMhIJuUpD/onXLzVwAqVK+HNLsqU6afQQ9xn/5KSDV5xmHATdOUfvfv\nidXMBiKldfWmTTqAApcgHLwAJZ1uC+ROnZvjRaNs2his2Y+AztC7OoASqmF5\nrKTAZo4MZdZO9AgCNQVKcdjAKbhpVr4/z/XpoziTKh9iffmyyH+3py3CIKHe\nP/FNfrw3fkWe3QSfoogYONsl5/O9hmnNTJfuKWkjd5ndmP1tL7GWj13BMPrb\nPtXxCEPdaMKwlnuJ6lEubKGBgIprYBdvWlbA7ZS6kiRcH4o+aYBgowTalBmG\npl6skn0j8bfg5tlDpANCLf7q1YSUql5c8X8vE1MbKDBxZMib2GsQJTaBAIC+\nv8FgRliQEB6X7WrHsUurTMSBJRWz2gvQ6KHCpqDtMY48sUrRtDTsNdVug7M7\nUNsb0xD7QTCdDINxh4rPR5E+RtyAIMbJhqOV3qnfl7P5jToIt3HjQkeOZWIr\nGn7o\r\n=AVFm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjUuX2+XFP12k8s3F/f1VA6UhF7ebZZYtef7GVQqtL/gIgMcUuYohiNaS62H3Cvvisrav0gFaLVb1x8zHWM1+iwLc="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.6.2_1590072310976_0.8824700172585469"},"_hasShrinkwrap":false},"2.6.3":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.6.3","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"d132c3577ae24f88a19b5aad7946530bb34e6605","_id":"@areslabs/alita@2.6.3","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-sEpi5dioVYGjnzHvfiBzUsbNrZc/5bqhMsGu/1yzb938pNpZx+TDEDIulS65fwYRPkDFHY4YocR9b8dnum98Hg==","shasum":"7539c6324c3547d2606e4488608ee4d54d38b675","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.6.3.tgz","fileCount":5,"unpackedSize":10389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexpWLCRA9TVsSAnZWagAA0s8P/ivw9CAwHU6W9GIT9Vmz\nV1wDXErDNfOo7ZShomWVvIzPDPPC47iVcfmAVzwOxMrvNN7O/7HHYDM8uASp\n1MztFfTZkG8qdJXcoYXpQdE2j2NOBmeW8ZCNCn9bfpXyLBnjOr1I/E69QV2r\n7w4gm58Kz54jLFO3h1wndY33pN4pDxTfYbp/zL8APAJi/r9Mzn14ux9Z3xhz\nopfxDnfeyiJEGAfc5/y29LYnCAvDK0mbmQeKFAIp3p2um16Q/FUHv0ZmbVLp\ncTweTeoBNa3PtwrgmZsEbvrfhJMcwDuI0G4o8tzQJHAjKweRfp9a1XNM6q0s\nZbeopQtwf70yMNpl6o9nSyywPs4ghkcV+ckcG7A2sJpepC5Ity+z7WCxayhr\nVbNr9CNZVMfdqdh9JueRrI3tFJRk9+YxF6ksFq2Ez6vUISJWxmG1ZNS52gzL\nHF+hrQ72zVv+4VtlB2n1hOJbLxqZWVpn+jBRiJdI+ENelZXyFC6yKsu5of+U\nO+iIzyvw8UQul3hDS6S4XTu+D3P8omIsazra/Wsm2yhFHKfheF2rVLiq6Zc0\nyMC9BOTfsMTFtG5IA4QDAj5Kd705jEIl8RF4lloAUYdwZ6haomnVEX87Fixn\neKwsuO/lQ1csR4t9zGsa8i74iBbq0acnBLN3WvPHhyIaf7MEwznS67ftp02A\nuL67\r\n=RjE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjO7DUZ4aUpOT18AHGlBXLTSmu6sX5rlgnxpJfSxoyjAiEAsIjWKCEflaB84RtQ7jpb3nYsakTnUhY4FkvafzKkcuQ="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.6.3_1590072715404_0.9671903607091041"},"_hasShrinkwrap":false},"2.6.4":{"name":"@areslabs/alita","bin":{"alita":"lib/index.js"},"keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"version":"2.6.4","description":"首个ReactNative转微信小程序引擎","main":"./lib/index.js","scripts":{"test":"echo '正在补充测试用例。。。' && jest","eslint":"eslint .","fix":"eslint . --fix","build":"rm -fr lib && babel src --out-dir lib --extensions \".js,.ts\"","link":"npm run compiler && sudo npm link"},"authors":"yankang (https://github.com/ykforerlang)","license":"MIT","dependencies":{"chalk":"^3.0.0","fs-extra":"^7.0.0","getopts":"^2.2.3"},"gitHead":"4af8073e27777ef473d452af0927f47b1999064f","_id":"@areslabs/alita@2.6.4","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-HuYb7EuTlKHrO9WntveDrwaVO33H/C1CbAh3wWN9RuOMsxzYblj41pAcZBkNGdpuWUhSDGiWtzlxX5Zu9YVSUQ==","shasum":"a6b72dafd3623468b69714afe970f50a8020373f","tarball":"https://registry.npmjs.org/@areslabs/alita/-/alita-2.6.4.tgz","fileCount":5,"unpackedSize":10534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexy/TCRA9TVsSAnZWagAAAdIQAJGpGklWiNOkGkNrnV7H\nvNuI6ijWRsmqWHC0953v0jJvtiyXZx5TggD4rSPw/W6gGGvwb9MjJmqzESAo\n50B1QZRiGyHYHpJRujNfA+WGO53kekmklj7QYRmJybevulR5LtMKhdgDDCDv\nZmv0N5g5UnTEgtRSZUlWcDXNki8wbIYONkZU+c4goCOG2bJalhrj1t6CMO14\nije0w0yihd+cQBI4tJ8bGI8ZRNlR48HYK9ZbrbtiiUHPj3Zmw9Z+RfSOp6Em\naM+x6mpnsw3srlK5pGgEAVLugoSHeDfV9/lSV4QxC7sN8Crgl4omzyJJWnto\nJtej1ST9ZdV3BVnq3RcZaDw1l8bzCre1sOe6X2Aqss3sfOoY8E53YueJRd0U\nM10GJMcdsQ8siEVVKCOoeCtx0uWAMjm8v6/aaZtTNzCxwfgOpZCHes8wByNt\nBwZKqTdZh2AL8vAVFLJlE8yMaFciV5vHwPKef7vDRS8ZsMFBCO8QwNUSmW5v\nOv6MhRMX6jMRwgvLGe5QKow+CPUN7VQR/ZbIn2JWDb8qdnb/quqRV83ZmsVs\nkyeOfwLPB1D/hYf16LgZg/CjxvQ8po7x+vZbsn1Fo3NvH2xCFPHjNGwDU/Gx\nlvyq3RHCpyyBFgH0Gw9hCwkLbdzBMSdrFTf10cwOMhCB2mReh4QYTCSjkM8y\nvdgR\r\n=Mqma\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuK/Ce/7+Cj5YKBVX5jbm6e08r63uTgLqkMwc/yCM+3AIgM/21uY9pJDOU5rwATcHonaC2gEwOGRt2fy6FaCVi72w="}]},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"_npmUser":{"name":"ykforerlang","email":"1527997464@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alita_2.6.4_1590112210821_0.16585847641055618"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-14T03:25:18.437Z","1.0.0":"2019-05-14T03:25:18.731Z","modified":"2022-04-04T15:23:22.454Z","1.0.1":"2019-05-26T05:07:42.392Z","1.0.2-beta.1":"2019-06-24T03:47:44.219Z","1.0.2-beta.2":"2019-07-08T02:24:38.834Z","1.1.0":"2019-07-08T07:16:54.238Z","1.1.1-beta.0":"2019-07-12T01:00:40.564Z","1.1.1-beta.1":"2019-07-12T01:58:57.499Z","1.1.1":"2019-07-17T01:28:33.230Z","1.2.0-beta.0":"2019-07-18T01:47:22.801Z","1.2.0-beta.1":"2019-07-23T02:26:05.849Z","1.2.0-beta.2":"2019-07-23T06:12:42.161Z","1.2.0-beta.3":"2019-07-24T02:20:44.147Z","1.2.0-beta.5":"2019-07-24T06:24:20.980Z","1.2.0-beta.6":"2019-07-25T07:01:47.783Z","1.2.0-beta.7":"2019-07-30T02:58:47.129Z","1.2.0-beta.8":"2019-07-31T03:48:09.726Z","1.2.0-beta.9":"2019-08-01T01:05:45.276Z","1.2.0-beta.10":"2019-08-02T06:12:48.635Z","1.2.0-beta.11":"2019-08-03T06:49:32.515Z","1.2.0-beta.13":"2019-08-08T02:06:40.925Z","1.2.0":"2019-08-12T09:46:47.159Z","1.2.1-beta.0":"2019-08-21T09:55:09.358Z","1.2.1-beta.1":"2019-08-21T09:58:08.714Z","1.2.1":"2019-08-21T10:04:58.475Z","1.2.2":"2019-08-26T01:39:50.134Z","1.2.3-beta.1":"2019-09-03T10:38:35.070Z","1.2.3":"2019-09-18T07:03:23.630Z","1.2.4":"2019-09-18T07:26:06.085Z","1.2.5-beta.0":"2019-09-19T06:38:04.212Z","1.2.5":"2019-09-19T07:32:31.449Z","1.2.3-lgsd.0":"2019-09-23T06:35:49.829Z","1.2.3-lgsd.1":"2019-09-23T07:27:46.276Z","1.2.6-beta.0":"2019-09-25T01:12:13.026Z","1.2.6":"2019-09-25T02:10:06.979Z","1.2.7":"2019-10-09T02:52:46.061Z","1.2.8":"2019-10-09T11:32:24.761Z","1.2.9-beta.0":"2019-10-21T10:38:18.362Z","1.2.9":"2019-10-23T07:13:43.016Z","1.2.10-beta.0":"2019-10-24T02:55:33.983Z","1.2.10-beta.1":"2019-10-24T03:08:36.817Z","1.2.10-beta.2":"2019-10-24T03:24:06.517Z","1.2.10":"2019-10-24T04:00:47.148Z","1.3.0-beta.0":"2019-10-30T06:45:17.287Z","1.3.0-beta.1":"2019-10-30T06:56:51.249Z","1.3.0":"2019-10-30T07:24:46.999Z","1.3.1-beta.0":"2019-11-06T08:25:13.252Z","1.3.1-beta.1":"2019-11-06T08:58:44.589Z","1.3.1-beta.2":"2019-11-06T10:56:33.469Z","1.3.1":"2019-11-06T12:58:07.453Z","1.3.2-beta.0":"2019-11-08T10:18:27.166Z","1.3.2":"2019-11-08T10:48:22.064Z","1.3.3-beta.0":"2019-11-11T10:28:09.059Z","1.3.3":"2019-11-11T12:34:33.303Z","1.3.4-beta.0":"2019-11-13T01:25:24.821Z","1.3.4":"2019-11-13T01:54:21.049Z","1.3.5-beta.0":"2019-11-27T06:57:21.351Z","1.3.5":"2019-11-27T07:37:15.401Z","1.3.6":"2019-11-27T08:32:24.813Z","2.0.0-beta.1":"2019-12-12T01:16:15.096Z","2.0.0-beta.2":"2019-12-12T02:20:44.121Z","2.0.0-beta.3":"2019-12-12T02:45:40.830Z","2.0.0":"2019-12-12T03:16:01.573Z","2.0.1":"2019-12-12T06:54:52.441Z","2.0.2":"2019-12-13T04:16:27.516Z","2.0.3":"2019-12-18T06:21:23.917Z","2.1.0-beta.0":"2019-12-19T13:03:25.016Z","2.1.0-beta.1":"2019-12-19T13:13:45.896Z","2.1.0-beta.2":"2019-12-19T13:29:28.919Z","2.1.0-beta.3":"2019-12-19T14:47:50.924Z","2.1.0":"2019-12-20T01:32:05.933Z","2.3.1-alpha.0":"2020-01-20T02:19:56.880Z","2.3.1-alpha.2":"2020-01-20T06:45:20.337Z","2.3.1":"2020-01-20T09:10:18.516Z","2.3.2":"2020-01-20T09:15:28.690Z","2.3.3":"2020-01-27T09:03:21.418Z","2.3.4":"2020-02-02T09:42:54.965Z","2.3.5":"2020-02-02T11:32:37.449Z","2.3.6":"2020-02-06T10:26:32.884Z","2.4.0":"2020-02-22T03:22:04.869Z","2.4.1":"2020-02-23T13:20:12.061Z","2.4.2":"2020-03-19T03:05:03.101Z","2.4.3":"2020-04-02T06:06:15.503Z","2.4.4":"2020-04-10T06:58:02.443Z","2.4.5":"2020-04-10T07:32:22.986Z","2.4.6":"2020-04-16T12:38:22.340Z","2.5.0":"2020-04-20T03:00:19.470Z","2.5.1":"2020-04-30T03:02:39.507Z","2.6.0":"2020-05-15T01:53:08.304Z","2.6.1":"2020-05-21T14:37:24.777Z","2.6.2":"2020-05-21T14:45:11.309Z","2.6.3":"2020-05-21T14:51:55.515Z","2.6.4":"2020-05-22T01:50:10.939Z"},"maintainers":[{"email":"ykstudy@163.com","name":"areslabsbot"},{"email":"jameshen@gmail.com","name":"jameshen"},{"email":"1527997464@qq.com","name":"ykforerlang"},{"email":"542783088@qq.com","name":"yvettelau"}],"description":"首个ReactNative转微信小程序引擎","keywords":["react","react-native","wechat-mini-program","wechat","weixin","redux"],"license":"MIT","readme":"ERROR: No README data found!","readmeFilename":""}