2015-06-20 52 views
5

这个问题非常简单:有没有一种方法可以通过单个nodejs项目将两个不同的NPM模块发布到npmjs注册表中?如何从单个节点项目发布多个NPM模块?

但是对于那些想知道为什么有人甚至想要这样做呢? ......这个问题背后的动机可能不是太明显。因此,请允许我解释:

我使用类似于名为loopback的应用程序服务器。我的nodejs应用程序整齐地分布在客户端,公共和服务器文件夹中。

  1. 我经常需要重复使用的模型,我在其他项目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 ...的npm install会放下实际上不需要的依赖关系。

  2. 我不喜欢另外创建一个单独项目的模型,因为这迫使我将它作为依赖项添加到核心项目中,并且活跃的开发项目被拆分为两个项目,它们以前只是一。 npm link等是一个很好的方法来解决它,但它增加了开发人员安装时的复杂性,当入职新人时,并确保没有人检查错误的东西。

那么有什么方法可以从单个nodejs项目向npmjs注册表发布两个不同的NPM模块吗?或者某种方式使用不同的package.json文件作为单独的出版物,但全部来自一个项目?


更新:我的目标是什么?

要重复使用我的核心项目中的模型和其他项目中的模型,将它们作为NPM模块发布。没有放弃继续开发我的核心项目的便利,因为一个原子实体没有npm link等,因为当不止一个人在工作时,它会变得杂乱无章。

+1

“尽管我可以只将该文件夹作为独立的NPM模块发布”>“很好”...通过使用.npmignore删除其他内容...“...呵呵?难道你不能将它从应用程序中分离出来,并将它用作应用程序中的模块,如require('common')?也许你可以发布一些简单的代码,如package.json和你的文件结构,以更好地了解你的情况。 – laggingreflex

+0

@laggingreflex - 更新了语言...至于'将它从应用程序中分离出来......正如我在第2项中指出的那样,我问这个问题,所以我不必这么做,我是希望在这里推动一下信封。 – pulkitsinghal

+0

我希望人们可以通过提供降低投票的理由,而不仅仅是让我猜测。 – pulkitsinghal

回答

2

有类似的问题,我最近发现:https://github.com/lerna/lerna,这可能对你有用。

自述:

分裂大的代码库为单独的独立版本 包是代码共享是非常有用的。但是,跨多个存储库进行更改 是混乱且难以跟踪的,跨存储库的测试 变得非常复杂。为了解决这些(以及许多其他问题),一些项目将其代码库组织成 到多包存储库(有时称为 monorepos)。诸如Babel,React,Angular,Ember,Meteor,Jest, 等许多项目都在一个 存储库中开发了所有的软件包。

勒拿湖是一个工具,优化围绕管理 与GIT和NPM多封装储存库中的工作流程。

1

另一种选择是to use Bit

自述:

位使用Git和NPM工作,使其更容易共享代码和同步项目之间 变化。

而不是你的包或 创建新的仓库重组项目,你可以立即隔离和共享任何现有的库的任何 一部分,并用自己喜欢的包管理器 在其他项目中进行安装。

,而不是配置和变更等多个包 库或目录,你可以简单地改变你从任何其他项目共享 和容易的代码同步你的所有 项目之间的变化。

相关问题