Paket simpul (Grunt) diinstal tetapi tidak tersedia


187

Saya mencoba membangun pustaka github jquery-ui menggunakan grunt, tetapi setelah menjalankan npm installsaya masih tidak dapat menjalankan perintah sesuai dengan file readme . Itu hanya memberi No command 'grunt' found:

james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ grunt build
No command 'grunt' found, did you mean:
 Command 'grun' from package 'grun' (universe)
grunt: command not found
james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ npm ls
jquery-ui@1.9.0pre /home/james/Documents/projects/ad2/lib/jquery-ui
├─┬ grunt@0.3.9 
 ├── async@0.1.18 
 ├── colors@0.6.0-1 
 ├─┬ connect@1.8.7 
  ├── formidable@1.0.9 
  ├── mime@1.2.5 
  └── qs@0.5.0 
 ├── dateformat@1.0.2-1.2.3 
 ├─┬ glob-whatev@0.1.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ gzip-js@0.3.1 
  ├── crc32@0.2.2 
  └── deflate-js@0.2.2 
 ├── hooker@0.2.3 
 ├─┬ jshint@0.5.9 
  ├── argsparser@0.0.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ nodeunit@0.6.4 
  ├── tap-assert@0.0.10 
  └─┬ tap-producer@0.0.1 
    ├── inherits@1.0.0 
    ├── tap-results@0.0.2 
    └── yamlish@0.0.5 
 ├─┬ nopt@1.0.10 
  └── abbrev@1.0.3 
 ├─┬ prompt@0.1.12 
  ├── pkginfo@0.2.3 
  └─┬ winston@0.5.11 
    ├── eyes@0.1.7 
    ├─┬ loggly@0.3.11 
     └── timespan@2.2.0 
    └── stack-trace@0.0.6 
 ├── semver@1.0.13 
 ├─┬ temporary@0.0.2 
  └── package@1.0.0 
 ├── uglify-js@1.0.7 
 ├── underscore@1.2.4 
 └── underscore.string@2.1.1 
├── grunt-compare-size@0.1.4 
├─┬ grunt-css@0.2.0 
 ├── csslint@0.9.8 
 └── sqwish@0.2.0 
├── grunt-html@0.1.1 
├── request@2.9.153 
├─┬ rimraf@2.0.1 
 └── graceful-fs@1.1.8 
└─┬ testswarm@0.2.2 
  └── request@2.9.202 

Saya bingung, apa yang saya lewatkan?

Jawaban:


412

Alat baris perintah tidak termasuk dalam versi Grunt terbaru (0,4 saat penulisan), Anda harus menginstalnya secara terpisah.

Ini adalah ide yang baik karena itu berarti Anda dapat memiliki berbagai versi Grunt yang berjalan pada proyek yang berbeda tetapi masih menggunakan gruntperintah ringkas yang bagus untuk menjalankannya.

Jadi pertama-tama instal alat grunt cli secara global:

npm install -g grunt-cli

(atau mungkin sudo npm install -g grunt-cli).

Anda dapat memastikan bahwa itu berfungsi dengan mengetik grunt --version

Sekarang Anda dapat menginstal versi Grunt lokal saat ini ke proyek Anda. Jadi dari lokasi proyek Anda ...

npm install grunt --save-dev

The save-devsaklar tidak benar-benar diperlukan, tetapi adalah ide yang baik karena akan menandai mendengus di bagian devDependencies package.json sebagai pengembangan hanya modul.


5
Saya tidak dapat menemukan path folder grunt di Path System Variables setelah menjalankan npm install -g grunt-cli
singsuyash

10
harus menjalankan menggunakan sudo
Phil Hudson

2
Jika ini tidak berhasil untuk Anda, coba hapus instalan grunt dan grunt-cli lalu lakukan lagi. Hanya bekerja untuk saya jika saya menggunakan sudoTerima kasih Tom!
Termato

Catatan: Jika Anda harus menggunakan sudo, itu harus dilakukan dengan cara Anda mengatur simpul. Itu tidak ideal tetapi bisa diperbaiki. sindresorhus menyarankan satu cara . Saya lebih suka menggunakan NVM (manajer versi simpul)
Tom P

1
Jika Anda di sini dan Anda menekan node not foundsetelah menjalankan perintah di atas dan Anda menggunakan manajer paket untuk menginstal node maka Anda juga perlu symlinksudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
anon58192932

26

Tambahkan /usr/local/share/npm/bin/ke$PATH


Terima kasih, menambahkan ini ke .bash_profile saya membantu memperbaiki masalah saya!
Thilak Rao

2
menambahkan $HOME/npm/binbekerja untuk saya di ubuntu 13.10.
Eliran Malka

24

Jika Anda telah menginstal paket Grunt dengan menjalankan npm install -g gruntdan itu masih mengatakan No command 'grunt' foundatau grunt: command not found, cara cepat dan kotor untuk mendapatkan ini berfungsi adalah menghubungkan simpul biner ke $ PATH Anda secara manual.

Di MacOSX / Linux Anda dapat menambahkan baris ini ke file ~/.bash_profileatau Anda ~/.bashrc.

PATH=$PATH:/usr/local/Cellar/node/HEAD/bin # Add NPM binaries

Anda mungkin harus mengganti /usr/local/Cellar/node/HEAD/bindengan jalur tempat biner simpul Anda dapat ditemukan.

Jika ini cepat dan kotor bagi saya, itu karena semuanya harus bekerja tanpa melakukan ini, tetapi karena alasan yang tidak diketahui, tautan tampaknya rusak. Karena tidak ada seorang pun di IRC yang bisa memberi tahu saya mengapa ini terjadi, saya menemukan cara saya sendiri untuk membuatnya (mendengus) bekerja.

PS: Ini seharusnya membantu kamu membuat pekerjaan kasar, jawaban ini tidak berhubungan dengan jquery-ui.

Pembaruan 02/2013 : Anda harus melihat jawaban @ tom-p yang menjelaskan lebih baik apa yang sedang terjadi. Tom memberi kami solusi nyata alih-alih meretas file bashrc Anda: keduanya harus bekerja, tetapi Anda harus mencoba menginstalnya grunt-cliterlebih dahulu .


Lihat jawaban lain - yang memberikan penjelasan.
Yugal Jindle

Bisakah kau jelaskan apa Cellar ada di sini? Apakah ini sesuatu yang khusus untuk Anda / instalasi Anda?
Brian C

12

Dalam kasus saya, saya perlu memodifikasi file / usr / local / bin / grunt di baris 1 (jangan buat ini):

 #!/usr/bin/env node //remove this line
 #!/usr/bin/env nodejs // and put this line to run with nodejs

Diedit:

Untuk menghindari masalah, saya membuat tautan dengan nama "simpul" karena banyak program lain masih menggunakan perintah "simpul".

 sudo ln -s /usr/bin/nodejs /usr/sbin/node

6
Downvote konstruktif untuk mencegah siapa pun dari mengedit file yang dikemas secara manual. Untuk masalah Anda, Anda harus melakukannya apt-get install nodejs-legacy.
Air

Saran Anda adalah salah satu saran terbaru dan satu-satunya yang bekerja pada instalasi baru saya Debian Jessie.
Helzgate

Ok Air, tetapi saya menggunakan OSX, saya akan mencoba beberapa hal sepertibrew install nodejs-leacy
Edgard Leal

@ Air terima kasih itu masalah saya. Setelah mengikuti semua langkah sebelumnya, itu tidak dapat mengenali gerutuan .
hantu kemicofa

11

Ada satu lagi cara untuk menjalankan grunt di windows, tanpa menambahkan apa pun secara global. Ini adalah kasus ketika Anda tidak perlu melakukan apa pun dengan% PATH%

jika Anda memiliki grunt dan grunt-cli diinstal (tanpa -g switch). Entah oleh:

npm install grunt-cli
npm install grunt@0.4.5

Atau dengan memasukkannya ke file packages.json Anda seperti:

"devDependencies": {
    "grunt-cli": "^1.2.0",
    "grunt": "^0.4.5",

Anda dapat memanggil grunt dari instalasi lokal Anda dengan:

node node_modules\grunt-cli\bin\grunt --version

Ini adalah solusi bagi mereka yang karena alasan tertentu tidak mau atau tidak bisa bermain dengan PATH, atau memiliki hal lain yang mengacaukannya sepanjang waktu, misalnya pada agen build.

Sunting: Versi yang ditambahkan saat grunt-cli bekerja dengan grunt> 0.3


Seseorang yang menggunakan buruh pelabuhan mungkin merasa bermanfaat.
Daniel Kmak

11

Pada WIN7 saya harus secara manual menambahkan path ke folder npm (yang berisi file 'grunt' yang sulit dipahami) ke variabel lingkungan Windows PATH.
Dalam kasus saya ituC:\Users\mhaagsma\AppData\Roaming\npm


2

Cara yang tepat untuk menginstal grunt adalah dengan menjalankan perintah ini:

npm install grunt -g

(Tambahkan "sudo" ke perintah di atas jika Anda mendapatkan pesan kesalahan EACCESS)

-g akan membuat npm menginstal paket secara global, sehingga Anda dapat menggunakannya kapan pun Anda mau di mesin Anda saat ini.


6
Perhatikan bahwa jika Anda melakukan ini (saya baru saja menguji), gruntmasih akan gagal karena paket mendengus tidak termasuk alat baris perintah. Kamu butuh grunt-cli.
Air

3
rupanya, Anda membutuhkan lokal dan global
Adonis K. Kakoulidis

1
instal global (untuk kebutuhan baris perintah), instal lokal untuk kebutuhan tipe "memerlukan (apa pun)". Jadi, Anda perlu melakukan keduanya. Terima kasih atas bantuan Anda!
Pemrogram

1

Halo Saya punya masalah ini di mac, dan apa yang saya lakukan adalah

dipasang secara global dan awalan dengan jalur global

sudo npm install grunt -g --prefix=/usr/local

sekarang $ which grunt

harus keluar dimasukkan /usr/local/bin/grunt

Bersulang


0

Terkadang Anda harus npm install package_name -gmembuatnya bekerja.


Terima kasih atas jawabannya. Saya telah menemukan cara lain yang berbeda dari apa yang saya coba lakukan.
AJP

@AJP dapatkah Anda memberi tahu kami cara membuatnya berfungsi, alih-alih hanya memberi tahu kami bahwa Anda berhasil? Terima kasih.
rayfranco

@rayfranco maaf saya pada dasarnya mengatasinya dengan menyerah ... Saya pikir kami mencoba membuat perpustakaan jquery-ui mungkin, jadi kami baru saja mengunduhnya, tidak dapat mengingat sekarang juga ... Maaf saya tahu itu tidak berguna , silakan kirim kembali solusi ketika Anda menemukannya. Sepertinya banyak orang lain datang ke halaman ini (tanpa hasil).
AJP

0

Solusi lain adalah menghapus bundler ubuntu dalam kasus saya yang saya gunakan:

sudo apt-get remove ruby-bundler 

Itu berhasil bagi saya.


0

Di Windows, bagian dari misteri tampaknya menjadi tempat npm menginstal file Grunt.cmd. Sementara di kotak Linux saya, saya hanya perlu menjalankan sudo npm install -g grunt-cli, di laptop Windows 8 saya, Grunt ditempatkan di direktori '.npm-global':% USER_HOME% \. Npm-global dan saya harus menambahkan itu ke Path.

Jadi pada Windows langkah saya adalah:

  • npm install -g grunt-cli

  • mencari tahu di mana sih grunt.cmd berada (saya kira untuk sebagian ada di% USER_HOME% \ App_Data \ Roaming)

  • Menambahkan lokasi ke variabel lingkungan Path saya. Membuka prompt cmd baru dan perintah kasar berjalan dengan baik.


0

Di Windows 10 Tambahkan ini ke Path Anda:

%APPDATA%\npm

Ini merujuk folder ~/AppData/Roaming/npm

[Diasumsikan Anda sudah menjalankan npm install -g grunt-cli]

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.