tink 介绍
npm 出品的下一代包管理器,能够更好处理 node package 的依赖关系
Tink 特性
Tink 能做什么呢?那就是你不用再自己 调用 Node 了, 调用 Tink 就行,Tink 有 一个 名为 shell 的子命令,负责打包 Node,加些补丁,然后就可以 生成 一个 叫 Virtual node_modules 的神奇产物了。
Virtual node_modules 有几大特性:
因为 Tink 是 一个 运行时包管理器,所以它基本上不再需要物理 Node 模块了,同时并不需要改动模块加载器或者包中的 API。包可以像往常一样访问 文件 系统,所以就能和之前的配置等细节完全兼容。
既然 Node 模块不存在了,那么 文件 都去哪儿了呢?Tink 把 文件 都保存在了类似 npm 那样的单一全局缓存里,然后通过哈希算法来清除所有重复数据。因为使用了哈希算法,所以 Tink 不用再存储重复的 内容 。就算你的 一个 项目有 5 个历史版本,Tink 也只会存储原始版本和每次更新的 内容 ,大大节约了存储空间,同时优化了 数据读写 的 性能 表现。
既然现在包管理集成到了运行时中,那么当你需要依赖项的时候就不用再手动 获取 了,Tink 会 自动 根据需要下载所需的依赖项,完全不用你再操心了。你不需要的依赖项它也不会下载,你需要的依赖项它都能预先下载好。Tink 还设置了一种机制,防止管理器 随机 下载一些其实你用不到的 内容 。
这也就意味着你不用再操心 npm 包安装流程了。你只需要 Tink Add、Tink Move 就能安装、卸载包,后面有什么过程都会 自动 完成。如果你的同事推上来什么 内容 ,你只需要拉下来就可以直接运行,具体的细节 Tink 都为你打点好了。这可是一项巨大的改进,值得掌声鼓励。
有人可能会担心,把 fs 也打包起来不是很危险吗?其实我们不觉得这有什么,因为 Electron 就是这么干的!他们 在这 方面很有一套,我们也会学习他们的经验,所以这并不是什么大问题。其实 Tink 的一些相关 代码 就是直接从 Electron 过来的,我还做了一些调整和改进。
其他特性
除了上面提到的这些,Tink 还带来了其他一些很棒的特性, 包括 :
作为运行时包管理器,Tink 直接提供了对?TypeScript?、ESM、Wasm 和 JX 的 支持 !
Tink 从全局缓存中加载依赖 文件 时会实时做校验,大大提升了安全性。
运行 Tink 时,如果你缺少某些依赖项,或者缓存中的某个 文件 已经损坏,那么 Tink 会 自动 为你下载并安装这些 文件 , 自动 修复你的依赖项。在生产流程中可以 关闭 这个选项,但在项目开发过程中这个 功能 非常方便,我也很喜欢它。
最后也是我最喜欢的特性:所有这些 功能 都是开箱即用的,无需专门配置,也用不着额外安装任何 内容 。这里要强调一下,所有这些特性都不需要任何类型的加载器,不需要额外的调整选项;webpack 之类的 内容 都能直接使用。你需 要做 的只不过是安装并运行 Tink,然后一切就 自动 部署妥当了。
GitHub: https://github.com/npm/tink
网站描述: npm 出品的下一代包管理器
tink官方网站
官方网站:
如果觉得 网站内容还不错,欢迎将 网站 推荐给程序员好友。