Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

edp unimport 支持 #341

Open
firede opened this issue Oct 8, 2015 · 9 comments
Open

edp unimport 支持 #341

firede opened this issue Oct 8, 2015 · 9 comments

Comments

@firede
Copy link
Member

firede commented Oct 8, 2015

目前想移除一个已经 import 进来的包,只能手工做。
希望有个移除包的功能,类似 bower/npmuninstall

PS: 不用 removeuninstall,是为了避免与 edp install 的反向操作产生歧义。

@daaaabeen
Copy link

结合 ISSUE #332 我简单整理了以下 unimport 的流程,不知道是否合理
unimport 流程:
1.从 module.conf 中找到包的信息
2.读这个包的 package.json 找到所有依赖
3.对每个依赖重复2-3过程,知道把所有依赖遍历完
4.把所有依赖合并成一个数组,合并时去重,数组中每一项是 {packageName} ,一个包在数组中只出现一次
5.从 moudule.conf 中找到其他包的信息,依次执行2-4,并最终合并成一个数组
6.把4中的数组除掉,在5中的部分包,构成最终要 unimport 掉的包
7.删除掉这些包并更新 module.conf

[注1] edp不支持同一包的多个不同版本共存,所以 unimport 时不用考虑 version

#332 中提到
import 或 update 过程不应该把未指定的包(如被依赖的包)加入到 package.json 中,比如我 edp import er,你不能在 package.json 的 dep 中加上 eoo 这一项
但现在的版本中并不是这样
当我们引入一个包时会将他的依赖全部添加到package.json和module.conf的dep中
比如a->b,c,d
在package.json中
"dependencies": { "a": "xxx", "b": "xxx", "c": "xxx" }
在module.conf中
"packages": [ {"name": "a", ....}, {"name": "b", ....}, {"name": "c", ....} ]
这样在我们 unimport a 时没有办法知道 bc 是否被项目依赖

@otakustay
Copy link
Member

由于module.conf中有所有的包,且结构是打平的,所以按你上面的玩法最后第6步出来的数组应该是空的了

@daaaabeen
Copy link

对,所以针对现在这种结构是没有办法处理要unimport的包的依赖包的,因为没有办法确定他依赖的包是否只有他自己依赖,所以需要更明确的依赖关系的描述才能做到unimport

@otakustay
Copy link
Member

所以我们整个方式要改,合理的是package.json中只包含开发者实际要的,module.conf中包含全部的,这样两者的差就是那些纯依赖的包

@firede
Copy link
Member Author

firede commented Oct 19, 2015

那先做 #332 吧,@otakustay 灰大有空做不,或者 @beenlee 接手?

@otakustay
Copy link
Member

年前我估计没戏

@daaaabeen
Copy link

那我按 #332 的思路做一下,不过我技术比较渣,大牛们多多指点

@errorrik
Copy link
Contributor

  1. 不要从module.conf中找要删除的包,直接从package.json中找
  2. 如果package.json中找不到,看看是哪些package.json中声明的dependencies依赖了它,直接做提示,不删除。
  3. 如果package.json的dependencies中有它,但是其他dependencies也依赖了它,也不做删除。

@errorrik
Copy link
Contributor

我理解,这次的升级,应该是对edp-package一次全面的梳理。所以以前的一些包袱,可以抛弃。

意思就是,可以让使用者重新手工编辑一下package.json里的dependencies

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants