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

时间:2015-06-20 17:51:21

标签: node.js npm strongloop

问题非常简单:有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?

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

我使用的东西类似于名为loopback的app-server。我的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文件或将其作为打包文件的一部分... {{1}将放下真正不需要的依赖项。

  2. 我对单独使用模型创建单独项目的选择并不感到兴奋,因为这迫使我将其添加为核心项目的依赖项,并且活动开发分为两个以前的项目只有一个。 npm install等是一种很好的方法来解决它,但它会增加开发人员设置的复杂性,当新人加入并确保没有人检查错误的东西时。

  3. 那么有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?或者某种方式将不同的package.json文件用于单独的发布,但所有这些都来自一个项目?

    更新:我的目标是什么?

    通过将其作为NPM模块发布,从我的核心项目中重用其他项目中的模型。没有放弃继续开发我的核心项目作为一个原子实体没有npm link等的便利,因为当不仅仅有一个人正在处理它时,它会变得非常混乱。

1 个答案:

答案 0 :(得分:5)

有一个类似的问题,我最近发现:{{3}},这可能对你有用。

自述文件:

  

将大型代码库拆分为单独的独立版本   包对代码共享非常有用。但是,要做出改变   跨越许多存储库是混乱的,难以跟踪和测试   跨存储库变得非常复杂。

     

为了解决这些(以及许多其他)问题,一些项目将进行组织   他们的代码库进入多包软件包(有时称为   monorepos)。 Babel,React,Angular,Ember,Meteor,Jest等项目,   和许多其他人一起开发他们所有的包   库中。

     

Lerna是一个优化管理工作流程的工具   使用git和npm的多包软件包。