edp icon indicating copy to clipboard operation
edp copied to clipboard

edp unimport 支持

Open firede opened this issue 9 years ago • 9 comments

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

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

firede avatar Oct 08 '15 08:10 firede

结合 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 是否被项目依赖

daaaabeen avatar Oct 15 '15 11:10 daaaabeen

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

otakustay avatar Oct 16 '15 05:10 otakustay

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

daaaabeen avatar Oct 19 '15 02:10 daaaabeen

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

otakustay avatar Oct 19 '15 02:10 otakustay

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

firede avatar Oct 19 '15 07:10 firede

年前我估计没戏

otakustay avatar Oct 19 '15 08:10 otakustay

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

daaaabeen avatar Oct 19 '15 11:10 daaaabeen

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

errorrik avatar Oct 21 '15 07:10 errorrik

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

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

errorrik avatar Oct 21 '15 07:10 errorrik