最近我开始 deno 技术验证,发现 deno 是通过 http 的形式下载依赖,这让我感觉到恐慌,仿佛回到了 nodejs 之前引 js 的时代,我看了一下这个论坛有很多 deno 贡献者,想问一下 deno 有没有出依赖管理工具的打算? nodejs 的依赖管理实在是不敢恭维,如果有这个打算的话,我希望包管理是这样的:
- 1.依赖存储的位置是全局的,nodejs 那样每个项目都搞一个 node_modules,每个项目都得重新下载(虽然支持 cache,还是很难受),这个完全没有必要,可以搞个全局中心库,里面存储下载过的依赖和版本;
- 2.支持子模块,就像 maven module,允许依赖配置文件实现一些关系(比如:继承、共享变量),最起码也要做成 pnpm、lerna 那样方便开发十分复杂的项目;
- 3.依赖管理工具要暴露一些 api,方便一些人实现自己的插件;
- 4.要有一个中心仓库,就像 maven、nodejs 那样,npmjs 上面的东西实在太乱了,如果用 npmjs 的话可以在社区约定一个命名规范(比如:以deno开头,方便检索),没有中心仓库就只能使用官方依赖,这样社区没法做大做强,很多功能都得自己开发;
- 5.开发工具插件需要考虑一下更加友好地支持导入依赖,像 idea 那样就改好了,nodejs 的导包,我实在无法忍受;
- 6.依赖运行时配置最好可以选择写在一个配置文件中,nodejs 每个依赖都有自己的依赖,一个项目下来一大堆文件,并且都是配置文件(比如:eslint、jest、babel 都有自己的文件,虽然很多支持写在 package.json 中,但是 package.json 只是一个 json 文件,不支持 js 没法动态修改),这让我很难受;
- 7.如果支持命令行输入的话,我希望命令的输入字母尽量是常用的,像 pnpm 这样,敲命令没有 yarn 敲得开心;