web-dev-qa-db-fra.com

comment exécuter des scripts Powershell ps1 à partir de "scripts" package.json?

Comment puis-je exécuter des scripts PowerShell ps1 à partir de package.json "scripts"?

Je sais comment configurer un script de base dans package.json "scripts". Par exemple, avec la configuration suivante, je peux exécuter npm run test qui affichera "ceci n'est qu'un test" sur la console:

"scripts": {
  "test": "echo \"this is only a test\""
}

Cependant, j'ai un scénario plus avancé où j'aimerais exécuter un script PowerShell. Quelque chose comme ça:

"scripts": {
  "buildAngular": "buildAngular.ps1"
}

Puis-je exécuter un script ps1 comme celui-ci via l'objet scripts? Une configuration/configuration spéciale est-elle requise? Y a-t-il des contraintes supplémentaires?

16
user8570495

En supposant que PowerShell soit dans votre CHEMIN, vous pouvez l'appeler comme ceci:

"scripts": {
    "test": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./test.ps1"
}

Testé sur Windows 7 avec Powershell v4.

Les limites sont que vous avez besoin de Powershell installé et dans votre PATH. Je ne l'ai pas testé avec Powershell pour Linux, donc je ne sais pas si cette solution sera portable sur une autre plateforme pour l'instant.

30
barnski

Vous pouvez définir la config script-Shell - soit via npm config set script-Shell "powershell" ou variable d'environnement $env:npm_config_script_Shell="powershell"

Ensuite, vous pouvez utiliser

"scripts": {
    "test": "Write-Host 'this is only a test'"
}

ou

"scripts": {
    "buildAngular": ".\\buildAngular.ps1"
}

Je ne sais pas si vous pouvez fournir des paramètres comme -NoProfile.

0
JeffRSon