我有一个Node Typescript Mono-repo,里面有两个包。一个包是一个库,发布到npm artifactory。另一个包是一个express service。
我希望服务将库列为依赖项:“xyz-library”:“^1.0.0”,
我遇到的问题是,当使用和导入服务包中的库时,它似乎是在引用或安装库的最新代码到node_modules包中,而不是抓取1.0.0版本。例如,如果我删除库中正在API中引用的文件,现在我得到了导入错误(我不应该这样做,因为从技术上讲,该文件应该仍然存在于1.0.0版本中)。
看起来这是NPM工作区的默认配置,并且使用链接连接代码可以正常工作。但是我想知道我是否可以将服务配置为使用库的发布版本?
1条答案
按热度按时间b1uwtaje1#
编辑:我想我找到了一个解决这个特定情况的方法,尽管它不能解决一般情况下的问题。
将依赖项固定到旧版本。如果您在服务中运行
npm i [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) --save-exact
,则应强制npm安装旧版本的“xyz-library”,它只能从存储库中获取。如果它将“xyz-library”安装在service package.json文件旁边的node_modules文件夹中,您就会知道它是否工作。
原始答案:
我也遇到了同样的问题,我无法使用npm task找到一个好的答案。我尝试了--install-strategy标志的所有选项,但它没有改变这种行为。
据我所知,你可以做以下几件事之一:
1.使用不同的包管理器,如pnpm或yarn。
1.停止使用插件。插件将安装在指定它们的package.json文件旁边,完全按照指定的方式安装。
1.按原样接受此行为。