package.json:
...
"name": "mypackage",
"main": "src/index.js"
...
Structure du répertoire:
|- src/
|--- index.js
|--- other.js
Je peux exiger src/index.js
Avec require('mypackage');
, mais comment puis-je exiger src/other.js
?
Si la réponse est require('mypackage/src/other');
, existe-t-il un moyen de le faire pour que je puisse l'exiger avec require('mypackage/other');
(c'est-à-dire enseigner au nœud quel est le répertoire du fichier source de votre module?
AFAIK Vous devrez l'exposer explicitement à la racine:
Structure du répertoire:
|- src/
|--- index.js
|--- other.js
|- other.js
Puis dans /other.js
module.exports = require('src/other.js');
Vous pouvez maintenant faire require('mypackage/other')
J'examine actuellement exactement la même chose.
Package.json
a une propriété appelée 'files':
http://blog.kewah.com/2014/npm-as-a-front-end-package-manager/
https://docs.npmjs.com/files/package.json
Le champ "fichiers" est un tableau de fichiers à inclure dans votre projet. Si vous nommez un dossier dans le tableau, il inclura également les fichiers à l'intérieur de ce dossier.
Mais je n'ai pas encore trouvé comment faire une importation/demande d'un tel fichier. Je ne vois pas vraiment un autre point dans la liste de ces fichiers autre que de pouvoir import/require
leur?
J'ai pu importer un fichier à partir d'un package s'il figurait dans ce tableau de fichiers.
{
"name": "local-ui-utilities",
"version": "0.0.1",
"description": "LOCAL UI Utilities",
"main": "index.jsx",
"author": "Norbert de Langen",
"license": "none",
"dependencies": {
},
"files": [
"/colors/sets/variables.css"
]
}
Je suis capable d'importer le fichier css depuis le package en utilisant postcss-import:
@import "local-ui-utilities/colors/sets/a.css";
Ce n'est probablement pas votre cas d'utilisation, mais l'importation postcss utilise juste npm sous le capot. Donc, cela devrait également fonctionner pour votre cas d'utilisation, je pense.
Cette question et la réponse acceptée semblent liées: Node/NPM: Un package npm peut-il exposer plus d'un fichier?
Vous devrez exposer explicitement le fichier dans le dossier racine, mais de nombreux projets (y compris les anciennes versions de lodash) le font dans le cadre d'une étape de pré-publication. En fait, il y a n package qui fait exactement ce que @Creynders suggère, en ajoutant des fichiers module.exports = require('./path/to/file')
dans votre dossier racine. Il y a quelque temps, j'ai rédigé un guide pour commencer, mais le Gist est assez simple.
Installer
npm install --save-dev generate-export-aliases
Configurer
{
"name": "my-package",
"scripts": {
"prepublish": "generate-export-aliases"
},
"config": {
"exportAliases": {
"other": "./src/other"
}
}
}
Utilisez
const other = require('my-package/other')
AVERTISSEMENT: je suis l'auteur du paquet