Ya he hecho bastante búsqueda. Sin embargo, todavía tengo dudas sobre el parámetro principal en package.json de Node.js.
- ¿Cómo ayudaría completar este campo? Preguntando de otra manera, ¿puedo iniciar el módulo en un estilo diferente si este campo se presenta?
- ¿Puedo completar más de un script en el parámetro principal? En caso afirmativo, ¿se iniciarían como dos hilos? Si no, ¿cómo puedo iniciar dos scripts en un módulo y hacer que se ejecuten en paralelo?
Sé que la segunda pregunta es bastante extraña. Es porque he alojado una aplicación Node.js en OpenShift pero la aplicación consta de dos componentes principales. Uno de ellos es una API REST y otro un servicio de entrega de notificaciones.
Me temo que el proceso de entrega de notificaciones bloquearía la API REST si se implementaran como un solo hilo. Sin embargo, tienen que conectarse al mismo cartucho MongoDB. Además, me gustaría guardar un engranaje si ambos componentes podrían estar sirviendo en el mismo engranaje si es posible.
Cualquier sugerencia es bienvenida.
electron
rinde homenaje a los principales parámetros, es decir,electron .
se inicia lo correcto de una subcarpeta, si hay un ejemplo de una"main": "dist/app/index.js",
depackage.json
(podría ser cierto para otras plataformas / marcos también).You can't have two scripts as main...
- cierto. Sin embargo, si su paquete proporciona, por ejemplo, múltiples comandos CLI (durante el desarrollo accesible bajo./node_modules/.bin/<symlink>
), consulte el parámetro "bin" ..js
extensiones aquí, pero los "identificadores de módulos" no tienen extensiones ... no me gusta la ambigüedad sobre la que se supone que debemos usarPara responder a su primera pregunta, la forma en que carga un módulo depende del punto de entrada del módulo y del parámetro principal de package.json .
Digamos que tiene la siguiente estructura de archivos:
Sin principal parámetro en el package.json , tiene que cargar el módulo, dando el punto de entrada del módulo:
require('my-npm-module/lib/module.js')
.Si se establece la package.json principal parámetro de la siguiente manera
"main": "lib/module.js"
, usted será capaz de cargar el módulo de esta manera:require('my-npm-module')
.fuente
Si tiene por ejemplo en su
package.json
archivo:lib/entry.js
será el principal punto de entrada a su paquete.Cuando llame
en el nodo,
lib/entry.js
será el archivo real que se requiere.fuente
Una función importante de la
main
clave es que proporciona el camino para su punto de entrada. Esto es muy útil cuando se trabaja connodemon
. Si trabaja connodemon
y define lamain
clave en supackage.json
como digamos"main": "./src/server/app.js"
, entonces simplemente puede poner en marcha el servidor escribiendonodemon
la CLI con root como pwd en lugar denodemon ./src/server/app.js
.fuente
Hasta donde sé, es el punto de entrada principal a su paquete de nodos (biblioteca) para npm. Solo es necesario si su proyecto npm se convierte en un paquete de nodo (biblioteca) que otros pueden instalar a través de npm.
Digamos que tiene una biblioteca con una carpeta build /, dist / o lib /. En esta carpeta, obtuvo el siguiente archivo compilado para su biblioteca:
Luego, en su package.json , le dice a npm cómo acceder a la biblioteca (paquete de nodos):
Después de instalar el paquete de nodo con npm en su proyecto JS, puede importar funcionalidades desde su archivo bundle.js incluido :
Esto también es válido cuando se utiliza la división de código (por ejemplo, Webpack) para su biblioteca. Por ejemplo, este webpack.config.js hace uso del código que divide el proyecto en múltiples paquetes en lugar de uno.
Aún así, definiría un punto de entrada principal a su biblioteca en su package.json :
Luego, cuando use la biblioteca, puede importar sus archivos desde su punto de entrada principal:
Sin embargo, también puede omitir el punto de entrada principal desde package.json e importar los paquetes divididos de código:
Después de todo, la propiedad principal en su package.json solo apunta a su archivo de punto de entrada principal de su biblioteca.
fuente
Para OpenShift, solo obtienes un puerto y un par de IP para vincular (por aplicación). Parece que debería poder servir ambos servicios desde una sola instancia de nodejs agregando rutas internas para cada punto final de servicio.
Tengo información sobre cómo OpenShift utiliza el paquete de su proyecto. Json para iniciar su aplicación aquí: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps #package_json
fuente
Solo piense en ello como el "punto de partida".
En un sentido de programación orientada a objetos, digamos C #, es el init () o el constructor de la clase de objeto, eso es lo que significa "punto de entrada".
Por ejemplo
fuente