Подтвердить что ты не робот

Как я могу создать каталог с несколькими проектами 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
4b9b3361

Ответ 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) для любого приложения и восстановление их при работе над ним или настройка сценариев запуска для обслуживания любого приложения