这个问题很简单:是否有一种方法可以从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?
但是对于那些想知道为什么会有人这样做的人来说,这个问题背后的动机可能并不太明显。所以让我解释一下:
我使用类似于应用服务器的东西,叫做loopback。我的nodejs应用程序被整齐地分成了客户端、公共和服务器文件夹。
我经常需要在其他项目中重复使用我的common文件夹中的模型。虽然我可以使用.npmignore将其他内容删除并将该文件夹作为单独的NPM模块发布:
/* /common/utils /common/models/*.js !/common/models/*.json
但我无法从已发布的内容中删除当前package.json中需要运行应用程序的混乱信息。目前的情况是,我过滤掉了除了我的common/models文件夹之外的所有内容,但由于我不确定如何在打包之前动态调整package.json文件,或者将其作为打包的一部分...一个npm install命令将安装实际上不需要的依赖项。
我不喜欢创建一个只包含模型的单独项目,因为这迫使我将其作为核心项目的依赖项添加进去,并且主动开发会在原本只有一个项目的情况下分裂成2个项目。npm link等是一个解决方法,但它会增加开发人员设置的复杂性,并确保没有人提交错误的内容。
但是对于那些想知道为什么会有人这样做的人来说,这个问题背后的动机可能并不太明显。所以让我解释一下:
我使用类似于应用服务器的东西,叫做loopback。我的nodejs应用程序被整齐地分成了客户端、公共和服务器文件夹。
我经常需要在其他项目中重复使用我的common文件夹中的模型。虽然我可以使用.npmignore将其他内容删除并将该文件夹作为单独的NPM模块发布:
/* /common/utils /common/models/*.js !/common/models/*.json
但我无法从已发布的内容中删除当前package.json中需要运行应用程序的混乱信息。目前的情况是,我过滤掉了除了我的common/models文件夹之外的所有内容,但由于我不确定如何在打包之前动态调整package.json文件,或者将其作为打包的一部分...一个npm install命令将安装实际上不需要的依赖项。
我不喜欢创建一个只包含模型的单独项目,因为这迫使我将其作为核心项目的依赖项添加进去,并且主动开发会在原本只有一个项目的情况下分裂成2个项目。npm link等是一个解决方法,但它会增加开发人员设置的复杂性,并确保没有人提交错误的内容。
那么,是否有一种方法可以从单个Node.js项目向npmjs注册表发布两个不同的NPM模块?或者有没有办法为单独的发布使用不同的package.json文件,但所有发布都来自同一个项目?
更新:我的目标是什么?
通过将它们作为NPM模块发布,重复使用核心项目中的模型,用于其他项目。而且不放弃继续将核心项目作为一个原子实体进行开发的便利性,而无需使用npm link
等方法,因为当多人参与时,这样做会使情况变得混乱。
将其与应用程序分开
...正如我在第2点中指出的那样,我提出这个问题是因为我不想这样做,我想要在这方面推动一下创新。 - pulkitsinghalcommon
中确切包含什么以及它如何与您的项目交互。 - laggingreflex