Npm 如何将本地依赖项的快照打包到已发布的包中
在使用管理的JavaScript monorepo中,我有三个项目: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项
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