Nie*_*Bom 32 language-agnostic vendor
究竟是什么东西?(你会如何定义它?)
在不同的编程语言中它是否意味着相同的事情?从概念上讲,没有看到确切的实施.
Nie*_*Bom 13
如果您的应用依赖某些第三方代码可用,您可以声明一个依赖项,让您的构建系统为您安装依赖项.
但是,如果第三方代码的来源不是很稳定,您可以"提供"该代码.您可以使用第三方代码,并以或多或少的方式将其添加到您的应用程序中.如果您认真对待此隔离,则应在内部将此代码"释放"到您的组织/工作环境中.
出售的另一个原因是,如果你想使用某些第三方代码,但你想稍微改变它(换句话说就是一个分叉).您可以复制代码,更改代码,在内部发布代码,然后让构建系统安装这段代码.
Vendoring 意味着将依赖项放入您的项目文件夹(而不是全局依赖它)并将其提交到 repo。
例如,运行cp /usr/local/bin/node ~/yourproject/vendor/node并将其提交到 repo 将“供应”Node.js 二进制文件——项目中的所有开发人员都将使用这个确切的版本。这通常不是为node它自己做的,但例如 Yarn 2(“浆果”)是这样使用的(并且只有像这样;他们甚至不全局安装二进制文件)。
承诺行为很重要。例如,node_modules已经安装在您的项目中,但只有提交它们才会使它们“供应商”。几乎没有人这样做,node_modules但例如,Yarn 2 的PnP +零安装实际上是围绕供应商构建的——您将.yarn/cache许多 ZIP 文件提交到存储库中。
“供应商”本质上会在存储库大小(更长的克隆时间、更多的数据传输、本地存储要求等)和安装的可靠性/可重复性之间进行权衡。