问题非常简单:有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?
但对于那些想知道为什么有人甚至想要这样做的人呢? ......这个问题背后的动机可能不太明显。所以请允许我解释一下:
我使用的东西类似于名为loopback的app-server。我的nodejs应用程序整齐地分发到客户端,公共和服务器文件夹中。
我经常需要在我的common
文件夹中重复使用其他项目中的模型。虽然我可以使用.npmignore
删除其他内容,将该文件夹作为单独的NPM模块发布:
/*
/common/utils
/common/models/*.js
!/common/models/*.json
我无法从已发布的内容中删除实际运行我的应用程序所需的当前package.json
的混乱。
$ npm pack
$ tree -L 2 ~/dev/w2/node_modules/warehouse
~/dev/w2/node_modules/warehouse
├── README.md
├── common
│ └── models
├── node_modules
│ ├── ...
│ └── ...
└── package.json
事实上,我过滤掉了common/models
文件夹以外的所有内容,但由于我不确定如何在打包之前动态调整package.json文件或将其作为打包文件的一部分... {{1}将放下真正不需要的依赖项。
我对单独使用模型创建单独项目的选择并不感到兴奋,因为这迫使我将其添加为核心项目的依赖项,并且活动开发分为两个以前的项目只有一个。 npm install
等是一种很好的方法来解决它,但它会增加开发人员设置的复杂性,当新人加入并确保没有人检查错误的东西时。
那么有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?或者某种方式将不同的package.json文件用于单独的发布,但所有这些都来自一个项目?
更新:我的目标是什么?
通过将其作为NPM模块发布,从我的核心项目中重用其他项目中的模型。没有放弃继续开发我的核心项目作为一个原子实体没有npm link
等的便利,因为当不仅仅有一个人正在处理它时,它会变得非常混乱。
答案 0 :(得分:5)
有一个类似的问题,我最近发现:{{3}},这可能对你有用。
自述文件:
将大型代码库拆分为单独的独立版本 包对代码共享非常有用。但是,要做出改变 跨越许多存储库是混乱的,难以跟踪和测试 跨存储库变得非常复杂。
为了解决这些(以及许多其他)问题,一些项目将进行组织 他们的代码库进入多包软件包(有时称为 monorepos)。 Babel,React,Angular,Ember,Meteor,Jest等项目, 和许多其他人一起开发他们所有的包 库中。
Lerna是一个优化管理工作流程的工具 使用git和npm的多包软件包。