[英]How to publish multiple NPM modules from a single node project?
问题很简单:是否有某种方法可以从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?
但是对于那些想知道为什么有人甚至想要这么做的人呢? ...这个问题背后的动机可能不太明显。 因此,请允许我解释一下:
我使用类似于环回的应用服务器。 而且我的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文件,作为打包的一部分... npm install
将放下真正不需要的依赖项。
我不为单独创建带有模型的单独项目而感到兴奋,因为这迫使我将其添加为对核心项目的依赖,并且活跃的开发被分成了两个项目,而这些项目以前只是一个项目。 npm link
等是解决该问题的好方法,但是在加入新人员并确保没有人检查错误的情况下,这增加了开发人员设置的复杂性。
那么,有什么方法可以从单个nodejs项目向npmjs注册表发布两个不同的NPM模块? 或者以某种方式将不同的package.json文件用于单独的发布,但全部来自一个项目?
更新:我的目标是什么?
通过将其发布为NPM模块来重用我核心项目中的模型以及其他项目中的模型。 不放弃继续将我的核心项目开发为一个没有npm link
等的原子实体的便利,因为当一个以上的人正在处理时,它会很快变得混乱。
有一个类似的问题,我最近发现: https : //github.com/lerna/lerna ,这可能对您有用。
从自述文件:
将大型代码库分成单独的独立版本的软件包对于代码共享非常有用。 但是,跨许多存储库进行更改很麻烦且难以跟踪,并且跨存储库的测试变得非常复杂。
为了解决这些(以及许多其他)问题,某些项目会将其代码库组织到多包存储库中(有时称为monorepos)。 Babel,React,Angular,Ember,Meteor,Jest等项目以及许多其他项目都在一个存储库中开发了所有软件包。
Lerna是一种工具,可以优化使用git和npm管理多包存储库的工作流程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.