是统一包装的基础设施。来自 的创建者, 是一个独立的、适用于所有平台的二进制文件,使整个开源生态系统触手可及。打破编程社区之间的孤岛,把使用完全不同的工具和语言的脚本放在一期,通过简单的一行代码与世界分享。
不过需要注意的是现在 还没到 v1 版本,所以可能在日常使用中仍有一些小问题,当然这也意味着你更应该参与进来,这是关键和黄金时期,参与其中既容易又非常有趣。
tea/cli 0.13.8
开源是一个宝库 - 但这些宝箱都用粗糙的锁锁住了。 就是关键:
不安装软件包,至少不是传统意义上的,我们将它们存放在 中,你的系统保持原始状态,并与 的操作隔离开来,但当你需要使用的时候,一切都准备好了。
后面是一个包管理器,其中所有的软件包都是可重定位的。
的 语法让整个开源生态系统触手可及,如果你在 处,则会发生上述情况,我们在环境中打开一个包含这些包的新 ,但如果你继续输入,你就可以构建直接使用。
组合一切,结合一切——就像 UNIX 哲学一样,这样就可以把我们带入 的管道 pipelines 中:
上面的示例命令会下载 的白皮书文件,并使用 charm 非常优秀的 终端 markdown 渲染器进行渲染。这是一个基本的示例,但 UNIX 受包管理器的限制实在太久了,这也是 旨在克服的一个基本限制。
另外值得注意的是,使用 语法可以更简洁地表达:
如果你想试用最新版本的 node,但不确定它是否适用于你的项目? 也可以非常容器实现。
同样可以使用一行命令来创建一个 react 应用:
tea:通用解释器
在这个基本的例子中,我们知道要根据文件扩展名先安装 ,很明显,对吧?
读取 YAML 文件的前端信息,允许你在整个开源生态系统中为脚本、gists 和一行程序进行操作。在运行时,脚本在其环境中具有这些依赖项,但系统的其余部分永远不会知道它们。
我们还知道更多的魔法:
通常 使用包的完全限定名称,但我们知道它们提供什么工具,所以只要你知道正在查找的是什么工具,我们就可以弄清楚其余的相关依赖。将来版本中会提供如下的方式来支持依赖声明:
tea:通用虚拟环境管理器
同样比如需要 34 个依赖项来编译我们的白皮书,但有了 就非常简单的了:
我们的白皮书依赖项在我们的 README 中以简单的 markdown 格式编写。 只需进入目录即可为他们设置一个虚拟环境。
在 macOS 上,你可能需要先执行 ,因为我们重新使用系统 (我们尝试检测系统安装的 deps),因此我们无法拦截调用。
基本原理
tea 使用 shell hook 将你项目所需的工具插入到 shell 环境中。开发现在在包管理器级别进行了容器化,你不再需要担心你的团队使用不同版本的基础工具,也不必担心系统级更新会破坏你正在处理的不同项目。
有数以千计的版本管理器来支持成千上万的工具,也许现在是时候停止这种重复工作的时候了。项目可以准确地指定他们需要什么,你可以在今天、明天或十年后准确地满足这些需求。
在上面的示例中,如果 尚未安装,我们将插入一个 hook,以便尝试执行它时将首先安装它。
停止使用 Docker
Docker 非常适合部署和交叉编译,但是......让我们面对现实吧:它对开发人员来说很糟糕。
Docker 扼杀了 builders,它限制了你;技术不断进步,但你的 Docker 容器仍然不能动,没有人知道如何使用 docker,一旦配置了 ,就没有人敢碰它了。
让我们面对现实吧,让你的个人开发和调试工具在这个镜像中工作是非常令人沮丧的,为什么要限制你的潜力呢?
继续使用用 Docker 部署,但是用 来开发。
然后当你部署时,你也可以用 来安装这些依赖组件。
与系统打包程序不同,它有适当的版本控制,所以使用 ,你的部署实际上会更稳定。
可执行的 Markdown
Markdown 已经成为了开发的标准文档格式,与其编写带有注释的脚本,不如编写可以运行的文档。
在 CI 中使用这些脚本很简单:
可以查看 teaxyz/setup 了解们的 GitHub Action 执行的所有操作。
安装使用
是一个独立的二进制文件,因此,如果你愿意,可以自己下载安装,我们推荐使用我们的安装程序:
如果你想要 的虚拟环境管理器功能,上面的安装方式是最简单的。
协议
是以去中心化协议的模式激励开源社区。通过 协议,开源软件包维护者,可以把自己负责的版本发布到由区块链驱动的去中心化注册仓库,从而消除单一故障源,发布无法篡改的版本,允许社区管理整个开源生态系统区域,避免外部影响。
可以激励开源生态系统,主要方式是是通过让参与 协议的开发者,将能够获取的价值与所依赖并希望保护的软件包进行质押。 协议的图表可以提供不可篡改的的软件包注册、对于依赖性要求、验证软件包的真实性,以及通过预言机告知 报酬激励算法。系统性的通货膨胀,基于算法会被分摊到所有软件包上,如果发现安全或开发问题,开发者可以通过上传证据,可以针对软件包的索赔,系统会对有错误和安全上传方进行索赔。开源社区的成员可以审查软件包的质量问题,而 协议可以通过制定比例的削奖励减,来应对这些审查。
Git 仓库:https://github.com/teaxyz/cli
领取专属 10元无门槛券
私享最新 技术干货