Setiap kali saya membuat proyek, saya harus mengunduh semua dependensi modul node. Tanpa menyalin node_modules, Apakah ada cara untuk membagikan node_modules pusat di beberapa proyek?
seperti berikut ini, saya harus menjalankan banyak perintah setiap saat ..
npm install gulp-usemin
npm install gulp-wrap
npm install gulp-connect
npm install gulp-watch
npm install gulp-minify-css
npm install gulp-uglify
npm install gulp-concat
npm install gulp-less
npm install gulp-rename
npm install gulp-minify-html
require
modul d. Jika tidak, tidak, tidak adanode_modules
folder "pusat" resmi untuk digunakan denganrequire()
.npm install <npm_package_name> -g
Jawaban:
Anda benar-benar dapat membagikan direktori node_modules di antara proyek.
Dari dokumentasi node :
Jadi letakkan saja folder node_modules di dalam direktori proyek Anda dan masukkan modul apa pun yang Anda inginkan. Hanya membutuhkannya seperti biasa. Ketika node tidak menemukan direktori node_modules di folder proyek Anda, itu akan memeriksa folder induk secara otomatis. Jadi buat struktur direktori Anda seperti ini:
Jadi seperti ini, bahkan dependensi subproyek Anda dapat menggambar di repositori node_modules utama Anda.
Satu kelemahan untuk melakukannya dengan cara ini adalah Anda harus membuat file package.json Anda secara manual (kecuali seseorang tahu cara untuk mengotomatiskannya dengan grunt atau sesuatu). Ketika Anda menginstal paket Anda dan menambahkan --save arg ke sebuah
npm install
perintah, secara otomatis menambahkannya ke bagian dependensi atau package.json Anda, yang sesuai.sumber
Saya menemukan satu trik, lihat saja Symbolic Links (symlink) di Windows atau Linux , berfungsi seperti pintas tetapi lebih kuat.
Cukup Anda perlu membuat
Junction
untuk Andanode_modules
di mana saja folder yang Anda inginkan. Persimpangan tidak lain adalah jalan pintas ke folder node_modules asli Anda. Buat di dalam folder proyek Anda di mana node_modules sebenarnya akan dibuat jika digunakannpm install
.Untuk mencapai ini, Anda memerlukan setidaknya satu
node_modules
folder nyata kemudian membuat Persimpangan di proyek lain.Di Windows, Anda dapat menggunakan Command Prompt, atau menggunakan aplikasi. Menggunakan Command Prompt memberi Anda sedikit lebih banyak kontrol, menggunakan aplikasi lebih mudah saya sarankan Link Shell Extension .
sumber
mklink /d node_modules (source dir)\node_modules
.node_modules
folder proyek itu sendiri, ini berfungsi. Hanya harus ingat untuk menelusurinode_modules
folder sebenarnya sebelum menginstal sesuatu yang baru: Pnpm install
di salah satu aplikasi "terhubung"?npm install <new-package>
semua paket yang tidak ada dalam proyek package.json Anda saat ini dihapus.Coba pnpm daripada npm.
Instal dengan:
Untuk memperbarui instalasi (dan sub-direktori) yang ada, gunakan:
sumber
Direktori utama akan terlihat seperti ini
node_modules Project 1 Project 2 Project 3 Project 4
buka saja file tersebut
Project 1/.angular-cli.json
ubah skema
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
untuk
"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"
dan jangan lupa untuk membuat
node_modules
folder kosong di dalam direktori proyek Andasumber
Dengan melihat beberapa artikel, tampaknya Lerna adalah alat yang bagus untuk mengelola banyak proyek di dalam satu direktori (
monorepo
). Ini mendukung berbagi modul tanpa menduplikasi seluruh paket di setiap folder dan perintah untuk menginstalnya di banyak proyek.pnpm juga merupakan alat yang sederhana dan efisien, yang tidak menduplikasi modul-modul yang sudah diinstal untuk proyek lain.
sumber
Mari kita asumsikan bahwa memiliki satu node_modules itu harus berisi semua paket untuk semua aplikasi. jadi aplikasi Anda juga akan membagikan sebagian besar entri package.json yang unik (hanya namanya yang harus berubah)
ide saya adalah memiliki satu root dan beberapa tingkat src seperti di bawah ini
satu-satunya masalah yang mungkin Anda hadapi adalah memiliki cadangan json (atau tsconfig) untuk aplikasi apa pun dan memulihkannya saat Anda mengerjakannya atau menyiapkan skrip startup Anda untuk melayani aplikasi apa pun
sumber
Lihat juga dukungan npm v7.0.0 untuk ruang kerja
https://github.com/npm/rfcs/blob/latest/implemented/0026-workspaces.md
sumber