Chcę spróbować użyć polecenia npm do uruchamiania różnych zadań kompilacji dla aplikacji internetowej. Wiem, że mogę to zrobić, dodając pole scripts
do mojego package.json
tak:Uruchamianie skryptów bash za pomocą npm
"scripts": {
"build": "some build command"
},
To dostaje nieporęczny kiedy trzeba bardziej skomplikowanych komend z wieloma opcjami. Czy można przenieść te polecenia do skryptu Bash lub czegoś podobnego? Coś jak:
"scripts": {
"build": "build.sh"
},
gdzie npm run build
byłoby wykonać polecenia w pliku build.sh
?
Czytanie przezpost wydaje się takie, jakie jest, ale nie jestem pewien dokładnie, gdzie mam upuścić plik build.sh
lub jeśli czegoś brakuje.
Nie rób tego. Węzeł działa wszędzie. Bash nie. Cokolwiek robisz w bashu możesz zrobić ** w węźle **, a nawet wywołanie CLI może być wykonane przy użyciu zależności pakietu. Potrzebujesz 'rm'? zainstaluj rimraf, a następnie użyj go w skrypcie [npm] (http://www.slideshare.net/k88hudson/advanced-frontend-automation-with-npm-scripts). 'mkdir -p'? zainstaluj 'mkdirp', a następnie użyj tego w skrypcie npm. Masz niezależny od platformy * uniwersalny język skryptowy *, tutaj nie idź i udawaj, że to tylko Nix. Czy linia poleceń jest zbyt skomplikowana? Użyj programu uruchamiającego zadania, takiego jak 'grunt' lub' gulp'. Zachowaj to uniwersalne. –
Kiedy mówisz "nawet wywołanie CLI może być wykonane przy użyciu zależności pakietu", czy mówisz o czymś takim jak [this] (http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool -with-npm)? –
zamknij, ale nie, przeczytaj slajdy, do których dołączyłem. Możesz instalować moduły węzła, które są dostarczane z narzędziami CLI, takie jak 'grunt' lub' gulp', lub 'mkdirp', itp., Bez potrzeby instalowania ich globalnie, a następnie * wywoływanie ich tak, jakby były zainstalowane globalnie * w skrypcie npm, np. '' build ': "mkdirp build && less style/index.less> static/css/style.css && webpack" '. Dopóki polecenia, które wywołujesz, są zarządzane npm (tj. W wykazach zależności package.json), to po prostu działa. Dla każdego polecenia "działa tylko dla jednego systemu operacyjnego" użyj modułu węzła, który robi to samo uniwersalnie. –