123 votes

Comment mnp publier dossier spécifique, mais comme racine de package

J'ai un projet qui incluent une gorgée de tâches pour la construction et l'emballage des sources et de la libération dans un répertoire appelé dist. Mon objectif est de le publier en tant que mnp paquet, mais seulement mon dossier dist. Le mnp de la documentation dit que je peux utiliser l' files balise de spécifier les fichiers à exporter. Elle fonctionne. Mais, la documentation dit aussi que:

Si vous avez le nom d'un dossier dans le tableau, alors il va aussi inclure les fichiers à l'intérieur de ce dossier

Le résultat est un package npm, qui node_modules ressemble:

generated npm package

Mais j'aimerais voir tous mes fichiers à la racine (sans qu' dist le dossier). Mon index.js le fichier est à l'intérieur de l' dist le dossier, mais qui doit être à la racine. J'ai essayé de mettre le tag files comme /dist/**/* mais il ne fonctionne pas.

Comment puis-je l'atteindre?

50voto

scvnc Points 510

J'ai le même désir, mais je pense qu' il n'y a aucune façon d'accomplir ceci avec seulement l'aide de mnp de l'outillage. Un autre script/outil pourrait être utilisé pour organiser votre colis.

Solution Alternative

Actuellement je copie mon package.json dans la dist le dossier, puis en exécutant npm pack à l'intérieur de l' dist le dossier. Je pense qu'il s'agit essentiellement, le choix de notre package.

Voici quelques lecture sur ce mnp conception: Pourquoi pas Répertoires.lib dans le Nœud.

Il est également intéressant de noter que jspm NE l'égard de l' directories.lib option en package.json et réorganise les fichiers lors de la résolution du package npm. Tout cela est pour moi parce que je suis désireux de construire une bibliothèque commune qui peut être consommé par les jspm ou mnp/webpack.

23voto

Eli Algranti Points 3284

J'ai un problème similaire à l'original de l'affiche (@robsonrosa). Dans mon cas, j'utilise typecript qui compile à un dist répertoire. Alors que je pourrais faire à la machine de compilation dans le répertoire racine je pense que la meilleure solution est de générer un distinct package.json le fichier dans le répertoire dist.
Ceci est similaire à @scvnc suggestion de la copie de l' package.json , mais avec une torsion:

Dans le cadre du processus d'emballage vous devez générer l' package.json pour le package qui est basé, mais distincte de vous le principal package.json le fichier dans le répertoire racine

L'explication:

  • La racine package.json le fichier est le fichier de prospection. Il peut contenir des scripts ou des dépendances de développement qui sont d'aucune utilité pour le paquet de l'utilisateur, mais peuvent poser des problèmes de sécurité pour vous. Votre emballage procédure peut inclure du code qui supprime que les informations provenant de la production package.json.
  • Vous souhaitez déployer votre colis à des environnements différents, qui peuvent avoir besoin de différents fichiers de package (par exemple, vous voudrez peut-être avoir des versions différentes ou dépendances).

9voto

Thram Points 291

Je vous recommande fortement d'utiliser .npmignore au lieu de déplacer ou de copier des choses autour de vous, spécialement si vous utilisez un IC pour les déploiements, et juste d'y ajouter les fichiers que vous ne souhaitez pas publier.

https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

Exemple:

#tests
test
coverage

#build tools
.travis.yml
.jenkins.yml
.codeclimate.yml

#linters
.jscsrc
.jshintrc
.eslintrc*

#editor settings
.idea
.editorconfig

Mise à jour:

Si vous souhaitez diviser votre code, dans les différents mnp packages à l'aide de la même repo, j'ai travaillé sur ce projet récemment: Lerna et a l'air vraiment bon.

Peut-être que vous devriez jeter un oeil

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X