J'essaie d'ajouter une deuxième partie à mon script de bundle npm. La première partie fonctionne très bien, mais j'essaie de copier en 3 fichiers avec le bundle.

Alors maintenant, j'ai:

"bundle": "NODE_ENV=production webpack --output-file bundledFile.js && cp package.json dist/",

Le NODE_ENV=production webpack --output-file bundledFile.js fonctionne très bien par lui-même. La partie qui ne fonctionne pas est la && cp package.json dist/, j'aimerais que le script copie mon package.json (avec 2 autres fichiers en fait, mais en commençant juste par celui-ci) dans le dossier dist. Tout nouveau pour ces scripts, une idée de la façon de corriger? Appréciez tous les conseils, merci!

20
ajmajmajma 9 août 2016 à 22:13

4 réponses

Meilleure réponse

La syntaxe devrait fonctionner (et semble, en regardant vos commentaires). Je suggérerais cependant de diviser vos scripts npm en plusieurs points:

{
  "bundle": "NODE_ENV=production webpack --output-file bundledFile.js",
  "copy": "cp package.json dist/ && cp README.md dist/ && cp .npmrc dist/",
  "build": "npm run bundle && npm run copy"
}

Afin d'être compatible entre plates-formes (cp n'est généralement pas disponible sur Windows), je suggère également d'ajouter un fichier de construction quelque part tel que ./tools/copy-distrubution-files.js qui utiliserait fs à < a href="/questions/1392669/le-moyen-le-plus-rapide-de-copier-un-fichier-dans-nodejs"> copiez les fichiers nécessaires , puis appelez-le dans les scripts npm avec node ./tools/copy-distribution-files.js. Ce sera (principalement) indépendant de la plate-forme (vous devez toujours supposer que node est disponible en tant qu'exécutable nodejs, mais cela me semble assez raisonnable).

24
Community 23 mai 2017 à 11:46

Si vous utilisez Windows, utilisez la commande suivante:

"copy": "copy "package.json" "dist" && copy "README.md" "dist" && copy ".npmrc" "dist"

Copier au lieu de cp. N'oubliez pas d'utiliser "" pour chaque chemin. et si vous devez définir un long chemin, n'utilisez pas / (barres obliques) mais \ (barres obliques inverses)

Comme:

copy "devices\\VS-88UT\\index.html" "devices\\VS-88UT\\dist"

De plus, si vous préférez, il existe un joli plugin pour exécuter la commande bash avant et après chaque build

1
IsraGab 16 juil. 2018 à 22:47

Le moyen le plus rapide pour moi était de référencer powershell dans un script package.json comme celui-ci:

"copyFile": "@powershell copy './source/package.json' './deploy'",
0
Dustin Spengler 13 févr. 2020 à 16:43

Pour copier des dossiers et des fichiers dans Windows, utilisez simplement

xcopy git\\* dist\\ /e /i /h

Je pense que cela pourrait aider quelqu'un.

0
sisco 28 oct. 2019 à 00:43