package 规范 edp 字段 dependencies 规则讨论
firede opened this issue · comments
Zhao Lei commented
之前在 edp-package
的 commit
中( ecomfe/edp-package@ee3092a )对 edp
字段 dependencies 规则的讨论还没结论,我整理一下在 issue 里继续。
方案 1
前端 package 查找规则
- 先找
edp.dependencies
- 若不存在,找根节点
dependencies
- 若不存在,返回
{}
。
devDependencies
的逻辑也类似。
优点:无后端依赖的 package
更符合 commonjs
规范。
缺点:使用了后端依赖、开发依赖时,需要在 edp
下写空字段消除歧义。
示例
// 现有前端 package(未扩展)
{
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"devDependencies": {
"saber-router": "0.2.0" // 前端 package
}
}
// 纯前端 package(有扩展)
{
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"devDependencies": {
"saber-router": "0.2.0" // 前端 package
},
"edp": {
"browsers": []
}
}
// 只有后端依赖的 package
{
"dependencies": {
"edp-provider-rider": "0.3.1" // 后端 package
},
"devDependencies": {
"phantomjs": "1.0.0" // 后端 package
}
"edp": {
"dependencies": {}, // 添加空字段消除歧义
"devDependencies": {}, // 添加空字段消除歧义
"browsers": []
}
}
// 同时有前后端依赖的 package
{
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"devDependencies": {
"phantomjs": "1.0.0" // 后端 package
}
"edp": {
"devDependencies": {}, // 添加空字段消除歧义
"browsers": []
}
}
方案 2
前端 package 查找规则
- 若存在
edp
字段,以edp
为pkgRoot
,否则以根节点为pkgRoot
- 找
pkgRoot.dependencies
- 若不存在则返回
{}
devDependencies
的逻辑也类似。
优点:以是否存在 edp
字段为依据,依赖于开发依赖规则统一。
缺点:当使用了类似 edp.browsers
的扩展配置时,依赖信息必须写在 edp
下。
示例
// 现有前端 package(未扩展)
{
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"devDependencies": {
"saber-router": "0.2.0" // 前端 package
}
}
// 纯前端 package(有扩展)
{
"edp": {
"browsers": [], // 存在扩展字段时,前端依赖需要配置在 edp 字段下
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"devDependencies": {
"saber-router": "0.2.0" // 前端 package
}
}
}
// 只有后端依赖的 package
{
"dependencies": {
"edp-provider-rider": "0.3.1" // 后端 package
},
"devDependencies": {
"phantomjs": "1.0.0" // 后端 package
}
"edp": {
"browsers": []
}
}
// 同时有前后端依赖的 package
{
"devDependencies": {
"phantomjs": "1.0.0" // 后端 package
}
"edp": {
"dependencies": {
"saber-dom": "0.3.0" // 前端 package
},
"browsers": []
}
}
以上方案供参考,如果有更好的方案也请提出。