如何在已发布的包中打包本地依赖项的快照



在使用 Rush 管理的 JavaScript monorepo 中,我有三个项目:

  • backend/
  • frontend/
  • shared/

backend/package.jsonfrontend/package.json中,shared项目被声明为依赖项:

"dependencies": {
"shared": "0.0.0",

在当地环境中,一切都很好,这要归功于 Rush,它为我运行npm link

现在我需要发布。

frontend项目上,命令rushx build(如npm run build(在 webpack 的帮助下创建 JS 和 CSS 包,并将它们放在backend/目录中。

我想将backend项目作为 npmjs 上的真实包发布。我不想将shared发布为一个单独的包,因为在已发布的版本中,它不再共享。shared内容已捆绑在前端。我也想将其嵌入后端。

我试图打包它:

cd backend/
npm pack ../shared
# A new file is created: 'shared-0.0.0.tgz'

然后我编辑了backend/package.json

"dependencies": {
"shared": "shared-0.0.0.tgz",

但是在那之后,生成的包不起作用。当我执行npm install my-published-package时,它会尝试在当前目录中而不是已安装的软件包目录中查找shared-0.0.0.tgz

有没有优雅的解决方案?

尝试指定shared-0.0.0.tgz的完整相对路径,如此处所述:

"dependencies": {
"shared": : "file:~/some/relative/path/shared-0.0.0.tgz"

有效的相对路径可以是这样的(使用适合您的结构的任何路径(:

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

然后执行rush installrush update来处理更改。

如果这不起作用,请先尝试使用npm install --save保存共享包。

如果这不起作用,捆绑依赖项可能是答案。今晚我将建立一个测试项目,以便稍后尝试和更新,但这可能会让你更快地上路。

最新更新