Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

261
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!