Как я могу создать каталог с несколькими проектами node_modules?
Всякий раз, когда я делаю проекты, мне приходится загружать все зависимости модулей node. Не копируя node_modules, все равно, чтобы поделиться центральным node_modules в нескольких проектах?
как и следующие, мне нужно каждый раз запускать множество команд.
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
Ответы
Ответ 1
Вы можете совместно использовать каталог node_modules среди проектов.
Из node документации:
Если идентификатор модуля, переданный require(), не является собственным модулем, и не начинается с '/', '../' или './', затем node начинается с родительский каталог текущего модуля и добавляет /node_modules, и пытается загрузить модуль из этого места.
Если он там не найден, он перемещается в родительский каталог и и так далее, пока не будет достигнут корень файловой системы.
Например, если файл в '/home/ry/projects/foo.js' вызван require ('bar.js'), то node будет выглядеть в следующих местах, в этот порядок:
/home/ry/projects/node_modules/bar.js/home/ry/node_modules/bar.js /home/ node_modules/bar.js/node_modules/bar.js
Итак, просто поместите папку node_modules в каталог ваших проектов и поставьте все нужные вам модули. Просто требуйте их, как обычно. Когда node не находит каталог node_modules в папке проекта, он автоматически проверяет родительскую папку. Поэтому создайте структуру каталогов следующим образом:
-myProjects
--node_modules
--myproject1
---sub-project
--myproject2
Таким образом, даже ваши зависимые от подпроекта могут использовать ваш основной репозиторий node_modules.
Один из недостатков этого способа заключается в том, что вам нужно будет вручную создать файл package.json(если кто-то не знает способ автоматизировать это с хрюканьем или чем-то еще). Когда вы устанавливаете свои пакеты и добавляете команду -save arg в команду npm install
, она автоматически добавляет ее в раздел зависимостей или ваш package.json, что удобно.
Ответ 2
Я нашел хитрость, просто взгляните на символические ссылки (символические ссылки) в Windows или Linux, он работает как ярлыки, но более мощный.
Просто вам нужно создать Junction
для вашей папки node_modules
где угодно. Соединение - не что иное, как кратчайший путь к вашей исходной папке node_modules. Создайте его в папке вашего проекта, где были бы созданы фактические модули_узлов, если бы они использовались npm install
.
Для этого вам понадобится хотя бы одна настоящая папка node_modules
, а затем выполните соединение с ней в других проектах.
В Windows вы можете использовать командную строку или приложение. Использование командной строки дает вам немного больше контроля, проще использовать приложение, я предлагаю Расширение Link Shell.
Ответ 3
Попробуйте pnpm вместо npm.
pnpm использует жесткие ссылки и символические ссылки для сохранения одной версии модуля только один раз на диске.
Установить с помощью:
npm install -g pnpm
Для обновления существующих установок (и подкаталогов) используйте:
pnpm recursive install
Ответ 4
Главный каталог должен выглядеть так
node_modules
Project 1
Project 2
Project 3
Project 4
просто откройте файл Project 1/.angular-cli.json
изменить схему
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
в
"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"
и не забудьте создать пустую папку node_modules
внутри директории вашего проекта
Ответ 5
Глядя на некоторые статьи, кажется, что Лерна
хороший инструмент для управления несколькими проектами в одном каталоге (monorepo
). Он поддерживает совместное использование модулей без дублирования всех пакетов в каждой папке и команды для их установки в нескольких проектах.
Ответ 6
Предположим, что наличие единственного node_modules должно содержать все пакеты для всех приложений. таким образом, ваши приложения также будут использовать большинство уникальных записей package.json(просто имя должно измениться)
моя идея состояла бы в том, чтобы иметь один корень и несколько уровней src, как показано ниже
root\package.json
root\node_modules
root\\..
root\app1\src\\..
root\app2\src\\..
Единственная проблема, с которой вы могли столкнуться, - это резервное копирование json (или tsconfig) для любого приложения и восстановление их при работе над ним или настройка сценариев запуска для обслуживания любого приложения