Hello, j'aurais besoin d'un expert en JS, plus précisément en NodeJS, j'explique mon problème.
Avant le problème
Actuellement, je (dois) travailler sur 2 technologies bien distinct :
- Le framework VueJS
- Un serveur NodeJS avec des outils tel que express, typescript, twig, etc
Sur les 2 cas, j'arrive sans aucun soucis à le mettre en place, tout est fonctionnel.
Le problème ? C'est surtout pour le serveur NodeJS qui me demande un temps fou pour la création, temps que je pourrai utiliser pour faire autre chose de plus important et surtout, de moins rébarbartif... Je met pratiquement 30 min a mettre tout en place (configuration du serveur, des divers outils annexes tel que eslint prettier/editorconfig, de la configuration de typescript, etc) et c'est beaucoup trop contraignant question temps....
Solutions possible
Le plus simple étant de faire un serveur type et de le conserver via une archive ou d'un reposity (git par exemple), mais cela implique que chaque serveur que je fait est identique. C'est la solution de facilité.
Autre solution: Créer un script NodeJS intéractif qui me permettrait de choisir la configuration voulu du serveur (production ou developpement).
C'est finalement, cette dernière solution que j'aimerais entreprendre.
How I met the problem
Pour expliquer le soucis je vais prendre un exemple :
Par défaut, la structure du fichier resemble à cela :
Voici les contenu des fichiers :
package.json
Code:
{
"name": "example",
"version": "1.0.0",
"main": "./bin/main.js",
"bin": "./bin/main.js",
"license": "MIT"
}
main.js
Code:
console.log("Hello World");
Je lance l'application via le terminal par la commande
Il m'affiche bien "Hello World".
L'empaquetage, si on peut dire...
A présent je tape la commande dans le dossier du projet :
Il me créer sans problème les fichiers dans les package global de npm (enfin via lien) mais le problème , il me génère ce fichier :
Code:
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
& "$basedir/node_modules/example/bin/main.js" $args
exit $LASTEXITCODE
Et quand je lance le script il m'ouvre vscode avec le fichier script.... Pas vraiment ce que je cherche.
La plupart des docs que je trouve est pour linux et mettre "!#/usr/bin/env node" ne marche pas sous windows.
J'ai regarder le script d'un autre paquet et j'ai cela:
Code:
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
& "$basedir/node$exe" "$basedir/node_modules/create-react-app/index.js" $args
$ret=$LASTEXITCODE
} else {
& "node$exe" "$basedir/node_modules/create-react-app/index.js" $args
$ret=$LASTEXITCODE
}
exit $ret
Ce qui ressemble pas du tout a ce qui est généré...
quelqu'un aurait une idée comment généré mon paquet sous windows et qu'il marche directement avec node ?
Merci d'avance.