Yarn 会考虑依赖的锁文件吗?

Will Yarn consider the lock files of dependencies?

我有一个内部脚手架应用程序,为此我创建了一个 yarn.lock 文件。现在,这个应用程序将被其他 Node 应用程序使用。 Yarn 会在主应用安装依赖时考虑其依赖的锁文件吗?

开箱即用,答案是

但是一种解决方法。如果您看到 this 讨论,建议使用

yarn add file:path-to-submodule

在我看来,这是一种更确定的处理子模块包的方法。所以你可以做的是:

mkdir module && cd module
yarn init
mkdir submodule && cd submodule
yarn init                // Name this package 'submodule'
yarn add express         // Just an example package
rm -rf node_modules      // To see if node_modules is going to be regenerated
ls                       // package.json yarn.lock
cd ..
yarn init
yarn add react           // Another sample module
yarn add file:submodule  // Adds submodule as a local dependency
yarn 
cd node_modules && ls    // Both react & express and their dependencies are now in module/node_modules
cd .. && cd submodule && ls // No node_modules created within /submodules

在这里您可以看到您已经使用 yarn add

在主模块中成功创建了一个本地子模块

使用此方法的优点是:

  • 每个包只保存一份
  • 所有包都在一个位置(只有一个 node_modules 文件夹)
  • 您可以选择哪些包是子模块,哪些不是,所以不要惊讶
  • 没有秘密子模块添加到您的包中,只是因为它们在您的包文件夹中的位置