什么是“售卖”?

时间:2014-10-06 13:39:10

标签: language-agnostic vendor

究竟是什么东西? (你会如何定义它?)

在不同的编程语言中它是否意味着相同的事情?从概念上讲,没有看到确切的实施。

4 个答案:

答案 0 :(得分:18)

基于this answer

为Go定义here

  

供应是制作您自己的第三方软件包副本的行为   你的项目正在使用。这些副本传统上放在里面   每个项目,然后保存在项目存储库中。

这个答案的背景是Go语言,但这个概念仍然适用。

答案 1 :(得分:8)

如果您的应用依赖某些第三方代码可用,您可以声明一个依赖项,让您的构建系统为您安装依赖项。

但是,如果第三方代码的来源不是很稳定,您可以“提供”该代码。您可以使用第三方代码,并以或多或少的方式将其添加到您的应用程序中。如果您认真对待这种隔离,则应在内部将此代码“释放”到您的组织/工作环境中。

出售的另一个原因是,如果你想使用某些第三方代码,但你想稍微改变一下(换句话说就是一个分支)。您可以复制代码,更改代码,在内部发布代码,然后让构建系统安装这段代码。

答案 2 :(得分:0)

总结其他(太?)个长答案:

  

供应商正在对经常分叉的依赖版本进行硬编码。

这通常涉及静态链接或其他副本,但这不是必须的。

是非非非,“硬编码”一词的名声古旧。因此,您不会在公开销售项目附近找到它,但是我想不出一个更准确的术语。

答案 3 :(得分:0)

供应商意味着将依赖项放入您的项目文件夹(相对于全局依赖项)并将其提交给存储库

例如,运行cp /usr/local/bin/node ~/yourproject/vendor/node并将其提交到存储库将“供应” Node.js二进制文件–项目上的所有开发人员都将使用此确切版本。 node本身通常不这样做,但例如像这样使用Yarn 2(“浆果”)(并且这样;它们甚至不全局安装二进制文件。)

提交行为很重要。例如,node_modules已安装在您的项目中,但是仅提交它们会使它们“被供应”。几乎没有人为node_modules这么做,例如纱线2的PnP + Zero Installs实际上是围绕供应商构建的–您将包含许多ZIP文件的.yarn/cache提交到仓库中。

“供应商”固有地在回购大小(更长的克隆时间,更多的数据传输,本地存储要求等)和安装的可靠性/可重复性之间进行了权衡。