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

Npm 如何将本地依赖项的快照打包到已发布的包中,npm,package,publish,monorepo,rush,Npm,Package,Publish,Monorepo,Rush,在使用管理的JavaScript monorepo中,我有三个项目: backend/ frontend/ shared/ 在backend/package.json和frontend/package.json中,shared项目被声明为依赖项: "dependencies": { "shared": "0.0.0", 在本地环境中,由于Rush为我运行了npm-link,一切正常 现在我需要出版 在frontend项

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

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

  "dependencies": {
    "shared": "0.0.0",
在本地环境中,由于Rush为我运行了
npm-link
,一切正常

现在我需要出版

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

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

我试着把它打包:

cd后端/
npm包../共享
#将创建一个新文件:“shared-0.0.0.tgz”
然后我编辑了
backend/package.json

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


是否有一个优雅的解决方案?

尝试指定共享-0.0.0.tgz的完整相对路径:

有效的相对路径可以如下所示(使用适合您的结构的任何路径):

然后执行
rush install
rush update
以处理更改

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


如果这不起作用,可能就是答案。今晚我将建立一个测试项目,稍后进行测试和更新,但这可能会让您更快地完成任务。

很有趣。我不知道
bundleddependencies
。这可能是正确的方法。我使用
bundledDependencies
进行了测试。它可以工作,但存在一个巨大的问题:
shared
没有正确打包。它与源文件、
.rush/
node\u模块/
目录等绑定在一起。忽略
shared/package.json的脚本
prepublish
。文件
.npmignore
以及
package.json
中的
文件部分。在这些情况下,我无法使用此功能。请尝试将
prepublish
脚本移动到
prepack
  "dependencies": {
    "shared": : "file:~/some/relative/path/shared-0.0.0.tgz"
../foo/bar
~/foo/bar
./foo/bar
/foo/bar