2012-11-19 12 views
16

Buduję chrząknięcie javascript projekt z pomrukiem i mam plik package.json, który wygląda mniej więcej tak:Grunt JS instalowaniu pakietów

{ 
    ... name, author, etc here ... 

    "dependencies": { 
     "grunt-html":"0.2.1" 
    } 

} 

mogę uruchomić npm install zainstalować grunt-html i to działa w porządku. Ale kiedy dodaję nowe zależności, wszyscy programiści w zespole muszą ponownie uruchomić usługę npm install. Czy istnieje sposób automatycznego instalowania pakietów, które nie zostały jeszcze zainstalowane? Czy powinienem po prostu uruchomić npm install zawsze, aby upewnić się, że jestem na bieżąco?

Odpowiedz

26

Tak npm install jest najprostszym sposobem IMO. Zapoznanie się z innymi poleceniami npm ułatwia zarządzanie działami. Takich jak:

  • npm ls, aby wyświetlić aktualnie zainstalowane moduły.
  • Lub flaga --save, tj. npm install grunt-html --save, aby zainstalować i wstawić pakiet i wersję do swojego package.json.
  • npm prune aby usunąć moduły nie zawarte w twoim package.json.

Inne sposoby zarządzania zależnościami są do popełnienia folder w repozytorium node_modules aby uniknąć innych Devs od konieczności uruchamiania npm install. Lub w przypadku bardziej złożonych projektów należy rozważyć użycie npm shrinkwrap w celu zablokowania zależności do określonych wersji: npm shrinkwrap docs.

+0

Wygląda na to, że dobrym pomysłem byłoby zatwierdzenie node_modules z tego właśnie powodu. Co o tym myślisz? –

+0

Używam jednej z trzech metod w zależności od projektu. Głównie 'npm install', ponieważ jestem w małym zespole. Zaimplementowanie 'node_modules' jest dobre, jeśli nie zamykasz zakładek na depach, ponieważ mogłoby to pomóc zapobiec uszkodzeniu witryny podczas wdrażania. Każda metoda ma swoje wady/zalety w zależności od projektu. –

+0

Czy istnieje sposób, w jaki mogę "zapisać" na już zainstalowanych pakietach "package.json" (jeśli wcześniej nie działałem 'npm install' z opcją' --save')? –

1

nie próbowałem Grunt-install-zależnościami (https://github.com/ahutchings/grunt-install-dependencies), ale wydaje się to może napełnić swoje potrzeby. Po prostu dodaj komendę install-dependencies jako pierwsze zadanie w swoim niestandardowym, spreparowanym brzmieniu, np.

grunt.registerTask ('build' [ 'Install-Zależności', 'useminPrepare', ...]);

+0

Można również spojrzeć na https://github.com/iclanzan/grunt-npm-install – Tvaroh