如何从单个节点项目发布多个NPM模块?

这个问题很简单:有没有办法从一个nodejs项目向npmjsregistry发布两个不同的NPM模块?

但是对于那些想知道为什么有人甚至想要这样做呢? 这个问题背后的动机可能不是太明显。 所以让我解释一下:

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

  1. 我经常需要在其他项目中重复使用我的common文件夹中的模型。 尽pipe我可以通过使用.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文件夹以外的所有东西,但是因为我不确定如何在打包之前dynamic调整package.json文件,作为包装它的一部分…一个npm install将放下真正不需要的依赖关系。

  2. 我并不高兴能够单独build立一个独立的项目模型,因为这迫使我把它作为对核心项目的一个依赖项,并且活跃的开发项目被分成两个过去只有一个的项目。 npm link等是一个很好的方法来解决它,但是当开始使用新的开发人员并确保没有人检查错误的东西时,它增加了开发者设置的复杂性。

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


更新:我的目标是什么?

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

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

自述文件:

将大型代码库拆分为独立版本的软件包对于代码共享非常有用。 但是,在许多存储库中进行更改是很麻烦和难以跟踪的,跨存储库的testing变得非常复杂。

为了解决这些(和许多其他问题),一些项目将把它们的代码库组织成多包存储库(有时称为monorepos)。 像Babel,React,Angular,Ember,Meteor,Jest和其他许多项目在一个存储库中开发了所有的软件包。

Lerna是一个工具,可以优化使用git和npmpipe理多包存储库的工作stream程。