GithubHelp home page GithubHelp logo

neiapi / nei-toolkit Goto Github PK

View Code? Open in Web Editor NEW
817.0 42.0 122.0 23.89 MB

NEI 接口文档管理平台配套自动化工具

Home Page: https://nei.netease.com

License: MIT License

JavaScript 86.65% Smarty 1.03% HTML 1.90% Shell 1.02% Batchfile 1.84% Ruby 0.62% Objective-C 4.75% CSS 1.05% FreeMarker 1.13% Fluent 0.01%
api api-documentation api-management api-server nodejs nei mock mockstore

nei-toolkit's Introduction

工具简介

本工具是NEI 接口管理平台自动化构建工具,主要功能有:

  • 根据 NEI 平台定义的工程规范,生成工程的初始化目录结构
  • 自动集成在 NEI 上定义的资源: 页面、异步接口、数据模型、页面模板、业务分组等
  • 本地模拟容器

视频教程

NEI 工程规范介绍

教程

FAQ

插件

工具使用

环境配置

构建工具基于 Node.js 平台,因此需要先安装 Node.js 环境,Node.js 在各平台上的安装配置请参阅官方说明。

安装的 Node.js 版本须为 v4.2 及以上

安装

npm install nei –g

提示1: 如果安装不成功, 可以尝试命令 npm install -g nei

提示2: 如果已经安装过 nei, 请使用更新命令 npm update nei -g

提示3: 也可以安装某个分支,比如安装 dev 分支的命令如下:

sudo npm install "NEYouFan/nei-toolkit#dev" -g

提示4:如果安装失败,可能是网络超时引起的,可以试着使用下面的命令安装:

sudo npm install nei -g --registry=https://registry.npm.taobao.org

指令说明

本工具使用时在终端或者命令行输入以下格式指令运行

nei [指令] [参数]

其中可用的指令包括:

指令 描述
build 根据在 NEI 平台上定义的工程规范,生成工程的初始化目录结构
update 更新通过 nei build 构建的项目
server 启动本地模拟容器
template 使用本地数据解析模板

build

根据在 NEI 平台上定义的工程规范,生成工程的初始化目录结构,指令的运行格式为:

nei build -k [key] [参数]

其中 [key] 是 NEI 平台上的项目的唯一标识,可以在项目的"工具(设置)"中查看

针对 nei build 指令可用的参数包括:

简写 全称 默认值 描述
-h --help 显示 build 命令的帮助信息
-o --output ./ 指定项目的输出目录
-k --key 项目的唯一标识,可以在项目的"工具(设置)"中查看
-sk --specKey 规范的唯一标识,可以在规范的"规范设置"中查看
-w --overwrite false 是否覆盖已存在的文件,需要下载的文件不在此列,如果需要重新下载,请先将本地的文件删除
--specType web 要构建的规范类型,目前支持 web、aos、ios、test 四种类型
-s --server https://nei.netease.com 数据源服务器

使用范例:

在当前目录下构建 key 为 xyz 的项目:

nei build -k xyz

规范也可以独立于项目生成脚手架文件, 在当前目录下构建 key 为 xyz 的规范:

nei build -sk xyz

注意: 如果 k 和 sk 参数同时存在, 系统会优先考虑 sk 参数

update

更新通过 nei build 构建的项目,指令的运行格式为:

nei update [参数]

nei update 指令可用的参数包括:

简写 全称 默认值 描述
-h --help 显示 update 命令的帮助信息
-o --output ./ 指定的项目目录
-k --key 需要更新的项目的唯一标识
-a --all false 是否更新指定目录下面的所有项目,前提是没有指定的 key
-w --overwrite false 是否覆盖已存在的文件,需要下载的文件不在此列,如果需要重新下载,请先将本地的文件删除
--spec false 是否更新规范中的普通文件和文件夹,以数据填充的文件不在此列
-s --server https://nei.netease.com 数据源服务器

使用范例:

更新当前目录下通过 nei build 生成的项目

nei update

提示: 可以先在本地创建项目目录,然后在该目录下使用 nei buildnei update 命令,使用默认值即可.

server

启动内置的本地模拟容器

nei server [参数]

nei server 指令可用的参数包括:

简写 全称 默认值 描述
-h --help 显示 server 命令帮助信息
-o --output ./ 已构建项目的输出路径
-k --key 需要启动的项目的唯一标识

使用范例

启动目录为 ./mypro 下的项目:

nei server -o ./mypro

OS X 下如果有异常请使用 sudo nei server 命令启动

template

使用本地数据解析模板。通过指定本地模板文件以及数据文件,能够将模板解析得到输出文件。目前支持的模板语言为handlebars

nei template [参数]

nei template 指令可用的参数包括:

简写 全称 默认值 描述
-h --help 显示 template 命令帮助信息
-o --output ./ 输出路径
-p --path 本地模板路径,必须指定
-d --data 数据json文件路径,可选
-b --handlebars 自定义handlebars辅助函数文件路径,可选
-w --overwrite false 是否覆盖已存在的文件

用户可以指定数据文件,如data.json的文件内容如下:

{
  "project":{
    "name" : "test",
    "version" : "0.0.1"
  },
  "author":{
    "Netease"
  }
}

然后用户就可以在模板文件中访问到数据中的数据,如{{project.name}}就能够解析为test。用户同样可以指定本地handlebars辅助文件,如果用户有多个辅助函数,需要将这些都写到一个文件中,自定义辅助函数的写法与上文一致,参照此链接相同。 另外用户也可以不通过指定数据json文件来传入数据,可以通过命令行直接传入数据参数,如:

nei template -ProductName Test -Prefix HT [其他参数]

ProductName和Prefix这两个参数就会作为数据传入到模板中,其等同于

{
  "args":{
    "ProductName" : "Test",
    "Prefix":  "HT"
  }
}

如果同时指定了数据文件,将会执行merge操作,其中命令行参数指定的方式优先于数据json文件方式。

设置输出信息级别

共设有"all"、"debug"、"info"、"warn"、"error"、"off"等日志级别,级别顺序由大到小,通过--logLevel指定一个级别之后,比该级别小的日志级别信息都将会显示出来,比如:

nei build -k xxxxxxxx --logLevel info

那么所有info以下级别(即warn、error)级别的信息都将会显示出来。当指定为off的时候,所有日志信息都将关闭。

版本更新说明

更新说明

Licence

MIT

感谢

感谢网易云提供的云服务, 目前 NEI 已经托管在网易云上。

讨论组:

NEI 用户交流 QQ 群(453281988):

QQ 群

nei-toolkit's People

Contributors

abnerzheng avatar amibug avatar eynol avatar fy1994 avatar genify avatar huntbao avatar icy0307 avatar kkdev163 avatar nailperry-zd avatar pennysu avatar potato47 avatar reditaru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nei-toolkit's Issues

【v3.5.2 发布】注入给页面的模型数据,可以从指定的服务器获取

在渲染页面的时候,页面中的模型数据可以从指定的服务器获取,在 server.config.js 中配置 modelServer 参数选项即可:

modelServer: {
  host: '',
  queries: {},
  headers: {},
  // path: function (options) {
  //
  // }
}

参数说明如下:

  • host:完整的主机地址,包括协议、主机名、端口
  • queries: 查询参数,键值对的形式
  • headers:自定义请求头,键值对的形式
  • path:
    • path 可以是字符串,也可以是函数;默认不用传,即使用 host + 页面path + queries 的值
    • 如果是函数,则使用函数的返回值,传给函数的参数 options 是一个对象,它包含 host、path(页面的path)、queries、headers 等参数
    • 如果 path 的值为假值,则使用 host + 页面path + queries 的值;
    • 如果 path 的值是相对地址,则会在前面加上 host

注意:后端在向目标服务器发送请求的时候,会带上原始请求的 cookie

注意:host 要写完整的地址,比如:http://192.168.10.25:8080/,最后的斜杠也需要

nei构建mobile工程时默认不需要--resOnly参数

利用nei构建mobile工程时,有一个可选项,配置是否将模板文件夹下的文件添加到Xcode工程即.xcodeproj文件中;

原有逻辑如下:

  1. 默认情况下,不添加额外参数:将模板文件夹下的文件添加到Xcode工程中;
  2. 添加--resOnly参数:不将模板文件夹下的文件添加到Xcode工程中;

但实际情况中,一般不需要“将模板文件夹下的文件添加到Xcode工程中;”,这样每次都要加--resOnly参数变得难以理解;

因此,希望将处理逻辑变更如下:

  1. 默认情况,不添加额外参数:不将模板文件夹下的文件添加到工程中;
  2. 添加额外参数--updateProject: 将模板文件夹下的文件添加到工程中;

nei build 增加自动安装 bower 依赖的参数

从 v0.3.8 开始,在使用 nei build 命令构建 WEB 工程时,可以使用 --bower 参数自动安装 bower 依赖。

注意: windows 下面貌似会报权限错误:

events.js:141
      throw er; // Unhandled 'error' event
      ^
Error: spawn bower ENOENT
    at exports._errnoException (util.js:874:11
    at Process.ChildProcess._handle.onexit (in
    at onErrorNT (internal/child_process.js:34
    at doNTCallback2 (node.js:439:9)
    at process._tickCallback (node.js:353:17)

所以还是需要手动安装

手动设置工程的默认生成ftl文件

因为现在做的工程是后来才引入nei的,所以直接update生成的新的ftl文件和原来的页面配置有些冲突,每次都需要手动再去改ftl,所以希望针对每个工程能自己配置生成的ftl、js文件么~~

内置本地模拟容器

和 nei 配套使用的本地模拟容器 Puer 功能虽然强大,但依赖的包较多,安装时经常会失败。

为此,nei 计划推出一个轻量级的本地模拟容器,集成在 nei 工具中,通过 nei server 命令启动,满足 nei 的需求即可。

请大家拭目以待。

nei build构建iOS工程时报错

在build.json同目录下执行命令如下:

nei build 11321 -c build.json --productName HTTestPluginDemo --namePrefix HTP --Prefix HTP --CategoryPrefix htp

错误如下:


HTExample/HTTestPluginDemo/HTTestPluginDemo/Network/Requests/HTPRequests.h
/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.pbx.js:25
        group.children.forEach((file) => {
             ^

TypeError: Cannot read property 'children' of undefined
    at PbxProj.removeGroupFiles (/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.pbx.js:25:14)
    at PbxProj.createPBXGroupByFullPath (/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.pbx.js:145:18)
    at PbxProj.update (/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.pbx.js:240:18)
    at MobileOCBuilder.modelStart (/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.js:399:25)
    at MobileOCBuilder.buildStart (/usr/local/lib/node_modules/nei/lib/nei/mobile.oc.js:427:26)
    at MobileOCBuilder.start (/usr/local/lib/node_modules/nei/lib/nei/builder.js:519:14)
    at MobileOCBuilder.build (/usr/local/lib/node_modules/nei/lib/nei/mobile.js:196:19)
    at loadData (/usr/local/lib/node_modules/nei/main.js:124:28)
    at _io.download (/usr/local/lib/node_modules/nei/main.js:37:17)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/nei/lib/util/io.js:176:17)

生成iOS客户端请求代码时请求类名规则优化

当前规则

生成的接口类名如下:{{namePrefix}}{{接口类名}}

例如:NEI 上的接口类名为 CommentRequest,则生成的类型名字 HTCommentRequest, 头文件名为 HTCommentRequest.h, 实现文件名为 HTCommentRequest.m

调整

  1. 如果NEI上的接口类名后缀不为RequestTask, 则自动添加后缀Request
    例如:NEI 上的接口类名为 Comment,则生成的类型名字仍为 HTCommentRequest, 头文件名为 HTCommentRequest.h, 实现文件名为 HTCommentRequest.m
  2. 如果NEI上的接口类名不合法,例如含有中文等等;在按照URL路径生成请求类的同时需要在日志中给出警告,便于开发人员排查问题。

异步接口数据类型

期望的数据类型为:

{
    code: number,
    data: object,
    msg: string
}

但是选择 '导入JSON' 后, data 类型变为 string。请问怎么设置为 Object 类型.
2017-02-13 14 01 39

添加自定义辅助函数

规范中的文件可以标识为“模板引擎的辅助函数”,构建工具识别出该文件后,可以通过 vm 模块执行脚本

nei生成iOS客户端代码时增加对数组类型的支持

当前nei接口管理平台上,可以直接定义数组类型;但是Objective-C中并没有单独的数组类型,需要转换为NSArray;当前是约定不要直接定义数组类型;而是通过Array的方式来定义数组。

后续希望能增加对数组类型的支持,具体如下:

  1. 如果一个数据类型是数组类型,则不要生成对应的Model头文件与实现文件;
  2. 如果一个数据类型是数组类型,则在嵌套的Model和Request定义中替换为原有的定义;

例如定义了一个数组类型StringList
default

那么在Model和请求中,如果遇到类型StringList, 那么生成的Objective-C代码应该是

@property (nonatomic, strong) NSArray<NSString *> *dataList;

而不是

@property (nonatomic, strong) StringList *dataList;

iOS端改进需求: 生成Model代码时,希望允许指定Model类的后缀

需求描述:

  1. 生成Model代码时,希望允许指定Model类的后缀,如Model; 例如,nei网站上类型为Person, 前缀为HT, 可以指定在命令中通过参数指定后缀为Model, 则生成的数据类型为HTPersonModel
  2. 在第一点的基础上,如果网站定义的数据类型名后缀默认不是Model或者Object, 则加上Model; 即如果nei网站上类型为Person, 那么默认生成为HTPersonModel; 如果类型为PersonModel或者PersonObject, 则不额外添加Model作为后缀,生成的类名为HTPersonModel或者HTPersonObject. 第2个功能实现时尽量做成可开关的;因为不确定所有人都希望默认加Model后缀。

nei枚举类型区分字符串还是整型

当前nei接口管理平台对于枚举类型都当作字符串来处理,iOS客户端使用起来没有那么方便;但是由于Objective-C的枚举NSEnum无法描述字符串,所以希望接口描述里面可以有办法区分是字符串还是整型。对于字符串,仍然按照原有规则生成;对于整型,后续期待可以生成类似如下的代码:

typedef NS_ENUM(NSInteger, {{namePrefix}}{{类型名}}) {
    {{namePrefix}}{{类型名}}{{枚举的 key1}} = {{枚举的 key1 的值}},  // {{枚举的key1的描述}}
     {{namePrefix}}{{类型名}}{{枚举的 key2}} = {{枚举的 key2 的值}},  // {{枚举的key2的描述}}
     {{namePrefix}}{{类型名}}{{枚举的 key3}} = {{枚举的 key3 的值}},  // {{枚举的key3的描述}}
};

nei server

本地容器需要如何创建 ?返回404

nei iOS 配置出错

/usr/local/lib/node_modules/nei/lib/nei/builder.js:472
if (this.config.jarRoot || this.spec.jarConfig.length > 0) {
^

TypeError: Cannot read property 'length' of undefined
at Builder.buildServerConfig (/usr/local/lib/node_modules/nei/lib/nei/builder.js:472:55)
at new Builder (/usr/local/lib/node_modules/nei/lib/nei/builder.js:77:18)
at loadedHandler (/usr/local/lib/node_modules/nei/main.js:46:13)
at _io.download.ex (/usr/local/lib/node_modules/nei/main.js:178:13)
at IncomingMessage. (/usr/local/lib/node_modules/nei/lib/util/io.js:178:17)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
请问这个问题是怎么引起的么?

运行server命令出错

运行
nei server -k cec47ff7e9d51d1db545f4af92362866 -o ./todoweb
出现报错:

/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/node_modules/serve-static/index.js:40
    throw new TypeError('root path required')
    ^

TypeError: root path required
    at Function.serveStatic [as static] (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/node_modules/serve-static/index.js:40:11)
    at Object.Server.init (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/lib/server/main.js:82:31)
    at Object.Server (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/lib/server/main.js:18:10)
    at module.exports (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/lib/server/server.js:72:18)
    at tryStartServer (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/main.js:103:17)
    at Main.server (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/main.js:125:13)
    at Args.options.server (/Users/TEST/.nvm/versions/node/v6.3.0/lib/node_modules/nei/bin/nei.js:43:14)
    at emitOne (events.js:96:13)
    at Args.emit (events.js:188:7)

请问该怎么解决?

构建iOS工程增加 productName 参数

新增加的 productName 参数,默认为 null,必须指定,否则直接报错退出。具体实现过程如下:

  1. 如果 --project 的值为空,则将它的值设置为 ./{{productName}},相对于模板工程目录。如果命令行中有 --project 参数,则优先使用命令行中的值,此时的路径也是相对于模板工程目录。
  2. resOut 的值更改为 ./{{productName}}/{{resOut}},即在它前面追回 productName 的值
  3. 模板数据中的 ProductName 修改为相应的值

空白工程要做的修改:

在 iOS 工程模板中,需要将 --project 设置为空,resOut 参数不要包含 productName 的路径。模板数据文件(NEIKey.json)中的 ProductName 设置为空。build.json 文件内容参考如下:

{
    "t": "mobile",
    "l": "oc",
    "w": true,
    "p": "",
    "tp": "HTSingleView/",
    "tdp": "NEIKey.json",
    "resOut": "Common/Network/"
}

nei构建iOS工程后,模板文件夹中文件的可执行属性丢失

在模板文件中添加一个可执行的脚本文件,例如CopyMockFiles.sh; 利用nei build命令生成工程后,该文件的可执行属性丢失,执行脚本会报错 "Permission denied".

之前的文件属性为“-rwxrwxrwx”; 生成后的文件属性为"-rw-r--r--"

期望: 可执行的脚本文件在工程生成工程中,可执行属性不丢失,这样可以在工程模板中添加执行脚本的步骤。

nei build在windows下生成jtr.js中使用相对路径错误的问题

nei build 指定--webroot --viewroot 为nei -p 不同盘符下的路径时,生成的jtr.js中 webroot、viewroot、mockTpl、mockApi 使用相对路径寻址错误。
例如:

  • 工作目录为:C:\Users\hzwenjinlu
  • 执行的nei build命令为:nei instal 11934 -t webapp --webRoot "D:\neteasecode\nyx\nyx-web\src\mai
    n\webapp" --viewRoot "D:\neteasecode\nyx\nyx-web\src\main\webapp\WEB-INF\ftl\h5"

生成后的jtr.json文件中目录解析错误如下:

/* 根目录 */
webRoot: path.join(__dirname, 'D:/neteasecode/nyx/nyx-web/src/main/webapp/'),
/* 视图目录 */
viewRoot: path.join(__dirname, 'D:/neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/'),
/* 同步模块mock数据路径 */
mockTpl: path.join(__dirname, '/D:/neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/mock/'),
/* 异步接口mock数据路径 */
mockApi: path.join(__dirname, '/D:/neteasecode/nyx/nyx-web/src/main/webapp/src/mock/')

使用nei server命令启动测试服务器,访问页面地址报错如下:

访问了 ----> GET /product/list
Failed to lookup view "./booking/productlist.ftl" in views directory "C:\Users\h
zwenjinlu\nei.11934\D:\neteasecode\nyx\nyx-web\src\main\webapp\WEB-INF\ftl\h5"

若切换工作目录,执行相同命令后

  • 工作目录为:D:\nei
  • 执行的nei build命令为:nei instal 11934 -t webapp --webRoot "D:\neteasecode\nyx\nyx-web\src\mai
    n\webapp" --viewRoot "D:\neteasecode\nyx\nyx-web\src\main\webapp\WEB-INF\ftl\h5"

生成后的jtr.json文件中目录解析如下:

/* 根目录 */
webRoot: path.join(__dirname, '../../neteasecode/nyx/nyx-web/src/main/webapp/'),
/* 视图目录 */
viewRoot: path.join(__dirname, '../../neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/'),
/* 同步模块mock数据路径 */
mockTpl: path.join(__dirname, '/../../neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/mock/'),
/* 异步接口mock数据路径 */
mockApi: path.join(__dirname, '/../../neteasecode/nyx/nyx-web/src/main/webapp/src/mock/'),

再次命令 nei server 启动访问同样的页面地址打开正常。

检查代码lib/nei/webapp.js 中方法buildServerConfig ,计算webRoot 等目录值时取的是相对项目目录的相对路径。所以,建议:

  1. 要么修改代码兼容windows下指定不同盘符目录的情况
  2. 要么在文档中增加说明windows下项目目录和webroot、viewroot、mockTpl、mockApi必须为同盘符下的目录

iOS 客户端代码Request生成规则调整

iOS客户端代码Request生成规则需要作如下调整:

  1. 原规则中,request的实现文件中固定包含头文件 #import "NSObject+HTModel.h", 现需更改为#import "HTNetworking.h"
  2. 原规则中,responseMapping 方法返回:[{{namePrefix}}{{自定义类型名}} defaultResponseMapping]更改为 responseMapping 方法返回:[{{namePrefix}}{{自定义类型名}} ht_modelMapping]

修改原因:

  1. 同nei配套使用的网络库HTNetworking为了支持CocoaPods 0.39,头文件路径作了调整;因此开放出HTNetworking.h以引入其他头文件;自动生成的代码尽量直接包含该头文件;
  2. 使用者指定Model的基类不为HTHTTPModel时,方法defaultResponseMapping不可用。

注意事项:
由于HTNetworking头文件路径的修改不会对老版本生效,因此上述规则的修改应当仅应用于新版本的构建工具,保证老版本的构建工具生成的代码仍然可使用老版本的网络库.

反馈个问题

接口测试->接口列表 不能滚动 导致很多接口看不到了

install ht-templates Operation timed out

安装nei-tooket一切正常,接着安装ht-templates报错:

Cloning into '/Applications/Android Studio.app/Contents/plugins/android/lib/templates/activities/HTTemplate'...
fatal: unable to access 'https://g.hz.netease.com/hearttouch-android/ht-template.git/': Failed to connect to g.hz.netease.com port 443: Operation timed out
ls: /Applications/Android Studio.app/Contents/plugins/android/lib/templates/activities/HTTemplate: No such file or directory

ping https://g.hz.netease.com没问题
环境:
OS X, 10.12.3
Android Studio 2.3
Build #AI-162.3764568, built on February 24, 2017
JRE: 1.8.0_112-release-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

产品使用统计

NEI团队要汇报上半年的工作了,求赞美,求批评,大家的反馈是我们团队前进的动力,谢谢各位先。

大家的反馈对NEI产品本身的走向有非常大的影响哦,有什么想说的话,尽管给我们团队留言吧。

反馈格式如下(有不方便透露的信息空着即可):

你们的公司及行业:
你们的产品是什么:
你的角色是(前端、后端等):
你们是通过什么渠道知道NEI的:
你们主要在使用NEI的什么功能:
你们还希望NEI提供什么样的功能:
使用了NEI后对你们的开发效率有多大提升:
其他想对NEI产品团队说的话(赞美和批评等):

为什么不提供RPC接口文档管理的功能

如题,现在只支持HTTP接口的管理,为什么不提供对诸如RPC服务的接口管理呢?
一般而言,对于RPC服务,我们会希望该管理系统提供以下管理:(当然其他的可以再补充)
(1)服务接口
(2)供外部调用的服务名称
(3)接口参数,包括请求参数和相应参数;对于Java来说,就是一个request和response 类,能够管理这两个类包含哪些参数,什么类型。

改进:希望nei build生成新的iOS工程时不需要去更改build.json文件

当前build.json文件为

{
    "t": "mobile",
    "l": "oc",
    "w": true,
    "p": "../Stone",
    "tp": "./HTTemplate",
    "resOut": "Stone/Network/", 
    "tdp": "./NEIKey.json"
}

Stone实际上可以替换为一个命令行传递的参数ProductName, 这个ProductName也可以用于NEIKey.json中的模板化过程,这样,使用同样的模板文件夹生成新的工程时,不需要去修改build.json文件,可以简化使用。

iOS: nei mobile解析Cocoapods 0.39版本更改后的工程文件出错

步骤:

  1. 使用nei build构建工程
  2. 使用Cocoapods 0.39执行pod install命令安装第三方库
  3. 使用nei mobile命令更新网络请求代码

此时会报错:

/usr/local/lib/node_modules/nei/node_modules/xcode/lib/parser/pbxproj.js:1835
      throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
      ^
SyntaxError: Expected "/*", "//" or "{" but "<" found.

原因是由于Cocoapods 0.39安装之后,更改了工程文件的格式,但对于部分工程,并不会出现该问题,原因未知;初步推断是Cocoapods 的bug,暂时不需要nei tookit作相应更改。

出错的工程文件见附件.
TestPods.xcodeproj.zip

nei构建iOS工程时对参数namePrefix的统一处理

当前nei构建工程时,对于文件前缀存在三个参数进行描述:

  1. 命令行或者build.json中通过参数--namePrefix指定的网络请求前缀;如果不指定,默认为HT;
    2.NEIKey.json中指定的模板替换规则"Prefix":"XYZ"会将工程模板中的{{Prefix}}替换成为指定的字符串
  2. NEIKey.json中指定的模板替换规则"CategoryPrefix":"xyz"会将工程模板中的{{CategoryPrefix}}替换成为指定的字符串。

使用者在构建自己的工程时,需要指定以上三个参数才可以正确生成自己想要的工程,不便于使用;因此希望toolkit改进如下:

  1. NEIKey.json中不再需要指定Prefix或者CategoryPrefix
  2. 即使在NEIKey.json中指定了Prefix或者CategoryPrefix, 一概忽略;
  3. 通过--namePrefix传递的参数默认替换掉{{Prefix}}, 并且以小写形式替换掉{{CategoryPrefix}}; 则用户只需要传递一个参数.
  4. 如果没有传递--namePrefix参数,直接报错,不继续执行。
  5. nei mobile命令如果没有传递--namePrefix参数,也直接报错,不继续执行;即不再提供默认的HT前缀;

参数名可以保持为namePrefix, 也可以统一替换为prefix或者Prefix

例如:

--namePrefix HTE, 则使用HTE替换掉模板文件中的{{Prefix}}, 使用hte替换掉模板文件中的{{CategoryPrefix}}.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.