Eu já fiz algumas pesquisas. No entanto, ainda há dúvidas sobre o parâmetro principal no package.json do Node.js.
- Como o preenchimento desse campo ajuda? Perguntando de outra maneira, posso iniciar o módulo em um estilo diferente se esse campo aparecer?
- Posso ter mais de um script sendo preenchido no parâmetro principal? Se sim, eles seriam iniciados como dois threads? Se não, como posso iniciar dois scripts em um módulo e executá-los em paralelo?
Eu sei que a segunda pergunta é bastante estranha. É porque eu hospedei um aplicativo Node.js. no OpenShift, mas o aplicativo consiste em dois componentes principais. Uma sendo uma API REST e outra sendo um serviço de entrega de notificações.
Receio que o processo de entrega de notificações bloqueie a API REST se eles forem implementados como um único encadeamento. No entanto, eles precisam se conectar ao mesmo cartucho MongoDB. Além disso, eu gostaria de salvar uma engrenagem, se ambos os componentes pudessem servir na mesma engrenagem, se possível.
Todas as sugestões são bem-vindas.
electron
os principais parâmetros, ou sejaelectron .
, inicia a coisa certa a partir de uma subpasta, se houver um exemplo, um"main": "dist/app/index.js",
inpackage.json
(pode ser verdadeiro também para outras plataformas / estruturas).You can't have two scripts as main...
- verdadeira. No entanto, se o seu pacote fornecer, por exemplo, vários comandos da CLI (durante o desenvolvimento acessível em./node_modules/.bin/<symlink>
), consulte o parâmetro "bin" ..js
extensões aqui, mas "identificadores de módulo" não têm extensões .. eu não gosto da ambigüidade sobre o que estamos suposto usoPara responder sua primeira pergunta, a maneira como você carrega um módulo depende do ponto de entrada do módulo e do parâmetro principal do package.json .
Digamos que você tenha a seguinte estrutura de arquivos:
Sem parâmetro principal no package.json , você tem que carregar o módulo, dando o ponto de entrada do módulo:
require('my-npm-module/lib/module.js')
.Se você definir o package.json principal parâmetro da seguinte forma
"main": "lib/module.js"
, você será capaz de carregar o módulo desta forma:require('my-npm-module')
.fonte
Se você tem, por exemplo, em seu
package.json
arquivo:lib/entry.js
será o principal ponto de entrada do seu pacote.Ao ligar
no nó,
lib/entry.js
será o arquivo real necessário.fonte
Uma função importante da
main
chave é que ela fornece o caminho para o seu ponto de entrada. Isso é muito útil ao trabalhar comnodemon
. Se você trabalhanodemon
e define amain
chave no seupackage.json
como"main": "./src/server/app.js"
, digamos , você pode simplesmente ativar o servidor digitandonodemon
na CLI com root como pwd em vez denodemon ./src/server/app.js
.fonte
Até onde eu sei, é o principal ponto de entrada do pacote de nós (biblioteca) para o npm. Só é necessário se o seu projeto npm se tornar um pacote de nó (biblioteca) que pode ser instalado via npm por outras pessoas.
Digamos que você tenha uma biblioteca com uma pasta build /, dist / ou lib /. Nesta pasta, você obteve o seguinte arquivo compilado para sua biblioteca:
Então, em seu package.json , você informa ao npm como acessar a biblioteca (pacote de nós):
Após instalar o pacote do nó com npm no seu projeto JS, é possível importar funcionalidades do seu arquivo bundle.js empacotado :
Isso também se aplica ao usar o Code Splitting (por exemplo, Webpack) para sua biblioteca. Por exemplo, este webpack.config.js utiliza o código que divide o projeto em vários pacotes configuráveis em vez de um.
Ainda assim, você definiria um ponto de entrada principal para sua biblioteca no seu package.json :
Então, ao usar a biblioteca, você pode importar seus arquivos do seu ponto de entrada principal:
No entanto, você também pode ignorar o ponto de entrada principal do package.json e importar os pacotes configuráveis divididos por código:
Afinal, a propriedade principal em seu package.json aponta apenas para o arquivo de ponto de entrada principal da sua biblioteca.
fonte
Para o OpenShift, você obtém apenas um par PORT e IP ao qual vincular (por aplicativo). Parece que você deve poder atender os dois serviços a partir de uma única instância do nodejs adicionando rotas internas para cada terminal de serviço.
Tenho algumas informações sobre como o OpenShift usa o package.json do seu projeto para iniciar seu aplicativo aqui: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps #package_json
fonte
Pense nisso como o "ponto de partida".
Em um sentido de programação orientada a objetos, digamos C #, é o init () ou o construtor da classe de objetos, é isso que significa "ponto de entrada".
Por exemplo
fonte