J'ai un package.json qui ressemble à ceci:
"scripts": {
"dev": "cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js",
"dev:stub-server": "./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100"
}
J'ai ajouté de la logique dans le code pour changer la façon dont le dev:stub-server
est configuré en fonction d'un argument de ligne de commande. Donc, chaque fois que je lance ce qui suit, j'obtiens ce que j'attends:
yarn dev:stub-server --results=4
$ ./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100 -- --results=4
Comme vous pouvez le voir, les options sont transmises au script sous-jacent et tout fonctionne comme prévu.
Mon problème est que je ne peux pas avoir le --results
propagé à partir du yarn dev
commande à dev:stub-server
dans la bonne position. Le script parent s'exécute dev:stub-server
mais l'argument est transmis au script sous-jacent à la fin comme suit:
yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js --results=2
Existe-t-il un moyen de faire fonctionner les éléments ci-dessus comme suit?
yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server --results=2 | cross-env BABEL_ENV=server babel-node src/server/server.js
Merci d'avance!
run
de Yarn ne prend en charge que l'ajout de votre args
à la fin de la chaîne de commande, et au moins à compter de la date 2018 -06-14, il n'y a aucun moyen de contourner cela.
Quand j'ai eu besoin de ça dans le passé, j'ai préparé mon propre dev.js
script appelé par mon package.json
, et a extrait args des variables d'environnement.
Sur mac j'utilise:
"scripts": {
"benchmark": "sh -c 'ng run ${0}:benchmark'",
}
Que j'appelle ensuite yarn benchmark editor
où editor
est mon paramètre.
Comme alternative, vous pouvez utiliser un *.env
fichier et cat
les variables qu'il contient dans votre script.
"run":"docker build -t --build-arg VAR=`cat vars.env` -f Dockerfile .
par exemple