究竟是什么东西? (你会如何定义它?)
在不同的编程语言中它是否意味着相同的事情?从概念上讲,没有看到确切的实施。
答案 0 :(得分:18)
答案 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
提交到仓库中。
“供应商”固有地在回购大小(更长的克隆时间,更多的数据传输,本地存储要求等)和安装的可靠性/可重复性之间进行了权衡。