-
Notifications
You must be signed in to change notification settings - Fork 167
Dev Steps
edp默认提供的一些功能在实现的过程中引入了太多的外部依赖,导致安装和升级edp的时候很麻烦,而且容易出错。
解决这个问题之前,我们发起了Issue 125进行讨论,讨论的过程中已经明确的方向就是对edp默认提供的功能进行剥离,需要使用的功能可以被单独的安装,这样子来尽可能的减少edp的改动,精简它的依赖。
现在已经有一个功能被剥离出来了,比如edp-doctor, edp-add, edp-test等等,下面就介绍一下,如果给edp新增一个功能扩展的时候,应该如何去做。
假如我们需要给新增一个edp foo命令,一般的流程是这样子的:
-
新增
edp/lib/foo.js,在这个文件里面定义好foo命名需要的参数格式,提供的exports.main不需要具体的实现,只需要引入edp-foo这个package,然后调用这个package提供的start方法即可。可以参考edp/lib/doctor.js的代码。cli.options = [ 'max-size', 'auto-uri' ]; // 如果按照上面的方式定义 cli.options 当执行 edp foo -m 123 -a 1 的时候,opts的内容如下: { 'max-size': 123 'm': 123 'auto-uri': 1 'a': 1 }
-
我们需要去实现
edp-foo这个模块,一般来说这些模块的git repos都是放在github/ecomfe/下面的,如果没有权限创建的话,请联系相关的同学先创建出来。 -
获取
edp-foo的代码,执行npm init初始化一个npm的package,添加好一些相关的依赖,执行npm install安装好所需要的依赖,然后就可以正式干活了。{ ... "dependencies": { "edp-core": "~0.0.18", "edp-config": "~0.4.4", "edp-package": "~0.4.11", "edp-project": "~0.4.31", ... } ... }
-
开发的过程中,如果我需要调试的话,一般采用如下的方式(我采用的方式,不是最优的方式):
cd edp-foo && npm link cd edp && npm link edp-foo
此时就可以直接使用
edp foo来调试你的代码了。 -
另外,如果代码写了一半儿,发现依赖的
edp-core有个bug,需要修改一下,那应该采用这个方式来搞:git checkout git@github.com:ecomfe/edp-core.git cd edp-core && npm link cd edp-foo && npm link edp-core git checkout -b issue-123 # 记得按照issue-id创建正确的分支
现在就可以直接修改
edp-core的代码了,改完之后edp-foo就可以直接使用生效的代码。当然,如果发现了edp-package,edp-project的bug,也参考上面的步骤来搞。 -
终于改动的差不多了,应该发布了,发现
edp-core,edp-project,edp-package都被改过了,发布之前应该跑一下ut(记得执行npm i -g jasmine-node),确保没问题耶:cd edp-core && npm test cd edp-project && npm test cd edp-package && npm test
看起来还行,都变绿了,那就发一下Pull Request吧。如果PR通过了,那就可以发布了。修改一下
edp-core,edp-project,edp-package里面package.json,给版本号+1,然后执行:git commit -a -m 'bump to x.y.z' # 把x.y.z换成正确的版本号 git tag -a 'x.y.z' -m 'bump to x.y.z' # 把x.y.z换成正确的版本号 git push origin master x.y.z # 把x.y.z换成正确的版本号 npm publish # 估计没权限,找有权限的同学吧
-
发布了对于依赖的更改,最后记得把
edp-foo给发布了,如果是第一次发布,请用ecomfe的账户,如果没有密码的话,找相关的同学吧。 -
edp-foo发布成功之后,我们最后还是要测试一下的,方式很简单:npm rm -g edp # 删掉 npm install -g edp # 重新安装 edp foo # 开始测试
因为相关的代码可能会被任何同学修改,为了保证代码的质量,ut是必不可少的。一般来说,我们的都是基于jasmine来写我们的test case,因此本地跑ut之前呢,记得先安装npm i -g jasmine-node。
对于模块的目录结构来说,一般需要是这样子的,以edp-build为例:
edp-build/
.travis.yml
package.json
test/
Makefile
foo.spec.js
bar.spec.js
xxx.spec.js其中package.json需要添加scripts字段:
{
"scripts": {
"test": "make -C test"
}
}另外.travis.yml和Makefile的内容一般都是这样子的,改动不是很大
language: node_js
node_js:
- "0.11"
- "0.10"
before_script:
- "npm i -g jasmine-node"all:
env EDP_LOG_SILENT=1 jasmine-node --nohelpers .上述的文件和ut代码准备好之后,就去http://travis-ci.org上面配置一下即可(如果没权限的话,联系有权限的同学吧)