Имам следния скрипт в моя package.json
:
{
"build-dist": "tsc -p src/main/ts/tsconfig.json --outDir build/dist/npm-fs && cp LICENSE.txt README.md build/dist/npm-fs && node scripts/build/build-dist.mjs"
}
Моят скрипт на scripts/build/build-dist.mjs
изисква да бъде подаден аргумент от командния ред. Би ли било възможно да има този персонализиран скрипт в началото на тази верига от скриптове и все още да получава и обработва предадени аргументи на командния ред?
{
"build-dist": "node scripts/build/build-dist.mjs && tsc -p src/main/ts/tsconfig.json --outDir build/dist/npm-fs && cp LICENSE.txt README.md build/dist/npm-fs"
}
Той изисква (и валидира вход) и извежда грешка, ако валидирането е неуспешно и тъй като изисква аргумент от командния ред, трябва да бъде последният извикан скрипт, за да използва правилно аргументите от командния ред. В резултат на това първите два скрипта във веригата tsc -p src/main/ts/tsconfig.json --outDir build/dist/npm-fs && cp LICENSE.txt README.md build/dist/npm-fs
винаги се изпълняват, независимо дали проверката е неуспешна или не. Бих предпочел да има поведение при бърз отказ и изпълнението да спре напълно, ако този скрипт изведе грешка.
Този въпрос по същество е дубликат на това. Надявам се, че вече има налична нова функция или може би някой е измислил по-елегантно решение.
"build-dist": "func() { node scripts/build/build-dist.mjs \"$1\" && tsc -p src/main/ts/tsconfig.json --outDir build/dist/npm-fs && cp LICENSE.txt README.md build/dist/npm-fs; }; func"
. За крос-платформа ще трябва да използвате персонализиран скрипт node.js. Вижте и другия отговор, но това включва задаване на променлива на средата - така че също не е идеално. - person RobC   schedule 29.12.2020package.json
. За щастие създаването на персонализирани скриптове за приключване на всичко със сигурност е опция, но някои от API на npm модула са не много удобни за програмно използване - person Snap   schedule 29.12.2020