Dependencies 建立依赖关系';Thread 2提供了s依赖项

Dependencies 建立依赖关系';Thread 2提供了s依赖项,dependencies,yarnpkg,yarnpkg-v2,Dependencies,Yarnpkg,Yarnpkg V2,我正在开发一个框架,在这个框架中,我希望使用该框架包的应用程序可以使用该框架包的依赖项。依赖项不是由使用者直接使用的,而是由框架提供的文件使用的 对于npm,它是有效的,但是对于纱线2,我会得到这样的错误 Error: Your application tried to access @snowpack/plugin-dotenv, but it isn't declared in your dependencies; this makes the require call ambiguous

我正在开发一个框架,在这个框架中,我希望使用该框架包的应用程序可以使用该框架包的依赖项。依赖项不是由使用者直接使用的,而是由框架提供的文件使用的

对于npm,它是有效的,但是对于纱线2,我会得到这样的错误

Error: Your application tried to access @snowpack/plugin-dotenv, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
显然,我可以将依赖项添加到消费应用程序的package.json中,但这需要在依赖项发生变化时手动编辑package.json。这与无模糊升级路径的框架的想法背道而驰。此外,依赖项是由框架提供的文件。它们不应该受到下游代码的干扰

是否可以在下游共享依赖关系


注意:我正在使用工作区。我不知道这是否与问题相关。

您可以使用
createRequire
来实现这一点

例如,如果您的应用程序依赖于
micromatch@4.0.2
如果您希望在应用程序代码中要求其子依赖项
picomatch
而不声明它,您可以通过下面的代码代表
micromatch
执行此操作:

const{createRequire}=require(`module`);
const requireDependency=createRequire(require.resolve(`micromatch`));
要求独立(`picomatch`);
这种方法将适用于所有软件包管理器和安装策略,包括
warn v2 pnp
pnpm
npm

切换到pnpm及其“-可耻地提升”选项。