Node.js package.json的主要参数

我已经做了相当多的search。 不过,对Node.js的package.json中的主要参数仍有疑问。

  1. 如何填补这个领域的帮助? 以另一种方式提问,如果该字段存在,我可以以不同的样式启动模块吗?
  2. 我可以将多个脚本填充到主参数中吗? 如果是的话,他们会开始两个线程? 如果不是,我该如何在模块中启动两个脚本并让它们并行运行?

我知道第二个问题很奇怪。 这是因为我在OpenShift上托pipe了一个Node.js应用程序,但应用程序由两个主要组件组成。 一个是REST API,另一个是通知传递服务。

如果它们被实现为单个线程,我担心通知传递过程会阻塞REST API。 但是,他们必须连接到相同的MongoDB盒式磁带。 此外,如果可能的话,两个部件可以在同一个档位上工作,我想节省一个档位。

任何build议,欢迎。

从npm文档 :

主要字段是模块ID,是您程序的主要入口点。 也就是说,如果你的包被命名为foo,并且用户安装它,然后做require(“foo”),那么你的主模块的exports对象将被返回。

这应该是一个相对于你的包文件夹的根的模块ID。

对于大多数模块,最重要的是有一个主要的脚本,通常没有其他的东西。

简而言之:

  1. 如果package.json的入口点与其根文件夹中的index.js不同,则只需要package.jsonmain参数。 例如,人们经常把入口点放在lib/index.jslib/<packagename>.js ,在这种情况下,相应的脚本必须在package.json描述为main
  2. 因为入口点require('yourpackagename')必须明确定义,所以不能有两个脚本作为main

要回答第一个问题,加载模块的方式取决于模块入口点和package.json的主要参数。

假设您有以下文件结构:

 my-npm-module |-- lib | |-- module.js |-- package.json 

如果没有package.json中的主参数,则必须通过给出模块入口点来加载模块: require('my-npm-module/lib/module.js')

如果将package.json主参数设置为"main": "lib/module.js" ,则可以通过require('my-npm-module')加载模块。

如果你有例如你的package.json文件:

 { "name": "zig-zag", "main": "lib/entry.js", ... } 

lib/entry.js将成为你的软件包的主要入口点。 打电话时

require( 'zig-zag' );

在节点中, lib/entry.js将是实际需要的文件。

main关键的一个重要function是为您的切入点提供了path。 使用nodemon时,这非常有用。 如果您使用nodemon并且在package.json定义了main键,如"main": "./src/server/app.js" ,那么您可以简单地在CLI中键入nodemon来启动服务器, root作为pwd 而不是 nodemon ./src/server/app.js

对于OpenShift,您只能获得一个PORT和IP绑定(每个应用程序)。 听起来你应该能够通过为每个服务端点添加内部路由来从一个nodejs实例服务这两个服务。

我有一些关于OpenShift如何使用你的项目的package.json在这里启动你的应用程序的信息: https : //www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps #package_json