Paket kemudian akan diinstal di ./install/here/node_modules. The mkdirdiperlukan karena NPM mungkin sebaliknya memilih yang sudah ada node_modulesdirektori lebih tinggi dalam hirarki. (Lihat dokumentasi npm di folder .)
Tampaknya Anda harus memiliki file package.json di direktori alternatif ini jika Anda menggunakan opsi --prefix. Apakah ada cara untuk memiliki package.json di direktori saat ini dan menginstal ke direktori alternatif?
2
@fractal Lihat jawaban saya untuk itu
yunzen
10
@coundy Apakah ada cara untuk menentukan path untuk npm install(tanpa nama paket)? Saya menghubungkan ini secara langsung, tetapi kemudian npm mencari package.jsondi {prefix}. Apa yang saya juga bertujuan adalah untuk dapat membiarkan packages.jsondalam proyek root dan pada saat yang sama menginstal semua paket {project root}/{project webroot}.
automatix
Saya mengalami masalah rekursi. Apakah ada cara untuk membuatnya berjalan sekali? Saya memecahkannya sementara dengan mengubah direktori dan kemudian memanggil npm install, tetapi --prefixsepertinya solusi yang lebih baik, jika tidak menyebabkan rekursi.
adi518
47
Dalam dokumentasi itu dinyatakan: Gunakan opsi awalan bersama dengan opsi global :
The awalan konfigurasi default untuk lokasi di mana simpul diinstal. Pada kebanyakan sistem, ini adalah / usr / local . Di windows, ini adalah lokasi yang tepat dari biner node.exe. Pada sistem Unix, ini satu tingkat naik, karena simpul biasanya dipasang di {awalan} / bin / simpul daripada
{awalan} /node.exe .
Ketika flag global diatur, npm menginstal sesuatu ke dalam awalan ini. Ketika tidak disetel, ia menggunakan root dari paket saat ini, atau direktori kerja saat ini jika belum ada dalam paket.
(Penekanan oleh mereka)
Jadi di direktori root Anda, Anda dapat menginstal
npm install --prefix <path/to/prefix_folder>-g
dan itu akan menginstal node_modulesfolder ke folder
@Pavlo Saya rasa tidak. Itu bukan jawaban untuk OP.
yunzen
@ Poplo Jika suatu paket diinstal secara global Anda memerlukannya dengan cara yang sama seperti biasa. Jadi ya Anda dapat memerlukan paket yang diinstal secara global.
Rob Evans
43
Pada npm versi 3.8.6, Anda dapat menggunakan
npm install --prefix ./install/here <package>
untuk menginstal di direktori yang ditentukan. NPM secara otomatis membuat node_modulesfolder bahkan ketika node_modulesdirektori sudah ada di hierarki yang lebih tinggi. Anda juga dapat memiliki package.jsondi direktori saat ini dan kemudian menginstalnya di direktori yang ditentukan menggunakan --prefixopsi:
npm install --prefix ./install/here
Pada npm 6.0.0, Anda dapat menggunakan
npm install --prefix ./install/here ./
untuk menginstal package.json di direktori saat ini ke direktori "./install/here". Ada satu hal yang saya perhatikan pada Mac yang membuat symlink ke folder induk di dalam direktori node_modules. Tapi, masih berfungsi.
CATATAN: NPM menghormati jalur yang telah Anda tentukan melalui --prefixopsi. Ini menyelesaikan sesuai dokumentasi npm pada folder , hanya ketika npm installdigunakan tanpa --prefixopsi.
Ini sepertinya tidak berhasil, saya selalu dapatkanCan't install <current directory>: Missing package name
Tibor Blenessy
1
@TiborBlenessy Dengan asumsi Anda berbicara tentang pernyataan pemasangan kedua. Pastikan Anda memiliki file package.json yang valid di direktori Anda saat ini. Jika masih tidak berfungsi, beri tahu saya versi npm Anda. Langkah-langkah ini digunakan untuk bekerja dengan versi npm yang ditentukan. Dan, jika mereka tidak lagi, saya ingin menyelam lebih dalam dan sampai ke akar permasalahan dan mungkin saya bisa menemukan alternatif.
Rohit Sharma
1
@RohitSharma Menggunakan npm 6.0.0 metode ini tidak berfungsi seperti yang diharapkan dalam package.jsonfile./install/here
Christian Ivicevic
@ChristianIvicevic Anda dapat menggunakan npm install --prefix ./install/here ./ untuk menginstal package.json di direktori saat ini ke direktori "./install/here". Ada satu hal yang saya perhatikan pada Mac yang membuat symlink ke folder induk di dalam direktori node_modules. Tetapi, ia masih bekerja dengan npm 6.0.0
Rohit Sharma
1
@ Tanoro Perintah ketiga akan bekerja dengan npm 6.0.0 dengan pembuatan symlink seperti yang disebutkan dalam jawaban. Saya belum pernah mencoba 2 perintah pertama dengan npm v3.5.2 itulah sebabnya saya telah menyebutkan versi spesifik dari npm yang saya coba. Silakan memperbarui jawaban dengan perintah yang berfungsi untuk versi lain juga.
Rohit Sharma
0
Saya menggunakan build PowerShell dan tidak bisa menjalankan NPM tanpa mengubah direktori saat ini.
Akhirnya menggunakan perintah mulai dan hanya menentukan direktori kerja:
Jawaban:
Anda dapat menggunakan
--prefix
opsi ini:Paket kemudian akan diinstal di
./install/here/node_modules
. Themkdir
diperlukan karena NPM mungkin sebaliknya memilih yang sudah adanode_modules
direktori lebih tinggi dalam hirarki. (Lihat dokumentasi npm di folder .)sumber
npm install
(tanpa nama paket)? Saya menghubungkan ini secara langsung, tetapi kemudian npm mencaripackage.json
di{prefix}
. Apa yang saya juga bertujuan adalah untuk dapat membiarkanpackages.json
dalam proyek root dan pada saat yang sama menginstal semua paket{project root}/{project webroot}
.npm install
, tetapi--prefix
sepertinya solusi yang lebih baik, jika tidak menyebabkan rekursi.Dalam dokumentasi itu dinyatakan: Gunakan opsi awalan bersama dengan opsi global :
(Penekanan oleh mereka)
Jadi di direktori root Anda, Anda dapat menginstal
dan itu akan menginstal
node_modules
folder ke foldersumber
require
menginstal paket secara global, bukan?Pada npm versi 3.8.6, Anda dapat menggunakan
untuk menginstal di direktori yang ditentukan. NPM secara otomatis membuat
node_modules
folder bahkan ketikanode_modules
direktori sudah ada di hierarki yang lebih tinggi. Anda juga dapat memilikipackage.json
di direktori saat ini dan kemudian menginstalnya di direktori yang ditentukan menggunakan--prefix
opsi:Pada npm 6.0.0, Anda dapat menggunakan
untuk menginstal package.json di direktori saat ini ke direktori "./install/here". Ada satu hal yang saya perhatikan pada Mac yang membuat symlink ke folder induk di dalam direktori node_modules. Tapi, masih berfungsi.
CATATAN: NPM menghormati jalur yang telah Anda tentukan melalui
--prefix
opsi. Ini menyelesaikan sesuai dokumentasi npm pada folder , hanya ketikanpm install
digunakan tanpa--prefix
opsi.sumber
Can't install <current directory>: Missing package name
package.json
file./install/here
Saya menggunakan build PowerShell dan tidak bisa menjalankan NPM tanpa mengubah direktori saat ini.
Akhirnya menggunakan perintah mulai dan hanya menentukan direktori kerja:
sumber