Ubah direktori instalasi global default untuk modul node.js di Windows?

139

Dalam instalasi windows saya PATHtermasuk C:\Program Files\nodejs, di mana dapat dieksekusi node.exe. Saya juga bisa meluncurkan nodedari shell npm. Saya ingin file executable baru juga diinstal C:\Program Files\nodejs, tetapi tampaknya tidak mungkin tercapai.

Pengaturan NODE_PATHdan NODE_MODULESvariabel tidak mengubah apa pun: semuanya masih terpasang %appdata%\npmsecara default.

Bagaimana cara mengubah jalur penginstalan global?

gremo
sumber
5
Mungkin karena gremo ingin memiliki semua dependensi terkait nodej di satu tempat. Masalahnya adalah, dengan memperbarui nodejs Anda akan kehilangan semua paket yang diinstal. Di sisi lain, menempatkan npm di folder% appdata% pengguna membuatnya tidak dapat diakses oleh pengguna lain di mesin yang sama. Pikirkan menginstalnya sebagai pengguna vs administrator biasa.
Volker E.
Terkait dengan stackoverflow.com/questions/6685892/…
Volker E.
1
Pindah dari% AppData% ke lokasi yang lebih terkontrol sangat masuk akal bagi saya, karena rasanya cukup% temp% -ish untuk saya. (Melakukan hal yang sama untuk profil Firefox dan beberapa lainnya). Namun C:\Program Filessiap untuk masalah hak admin konstan. ➪ Saya lebih suka pindah lakukan D:\my-repository\npmatau semacamnya.
Frank Nocke
2
@WiredPrairie karena menginstal di folder pengguna cukup bodoh. Inti dari paket instalasi 'global' adalah bahwa sistem secara keseluruhan dapat mengakses paket-paket ini.
Michael Trouw
4
Berikut alasan untuk melakukan ini: di jaringan saya, Anda tidak diizinkan untuk mengeksekusi kode dari folder AppData karena sering kali malware, terutama CodeLocker, diunduh dan dijalankan. Ini adalah lapisan perlindungan ekstra terhadap malware. Karena Node menginstal sesuatu di sana, saya tidak dapat menjalankan modul node tanpa memindahkan lokasi instal atau mengurangi keamanan pada sistem saya.
Steve Hiner

Jawaban:

83

Semua yang Anda butuhkan ada di npm-foldersdokumentasi . Saya tidak ingin memulai buku catatan Win saya sekarang jadi saya tidak dapat memverifikasinya, tetapi Anda sebaiknya hanya mengubah prefixke C:\Program Files\nodejsdi file konfigurasi Anda. Jika Anda ingin mengubahnya secara global untuk semua pengguna, edit C:\Program Files\nodejs\npmrcfile, jika tidak buat / edit C:\Users\{username}\.npmrc.

Tetapi perubahan ini mungkin akan memiliki beberapa efek samping, jadi bacalah pembahasan ini terlebih dahulu. Saya tidak berpikir itu ide yang bagus.

ivoszz.dll
sumber
34
Saya menemukan npmrcfile tersebut diC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.
3
juga ubah lokasi cache npm ke direktori lokal npm config set cache <new cache location> --globaljika Anda mengalami masalah saat memasang modul dan cache ada di drive bersama. Saya mendapat kesalahan ini, ENOENT: no such file or directoryketika cache berada di drive bersama
redDevil
1
Jangan lupa untuk memperbarui variabel PATH sistem agar mengarah ke folder npm baru.
Hayko Koryun
66

mencoba menginstal paket globalC:\Program Files (x86)\nodejs\ memberi saya masalah Jalankan sebagai Administrator , karena npm mencoba menginstal ke
C:\Program Files (x86)\nodejs\node_modules\

untuk mengatasi ini, ubah direktori pemasangan global ke C:\Users\{username}\AppData\Roaming\npm:

di C:\Users\{username}\, buat .npmrcfile dengan konten:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

referensi


installer lingkungan nodejs x86 ke C:\Program Files (x86)\nodejs\pada Windows 7 Ultimate N 64-bit SP1
node --version: v0.10.28
npm --version: 1.4.10

Jake Berger
sumber
Ini aneh saya menggunakan npm 2.1.6, dan itu menginstal semua modul global di% appdata% / npm, sekarang saya memperbaruinya ke 2.6.1, itu terus mencoba (dan gagal) untuk menginstal ke c: \ windows \ program files \ .. Apakah Anda kebetulan mengetahui saat perilaku ini berubah?
WORMSS
1
inilah beberapa node wiki diffs
Jake Berger
sepertinya itu ada hubungannya dengan cara berbeda saya menginstal npm. Terima kasih untuk perbedaannya.
WORMSS
2
npm config set awalan C: \ Users \ {username} \ AppData \ Roaming \ npm
Bernhard Döbler
64

Anda dapat melihat jawaban saya untuk ini dalam jawaban saya untuk pertanyaan lain .


Di Windows, jalur penginstalan global sebenarnya ada di direktori profil pengguna Anda

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • PERINGATAN: Jika Anda melakukan acara berwaktu atau otomatisasi lain sebagai pengguna yang berbeda, pastikan Anda menjalankannya npm installsebagai pengguna tersebut. Beberapa modul / utilitas harus dipasang secara global.
  • BUGS INSTALLER: Anda mungkin harus membuat direktori ini atau menambahkan ...\npmdirektori ke jalur pengguna Anda sendiri.

Untuk mengubah lokasi "global" untuk semua pengguna ke lokasi global bersama yang lebih sesuai %ALLUSERSPROFILE%\(npm|npm-cache)(lakukan ini sebagai administrator):

  • buat [NODE_INSTALL_PATH]\etc\direktori
    • ini diperlukan sebelum Anda mencoba npm config --global ...tindakan
  • buat lokasi global (admin) untuk modul npm
    • C:\ProgramData\npm-cache - modul npm akan ditempatkan di sini
    • C:\ProgramData\npm - skrip biner untuk modul yang diinstal secara global akan ditempatkan di sini
    • C:\ProgramData\npm\node_modules - modul yang dipasang secara global akan ditempatkan di sini
    • atur izin dengan tepat
      • administrator: ubah
      • pengguna terotentikasi: baca / jalankan
  • Tetapkan pengaturan konfigurasi global (Prompt Perintah Administrator)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Tambahkan C:\ProgramData\npmke variabel lingkungan Path Sistem Anda

Jika Anda ingin mengubah lokasi "global" pengguna Anda menjadi %LOCALAPPDATA%\(npm|npm-cache)jalur:

  • Buat direktori yang diperlukan
    • C:\Users\YOURNAME\AppData\Local\npm-cache - modul npm akan ditempatkan di sini
    • C:\Users\YOURNAME\AppData\Local\npm - skrip biner untuk modul yang diinstal akan ditempatkan di sini
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - modul yang dipasang secara global akan ditempatkan di sini
  • Konfigurasi npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Tambahkan jalur npm baru ke lingkungan Anda PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"
Pelacak 1
sumber
1
Mengatur lokasi global ke C: \ ProgramData sesuai saran tengah Anda tampaknya menjadi tempat terbaik untuk ini di lingkungan windows, tetapi saya tidak melihat bagaimana Anda dapat mengatur awalan di file konfigurasi global ketika awalan digunakan untuk temukan file konfigurasi global. Saya mencapai hasil yang sama dengan mengedit file konfigurasi bawaan C: \ Program Files \ nodejs \ node_modules \ npm \ npmrc tetapi saya menduga perubahan ini dapat ditimpa oleh pembaruan pada beberapa tahap.
oenpelli
@oenpelli Dalam hal ini "global" adalah .npmrcfile pengguna Anda di direktori home / profile. Ini perlu disetel untuk semua pengguna.
Tracker1
Jika saya tidak memiliki izin admin di windows, bagaimana saya bisa mengubah instalasi global?
liam xu
liam, Anda dapat menyesuaikan ini untuk pengguna Anda melalui .npmrcfile di direktori profil Anda ... meskipun, ymmv pada saat itu.
Pelacak1
20

Berdasarkan konsep instalasi chocolateydan ide yang disarankan oleh @Tracker, yang berhasil bagi saya adalah melakukan hal berikut dan semua pengguna di windows senang bekerja dengan nodejsdan npm.

Pilih C:\ProgramData\nodejssebagai direktori penginstalan nodejsdan instal nodejsdengan pengguna mana pun yang merupakan anggota grup administrator.

Ini bisa dilakukan dengan chocolatey seperti: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Kemudian buat folder bernama npm-cachedi root direktori instalasi, yang setelah mengikuti di atas akan menjadi C:\ProgramData\nodejs\npm-cache.

Buat folder bernama etcdi root direktori instalasi, yang setelah mengikuti di atas akan menjadi C:\ProgramData\nodejs\etc.

Tetapkan NODEvariabel lingkungan sebagai C:\ProgramData\nodejs.

Tetapkan NODE_PATHvariabel lingkungan sebagai C:\ProgramData\nodejs\node_modules.

Pastikan %NODE%variabel lingkungan yang sebelumnya dibuat di atas ditambahkan (atau jalurnya) ditambahkan ke %PATH%variabel lingkungan.

Edit %NODE_PATH%\npm\npmrcdengan konten berikutprefix=C:\ProgramData\nodejs

Dari command prompt, atur konfigurasi global seperti ...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

Penting bahwa langkah-langkah di atas dilakukan secara berurutan dan sebelum memperbarui npm ( npm -g install npm@latest) atau mencoba menginstal npmmodul apa pun .

Melakukan langkah-langkah di atas membantu kami menjalankan nodejsinstalasi di seluruh sistem, dengan mudah tersedia untuk semua pengguna dengan izin yang tepat. Setiap pengguna kemudian dapat menjalankan nodedan npmsesuai kebutuhan.

Damilola
sumber
apa keluaran dari 'npm config list'. Juga, apakah Anda menjalankan Windows atau Linux?
Damilola
Mencoba keduanya. npm config add prefixberfungsi, tetapi tidak ada variabel lingkungan yang disebutkan di sini. Saya tidak ingin membuka pertanyaan lain karena pertanyaan ini mencakupnya, tetapi jawabannya tidak (selain itu npm config).
trisis
Variabel lingkungan NODE pada dasarnya hanya untuk mengekspos binari. Anda masih perlu menyetel awalan dan cache (jika belum disetel sebelumnya) seperti yang disebutkan dalam prosedur.
Damilola
Oh terima kasih. Itu tidak terlalu jelas dari jawaban atau di mana pun di Google. Saya sedang mencari variabel lingkungan karena itu lebih mudah untuk diubah secara terprogram, tetapi perintah Bash satu baris juga OK, saya kira.
trisis
Ini bekerja dengan baik untuk saya. Terima kasih atas instruksi rinci!
ErnestoP
15

Anda harus menggunakan perintah ini untuk mengatur flokasi instalasi global paket npm

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Anda juga dapat mempertimbangkan npm-cachelokasi tepat di sebelahnya. (seperti pada instalasi nodejs normal di windows)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(cmd / git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache

davejoem
sumber
1
Senang untuk membantu. Ini juga merupakan ide bagus untuk membuat skrip shel atau file batch untuk menjalankannya setiap kali Anda mengubah lingkungan. Setidaknya itulah yang saya lakukan
davejoem
Juga layak ditambahkan "jika ada spasi di jalur. Mis "C:\Program Files\blah".
taylorswiftfan
7
  • Langkah 1 :

    npm config mendapatkan awalan

    • Jalur Default adalah: %USERPROFILE%\AppData\Roaming\npm
  • Langkah 2 :

    npm config dapatkan cache

    • Jalur Default adalah: %USERPROFILE%\AppData\Roaming\npm-cache
  • Langkah 3 :

    npm config set awalan \ npm

    • contoh npm config set prefix C:\\dev\\node\\npm
  • Langkah 4 :

    npm config set cache \ npm-cache

    • contoh npm config set cache C:\\dev\\node\\npm-cache

Jalankan langkah 1 & 2 lagi untuk memeriksa apakah jalur diperbarui sesuai kebutuhan

Itu dia. Setiap kali Anda menginstal paket global, Anda akan melihatnya diinstal di dalam \ npm \ node_modules

Kandeepa
sumber
Terima kasih solusi Anda menyelesaikan masalah saya, dari 2 minggu terakhir saya mencoba menyelesaikan masalah, Sebenarnya jalur pengguna windows saya memiliki spasi di dalamnya seperti ABC XYZ WJS jadi saya mengubah jalur menjadi hanya satu kata, setelah itu pemasangan npm saya memberi kesalahan, jadi solusi Anda membantu saya menghapus cache dan menyetel cache ke lokasi baru saya.
Tahir Afridi
4

Folder global default adalah C:\Users\{username}\AppData\Roaming\npm. Anda dapat membuat (jika tidak ada) .npmrcfile di C:\Users\{username}\dan menambahkan prefix = "path\\to\\yourglobalfolder". Perhatikan bahwa, di windows, jalur harus dipisahkan oleh double back-slash.

angeldsWang
sumber
3

Menggunakan tautan simbolis Windows dari C: \ Users {username} \ AppData \ Roaming \ npm dan C: \ Users {username} \ AppData \ Roaming \ npm-cache ke tujuan bekerja sangat baik bagi saya.

Cara menambahkan tautan simbolis

masukkan deskripsi gambar di sini

dynamiclynk.dll
sumber
1

Di Windows, jika Anda ingin memindahkan folder npm atau nodejs di disk C ke lokasi lain, namun tetap memastikan node dan npm berfungsi dengan baik, Anda dapat membuat symlink seperti ini: Buka Command Prompt:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Contoh:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Sekarang Anda telah membuat symlink untuk folder npm, symlink ini akan merujuk ke D:\Nodejs Data\npmSemuanya akan bekerja dengan baik.

Vinh Trieu
sumber
1

Temukan jalur penginstalan paket node global Anda saat ini dengan mengikuti perintah.

daftar npm -g --depth = 0

Ubah jalur ini ke jalur yang benar dengan mengikuti perintah.

npm set awalan C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

Itu berhasil untuk saya. Baca jawaban saya sebelumnya untuk pemahaman yang lebih baik.

TechTutsIndia
sumber
0

Saya mencoba sebagian besar jawaban di sini, sepertinya tidak ada yang berhasil dalam kasus saya. Jadi saya mengubah lokasi Temp di variabel env saya ke C: \ npm. Kemudian itu mulai bekerja. Ini bukan ide yang bagus tapi solusi sementara.

Manoj
sumber
0

Hapus folder node sepenuhnya dari folder file program. Copot pemasangan node.js lalu pasang kembali. Ubah Path variabel lingkungan PATH. hapus file .npmrc dari C: \ users \ yourusername

Santosh Kadam
sumber
2
Apakah Anda memiliki dokumentasi atau sumber yang mendukung pernyataan Anda? Seperti yang tertulis dalam kondisinya saat ini, sulit untuk mengetahui apakah saran Anda benar-benar berfungsi tanpa mencobanya sendiri, yang membutuhkan waktu yang dapat dihemat jika tidak.
Filnor
0

itu tidak memerlukan banyak konfigurasi cukup pergi ke pengaturan sistem lanjutan salin jalur di mana Anda telah menginstal node Anda dan cukup buat variabel lingkungan dan periksa dengan perintah node -v di prompt Anda!

Animesh Saxena
sumber
0

Untuk mengubah direktori instalasi global default untuk modul node.js (npm) di Windows, Anda perlu memperbaiki 2 jalur.

Pertama, periksa jalur saat ini di mana modul node diinstal, ketika Anda mencoba menginstalnya secara global dengan menggunakan perintah berikut:

daftar npm -g --depth = 0

Ini akan mengembalikan Anda ke jalur saat ini di mana modul node sedang dipasang sekarang. Contoh: D: \ vsc \ typescript

Sekarang kunjungi jalur berikut untuk melihat folder npm dan npm-cache. C: \ Users \ username (OR Number) \ AppData \ Roaming

Di folder Roaming drive C Anda, Anda akan menemukan folder npm dan npm-cache. Klik pada folder + npm + dan pilih jalur [Cukup klik pada jalur bilah akan dipilih secara otomatis, salin]. Ini adalah gambar jalur yang perlu Anda pilih

Setelah Anda menyalin jalur ini, setel ini ke variabel lingkungan, dengan nama variabel Jalur (apa pun yang dapat Anda pilih sebagai nama). Sekarang Anda telah mengatur jalur untuk folder npm Anda, sekarang saatnya untuk mengatur awalan. Masuk ke dalam folder npm dan periksa apakah folder node_module ada, jika tidak buat folder baru bernama node_modules. Anda semua modul global akan masuk ke folder ini setelah menyelesaikan semua langkah.

Langkah Terakhir: Buka CMD dan kanan perintah berikut:

npm set awalan C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

Sekali lagi ini adalah jalur yang sama yang kami pilih untuk variabel lingkungan, kami hanya menambahkan satu folder lagi di jalur dan itu adalah node_module.

Semua Siap .... Coba Sekarang ... Ini akan berhasil ..

TechTutsIndia
sumber