J'ai un projet qui inclut une tâche gulp pour la construction et le conditionnement des sources et la publication dans un répertoire appelé dist
. Mon objectif est de le publier sous la forme d'un paquet npm, mais uniquement de mon dossier dist. La documentation npm indique que je peux utiliser la balise files
pour spécifier les fichiers à exporter. Ça marche. Mais la documentation dit aussi que:
Si vous nommez un dossier dans le tableau, il inclura également les fichiers dans ce dossier
Le résultat est un package npm, ressemblant à node_modules:
Mais j'aimerais voir tous mes fichiers à la racine du paquet (sans ce dossier dist
). Mon fichier index.js
se trouve dans le dossier dist
, mais doit être à la racine. J'ai essayé de définir le tag files
comme /dist/**/*
mais cela n'a pas fonctionné.
Comment puis-je y arriver?
J'ai le même désir, mais je pense que (il n'y a aucun moyen de le faire en utilisant uniquement des outils npm}. Un autre script/outil peut être utilisé pour organiser votre paquet.
Actuellement, je copie mon package.json
dans le dossier dist
, puis j'exécute npm pack
dans le dossier dist
. Je pense que cela fournit essentiellement l'arrangement souhaité de notre paquet.
Voici quelques lectures pertinentes sur cette conception npm: Why no Directories.lib in Node .
Il est également intéressant de noter que jspm respecte l’option directories.lib
dans package.json
et réorganise les fichiers lors de la résolution du package npm. Tout cela est arrivé pour moi parce que je souhaite construire une bibliothèque commune pouvant être utilisée par jspm ou npm/webpack.
Je vous recommande vivement d'utiliser .npmignore
au lieu de déplacer ou de copier des éléments, en particulier si vous utilisez un élément de configuration pour les déploiements, et d'ajouter simplement les fichiers que vous ne souhaitez pas publier.
https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-your-package
Exemple:
#tests
test
coverage
#build tools
.travis.yml
.jenkins.yml
.codeclimate.yml
#linters
.jscsrc
.jshintrc
.eslintrc*
#editor settings
.idea
.editorconfig
Si vous voulez scinder votre code, en utilisant différents packages npm en utilisant le même référentiel, je suis tombé sur ce projet récemment: Lerna et semble vraiment bien.
Peut-être devriez-vous jeter un oeil
J'ai un problème similaire à celui de l'affiche originale (@robsonrosa). Dans mon cas, j'utilise typecript qui compile dans un répertoire dist
. Bien que je puisse compiler TypeScript dans le répertoire racine, je pense que la meilleure solution consiste à générer un fichier package.json
séparé dans le répertoire dist.
Ceci est similaire à la suggestion de @scvnc de copier le package.json
mais avec une torsion:
Dans le cadre du processus de création de package, vous devez générer le package.json
pour le package qui est basé mais distinct de vous le fichier package.json
principal du répertoire racine
La justification:
package.json
est le fichier de développement. Il peut contenir des scripts ou des dépendances de développement qui ne sont d'aucune utilité pour l'utilisateur du package, mais peuvent poser des problèmes de sécurité. Votre procédure d’emballage peut inclure un code qui supprime ces informations du package.json
de production.