Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
Directorio raíz en package.json

Mi pregunta se refiere a una biblioteca existente que deseo publicar como módulo NPM. La biblioteca ya está en uso y actualmente require d a través del sistema de archivos local.

¿Cómo puedo especificar el directorio raíz de los archivos de mi módulo?

Si tengo una estructura como:

 . ├── package.json ├── src | ├── js | └────── lib | └───────── my | └───────────── thing.js | └───────────── that.js

¿Cómo especifico que la raíz de mi módulo y los archivos accesibles son src/js/lib/my/ ?

Me gustaría usar lo siguiente de un proyecto externo:

 var thing = require('my/thing'), that = require('my/that');

Vi la propiedad "files" en package.json, ¿es este el camino correcto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

ACTUALIZACIÓN 2020

El problema que sugiere mainDir ahora está cerrado. En su lugar, hay un nuevo campo llamado exports que se puede usar casi como mapas de importación para asignar una carpeta a un alias de exportación:

 // ./node_modules/es-module-package/package.json { "exports": { "./my/": "./src/js/lib/my/" } }
 import thing from 'es-module-package/my/thing.js'; // Loads ./node_modules/es-module-package/src/js/lib/my/thing.js

Como se sugiere en el problema vinculado en la respuesta original a continuación, es posible asignar la raíz a una carpeta para acceder a la import thing from pkg/thing.js de la siguiente manera:

 { "type": "module", "main": "./dist/index.js", "exports": { "./": "./src/js/lib/my/" } }

Respuesta original

Para una solución nativa, vea este problema de nodo https://github.com/nodejs/node/issues/14970

La solicitud de función sugiere un campo mainDir en el archivo package.json junto a main.

Cuanta más gente vote, más rápido/más probable será implementado

over 4 years ago · Santiago Trujillo Relatório

0

Como dice el documento :

El campo principal es un ID de módulo que es el punto de entrada principal a su programa.

Entonces tendrá algo como "main": "src/js/lib/my/app.js" en su archivo package.json.

Le sugiero que cree un archivo app.js y module.exports sus diferentes hijos. Por ejemplo:

 module.exports.thing = require('./thing'); module.exports.that = require('./that');

Y úsalos así:

 var mylib = require('mylib') , thing = mylib.thing , that = mylib.that;
over 4 years ago · Santiago Trujillo Relatório

0

package.json es principalmente un archivo utilizado por npm para instalar y administrar dependencias.

A la construcción require no le importa mucho el package.json , por lo que no podrá usarlo para subvertir la forma en require funciona y hacer creer que los paquetes no están donde el esquema de carga require los espera.

Consulte la documentación en https://nodejs.org/api/modules.html y el esquema de carga aquí: https://nodejs.org/api/modules.html#modules_all_together

tal vez podría usar la técnica que la documentación llama 'Cargar desde las carpetas globales' y definir la variable de entorno NODE_PATH .

pero le aconsejo que se adhiera a una forma más estándar: - coloque sus módulos en un directorio node_modules - o inicie su jerarquía de módulos en el mismo directorio donde se encuentra su app.js o index.js

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda