Thay đổi thư mục cài đặt toàn cầu mặc định cho các mô-đun node.js trong Windows?


134

Trong cài đặt windows của tôi PATHbao gồm C:\Program Files\nodejs, nơi thực thi node.exeđược. Tôi cũng có thể khởi chạy nodetừ vỏ npm. Tôi cũng muốn cài đặt các tệp thực thi mới C:\Program Files\nodejs, nhưng dường như không thể đạt được.

Cài đặt NODE_PATHNODE_MODULESbiến không thay đổi bất cứ điều gì: mọi thứ vẫn được cài đặt %appdata%\npmtheo mặc định.

Làm thế nào tôi có thể thay đổi đường dẫn cài đặt toàn cầu?


5
Có lẽ bởi vì gremo muốn có tất cả các phụ thuộc liên quan đến nodejs ở một nơi. Vấn đề là, với việc cập nhật nodejs, bạn sẽ mất tất cả các gói đã cài đặt. Mặt khác, việc đặt npm vào thư mục% appdata% của người dùng sẽ khiến nó không thể truy cập được với người dùng khác trên cùng một máy. Hãy nghĩ về việc cài đặt nó như người dùng bình thường so với quản trị viên.
Volker E.


1
Di chuyển ra khỏi% AppData% đến một vị trí được kiểm soát nhiều hơn có ý nghĩa đối với tôi, vì nó cảm thấy khá% temp% -ish để mee. (Làm tương tự cho các cấu hình Firefox và một vài thứ khác). Tuy nhiên C:\Program Filesđã sẵn sàng cho các rắc rối quyền quản trị liên tục. Tôi muốn di chuyển làm D:\my-repository\npmhoặc như vậy.
Frank Nocke

2
@WiredPrairi vì cài đặt trong thư mục người dùng khá nhiều chỉ là ngu ngốc. Điểm chung của các gói cài đặt 'toàn cầu' là toàn bộ hệ thống có thể truy cập các gói này.
Michael Trouw

4
Đây là một lý do để làm điều này: trên mạng của tôi, bạn không được phép thực thi mã ra khỏi thư mục AppData vì đó thường là cách phần mềm độc hại, đặc biệt là CodeLocker, được tải xuống và chạy. Đó là một lớp bảo vệ bổ sung chống lại phần mềm độc hại. Vì Node cài đặt mọi thứ ở đó nên tôi không thể chạy các mô-đun nút mà không di chuyển vị trí cài đặt hoặc giảm bảo mật trên hệ thống của mình.
Steve Hiner

Câu trả lời:


81

Tất cả mọi thứ bạn cần là đọc npm-folderstài liệu . Tôi không muốn khởi động sổ ghi chép Win của mình ngay bây giờ vì vậy tôi không thể xác minh nó, nhưng bạn chỉ nên thay đổi prefixthành c:\Program Files\nodejstrong tệp cấu hình của mình. Nếu bạn muốn thay đổi nó trên toàn cầu cho tất cả người dùng, hãy chỉnh sửa c:\Program Files\nodejs\npmrctệp, nếu không thì tạo / chỉnh sửa c:\Users\{username}\.npmrc.

Nhưng sự thay đổi này có thể sẽ có một số hiệu ứng phụ vì vậy hãy đọc thảo luận này trước. Tôi nghĩ rằng ý tưởng của bạn không phải là một ý tưởng tốt.


33
Tôi tìm thấy npmrctập tin tạiC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.

3
cũng thay đổi vị trí bộ đệm npm thành thư mục cục bộ bằng cách sử dụng npm config set cache <new cache location> --globalnếu bạn gặp sự cố trong khi cài đặt mô-đun và bộ đệm nằm trong ổ đĩa chung. Tôi đã gặp lỗi này, ENOENT: no such file or directorykhi bộ nhớ cache nằm trong ổ đĩa chung
redDevil

1
Đừng quên cập nhật biến PATH của hệ thống để trỏ đến thư mục npm mới.
Hayko Koryun

64

cố gắng cài đặt các gói toàn cầu vào C:\Program Files (x86)\nodejs\cho tôi Chạy với tư cách Quản trị viên , vì npm đang cố cài đặt vào
C:\Program Files (x86)\nodejs\node_modules\

Để giải quyết vấn đề này, hãy thay đổi thư mục cài đặt toàn cầu thành C:\Users\{username}\AppData\Roaming\npm:

trong C:\Users\{username}\, tạo .npmrctập tin với nội dung:

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

tài liệu tham khảo

trình
cài đặt nodejs x86 vào C:\Program Files (x86)\nodejs\Windows 7 Ultimate N 64-bit SP1
node --version: v0.10.28
npm --version: 1.4.10


Điều này thật lạ khi tôi đang sử dụng npm 2.1.6 và nó đã cài đặt tất cả các mô-đun toàn cầu trong% appdata% / npm, bây giờ tôi đã cập nhật nó lên 2.6.1, nó tiếp tục thử (và không thành công) để cài đặt vào c: \ windows \ tập tin chương trình \ .. Bạn có biết khi nào hành vi này thay đổi không?
CÔNG TRÌNH 2/03/2015

1
đây là một số nút wiki khác nhau
Jake Berger

có vẻ như nó đã được thực hiện với một cách khác mà tôi đã cài đặt npm. Cảm ơn cho sự khác biệt mặc dù.
CÔNG TRÌNH 9/03/2015

2
Cấu hình npm đặt tiền tố C: \ Users \ {tên người dùng} \ AppData \ Roaming \ npm
Bernhard Döbler

62

Bạn có thể thấy câu trả lời của tôi cho điều này trong câu trả lời của tôi cho một câu hỏi khác .


Trong Windows, đường dẫn cài đặt toàn cầu thực sự nằm trong thư mục hồ sơ người dùng của bạn

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • CẢNH BÁO: Nếu bạn đang thực hiện các sự kiện theo thời gian hoặc tự động hóa khác với tư cách là một người dùng khác, hãy đảm bảo bạn chạy npm installnhư người dùng đó. Một số mô-đun / tiện ích nên được cài đặt trên toàn cầu.
  • LẮP ĐẶT CÀI ĐẶT: Bạn có thể phải tạo các thư mục này hoặc thêm ...\npmthư mục vào đường dẫn người dùng của mình.

Để thay đổi vị trí "toàn cầu" cho tất cả người dùng thành một vị trí chung được chia sẻ phù hợp hơn %ALLUSERSPROFILE%\(npm|npm-cache)(làm điều này với tư cách quản trị viên):

  • tạo một [NODE_INSTALL_PATH]\etc\thư mục
    • điều này là cần thiết trước khi bạn thử npm config --global ...hành động
  • tạo (các) vị trí (quản trị) toàn cầu cho các mô-đun npm
    • C:\ProgramData\npm-cache - mô-đun npm sẽ đến đây
    • C:\ProgramData\npm - tập lệnh nhị phân cho các mô-đun được cài đặt trên toàn cầu sẽ ở đây
    • C:\ProgramData\npm\node_modules - mô-đun cài đặt toàn cầu sẽ đi đến đây
    • thiết lập các quyền một cách thích hợp
      • quản trị viên: sửa đổi
      • người dùng xác thực: đọc / thực thi
  • Đặt cài đặt cấu hình chung (Nhắc lệnh quản trị viên)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Thêm vào C:\ProgramData\npmbiến môi trường Đường dẫn hệ thống của bạn

Thay vào đó, nếu bạn muốn thay đổi vị trí "toàn cầu" của người dùng thành %LOCALAPPDATA%\(npm|npm-cache)đường dẫn:

  • Tạo các thư mục cần thiết
    • C:\Users\YOURNAME\AppData\Local\npm-cache - mô-đun npm sẽ đến đây
    • C:\Users\YOURNAME\AppData\Local\npm - tập lệnh nhị phân cho các mô-đun được cài đặt sẽ ở đây
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - mô-đun cài đặt toàn cầu sẽ đi đến đây
  • Cấu hình npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Thêm đường dẫn npm mới vào môi trường của bạn PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

1
Đặt vị trí toàn cầu thành C: \ ProgramData theo đề xuất ở giữa của bạn dường như là nơi tốt nhất cho điều này trong môi trường windows, nhưng tôi không thấy cách bạn có thể đặt tiền tố trong tệp cấu hình chung khi sử dụng tiền tố tìm tập tin cấu hình toàn cầu. Tôi đã đạt được kết quả tương tự bằng cách chỉnh sửa tệp cấu hình dựng sẵn C: \ Program Files \ nodejs \ node_modules \ npm \ npmrc nhưng tôi nghi ngờ sự thay đổi này có thể bị ghi đè bởi một bản cập nhật ở một số giai đoạn.
oenpelli

@oenpelli Trong trường hợp này "toàn cầu" là .npmrctệp người dùng của bạn trong thư mục nhà / hồ sơ. Nó sẽ cần phải được thiết lập cho tất cả người dùng.
Tracker1

Nếu tôi không có quyền quản trị trên windows, làm cách nào để thay đổi cài đặt toàn cầu?
liam xu

liam, bạn có thể điều chỉnh điều này cho người dùng của bạn thông qua một .npmrctập tin trong thư mục hồ sơ của bạn ... mặc dù vậy, ymmv tại thời điểm đó.
Tracker1

19

Dựa trên khái niệm cài đặt chocolateyvà ý tưởng được đề xuất bởi @Tracker, điều làm việc cho tôi là thực hiện những điều sau đây và tất cả người dùng trên windows sau đó rất vui khi làm việc với nodejsnpm.

Chọn C:\ProgramData\nodejslàm thư mục cài đặt cho nodejsvà cài đặt nodejsvới bất kỳ người dùng nào là thành viên của nhóm quản trị viên.

Điều này có thể được thực hiện với sô cô la như: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Sau đó tạo một thư mục được gọi là thư mục npm-cachegốc của thư mục cài đặt, sau đó sẽ làm theo C:\ProgramData\nodejs\npm-cache.

Tạo một thư mục được gọi etcở thư mục gốc của thư mục cài đặt, mà sau khi làm theo ở trên sẽ là C:\ProgramData\nodejs\etc.

Đặt NODEbiến môi trường là C:\ProgramData\nodejs.

Đặt NODE_PATHbiến môi trường là C:\ProgramData\nodejs\node_modules.

Đảm bảo %NODE%biến môi trường được tạo trước đây được thêm vào (hoặc đường dẫn của nó) được thêm vào %PATH%biến môi trường.

Chỉnh sửa %NODE_PATH%\npm\npmrcvới nội dung sauprefix=C:\ProgramData\nodejs

Từ dấu nhắc lệnh, đặt cấu hình chung như vậy ...

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

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

Điều quan trọng là các bước trên được thực hiện tốt nhất theo trình tự và trước khi cập nhật npm ( npm -g install npm@latest) hoặc cố gắng cài đặt bất kỳ npmmô-đun nào .

Việc thực hiện các bước trên đã giúp chúng tôi chạy nodejsdưới dạng cài đặt toàn hệ thống, dễ dàng có sẵn cho tất cả người dùng có quyền thích hợp. Mỗi người dùng sau đó có thể chạy nodenpmtheo yêu cầu.


đầu ra của 'danh sách cấu hình npm' là gì. Ngoài ra, bạn đang chạy trên Windows hoặc Linux?
Damilola

Đã thử nó trên cả hai. npm config add prefixhoạt động, nhưng không có biến môi trường nào được đề cập ở đây. Tôi không muốn mở ra một câu hỏi khác bởi vì câu hỏi này bao gồm nó, nhưng câu trả lời thì không (bên cạnh đó npm config).
phân tích

Biến môi trường NODE về cơ bản chỉ là để lộ các nhị phân. Bạn vẫn cần đặt tiền tố và bộ đệm (nếu không được đặt trước đó) như đã đề cập trong quy trình.
Damilola

Ồ, cảm ơn bạn. Điều đó không rõ ràng từ câu trả lời hoặc bất cứ nơi nào khác trên Google. Tôi đã tìm kiếm các biến môi trường vì chúng dễ thay đổi theo chương trình hơn, nhưng tôi cho rằng các lệnh Bash một lớp cũng ổn.
phân tích

Điều này làm việc rất đẹp cho tôi. Cảm ơn bạn đã hướng dẫn chi tiết!
ErnestoP

15

Bạn nên sử dụng lệnh này để thiết lập vị trí cài đặt toàn cầu của các gói 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

Bạn cũng có thể xem xét npm-cachevị trí ngay bên cạnh nó. (như trong cài đặt nodejs bình thường trên 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


1
Vui mừng được giúp đỡ. Nó cũng sẽ là một ý tưởng tuyệt vời để tạo một tập lệnh tạm thời hoặc tập tin bó để thực hiện điều này cho bạn bất cứ khi nào bạn thay đổi môi trường của bạn. Ít nhất đó là những gì id làm
davejoem

Cũng đáng thêm "nếu có khoảng trống trong đường dẫn ví dụ. "C:\Program Files\blah".
taylorswiftfan

7
  • Bước 1 :

    cấu hình npm nhận tiền tố

    • Đường dẫn mặc định là: %USERPROFILE%\AppData\Roaming\npm
  • Bước 2 :

    cấu hình npm nhận bộ đệm

    • Đường dẫn mặc định là: %USERPROFILE%\AppData\Roaming\npm-cache
  • Bước 3 :

    cấu hình npm đặt tiền tố \ npm

    • thí dụ npm config set prefix C:\\dev\\node\\npm
  • Bước 4 :

    cấu hình npm đặt bộ đệm \ npm-cache

    • thí dụ npm config set cache C:\\dev\\node\\npm-cache

Chạy lại bước 1 & 2 để kiểm tra xem các đường dẫn có được cập nhật theo yêu cầu không

Đó là nó. Bất cứ khi nào bạn cài đặt các gói toàn cầu, bạn sẽ thấy chúng được cài đặt bên trong \ npm \ node_modules


Cảm ơn giải pháp của bạn đã giải quyết được vấn đề của tôi, từ 2 tuần trước tôi đã cố gắng giải quyết vấn đề này lỗi, vì vậy giải pháp của bạn giúp tôi xóa bộ đệm và đặt bộ đệm vào vị trí mới.
Tahir Afridi

4

Thư mục toàn cầu mặc định là C:\Users\{username}\AppData\Roaming\npm. Bạn có thể tạo (nếu nó không tồn tại) một .npmrctệp trong C:\Users\{username}\và thêm prefix = "path\\to\\yourglobalfolder". Lưu ý rằng, trong các cửa sổ, đường dẫn nên được phân tách bằng double back-slash.



1

Trong Windows, nếu bạn muốn di chuyển thư mục npm hoặc nodejs trong đĩa C sang một vị trí khác, nhưng nó vẫn đảm bảo nút và npm hoạt động tốt, bạn có thể tạo symlink như thế này: Open Command Prompt:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Thí dụ:

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

Bây giờ bạn đã tạo một liên kết tượng trưng cho thư mục npm, liên kết tượng trưng này sẽ đề cập đến D:\Nodejs Data\npmMọi thứ sẽ hoạt động tốt.


0

Tôi đã thử hầu hết các câu trả lời ở đây dường như không có gì hoạt động trong trường hợp của tôi. Vì vậy, tôi đã thay đổi vị trí Temp trong các biến env của mình thành C: \ npm. Sau đó, nó bắt đầu làm việc. Đây không phải là một ý tưởng tốt mà là một giải pháp tạm thời.


0

Xóa hoàn toàn thư mục nút khỏi thư mục tệp chương trình. Gỡ cài đặt node.js và sau đó cài đặt lại. Thay đổi đường dẫn biến môi trường PATH. xóa tệp .npmrc khỏi C: \ users \ yourusername


2
Bạn có bất kỳ tài liệu hoặc nguồn hỗ trợ tuyên bố của bạn? Như được viết trong trạng thái hiện tại, thật khó để biết liệu đề xuất của bạn có thực sự hoạt động mà không tự mình thử hay không, điều này làm mất thời gian có thể được lưu lại bằng cách khác.
Filnor

0

nó không yêu cầu nhiều cấu hình, chỉ cần vào cài đặt hệ thống nâng cao sao chép đường dẫn mà bạn đã cài đặt nút của mình và chỉ cần tạo một biến môi trường và kiểm tra bằng lệnh -v của nút trong lời nhắc của bạn!


0

Để thay đổi thư mục cài đặt toàn cầu mặc định cho các mô-đun node.js (npm) trong Windows, Bạn cần sửa 2 đường dẫn.

Trước tiên hãy kiểm tra đường dẫn hiện tại nơi các mô-đun nút đang cài đặt, khi bạn cố gắng cài đặt chúng trên toàn cầu bằng cách sử dụng lệnh sau:

danh sách npm -g --depth = 0

Nó sẽ trả về cho bạn đường dẫn hiện tại nơi các mô-đun nút đang cài đặt ngay bây giờ. Ví dụ: D: \ vsc \ typecript

Bây giờ hãy truy cập đường dẫn sau để xem thư mục npm và npm-cache. C: \ Users \ tên người dùng (Số OR) \ AppData \ Roaming

Trong thư mục Roaming của ổ C, bạn sẽ tìm thấy thư mục npm và npm-cache. Nhấp vào thư mục + npm + và chọn đường dẫn [Chỉ cần nhấp vào đường dẫn thanh sẽ được chọn tự động, sao chép nó]. Đây là hình ảnh đường dẫn mà bạn cần chọn

Khi bạn sao chép đường dẫn này, hãy đặt đường dẫn này vào các biến môi trường, với một tên biến Đường dẫn (bất cứ điều gì bạn có thể chọn làm tên). Bây giờ bạn đã đặt đường dẫn cho thư mục npm của mình, bây giờ đây là thời gian để đặt tiền tố. Đi vào bên trong thư mục npm và kiểm tra xem thư mục node_module có tồn tại không, nếu không tạo thư mục mới có tên là node_modules. Tất cả các mô-đun toàn cầu của bạn sẽ đến trong thư mục này sau khi hoàn thành tất cả các bước.

Bước cuối cùng: Chuyển đến CMD và ngay lệnh sau:

npm đặt tiền tố C: \ Users \ tên người dùng (Số) \ AppData \ Roaming \ npm \ node_modules

Một lần nữa, đây là cùng một đường dẫn mà chúng ta đã chọn cho biến môi trường, chúng ta chỉ cần thêm một thư mục nữa trong đường dẫn và đó là node_module.

Tất cả đã đặt .... Thử ngay ... Nó sẽ hoạt động ..


0

Tìm đường dẫn hiện tại của cài đặt gói nút toàn cầu của bạn bằng lệnh sau.

danh sách npm -g --depth = 0

Thay đổi đường dẫn này để sửa đường dẫn bằng lệnh sau.

npm đặt tiền tố C: \ Users \ tên người dùng (Số) \ AppData \ Roaming \ npm \ node_modules

Nó làm việc cho tôi. Đọc câu trả lời trước của tôi để hiểu rõ hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.