Каждый раз, когда я создаю проекты, мне нужно загружать все зависимости узловых модулей. Без копирования 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
require
модуля d. В противном случае нет, официальной «центральной»node_modules
папки для использования не существуетrequire()
.npm install <npm_package_name> -g
Ответы:
Вы абсолютно можете совместно использовать каталог node_modules среди проектов.
Из документации узла :
Так что просто поместите папку node_modules в каталог ваших проектов и вставьте любые модули, которые хотите. Просто требуйте их как обычно. Когда node не находит каталог node_modules в папке вашего проекта, он автоматически проверяет родительскую папку. Итак, сделайте вашу структуру каталогов такой:
Таким образом, даже зависимости вашего подпроекта могут опираться на ваш основной репозиторий node_modules.
Одним из недостатков этого способа является то, что вам придется создавать файл package.json вручную (если только кто-то не знает способ автоматизировать это с помощью grunt или чего-то еще). Когда вы устанавливаете свои пакеты и добавляете аргумент --save к
npm install
команде, он автоматически добавляет его в раздел зависимостей или в ваш package.json, что удобно.источник
Я нашел трюк, просто взгляните на символические ссылки (символические ссылки) в Windows или Linux , он работает так же, как ярлыки, но более мощный.
Просто вам нужно сделать папку
Junction
для своейnode_modules
папки где угодно. Соединение - это не что иное, как короткий путь к вашей исходной папке node_modules. Создайте его в папке вашего проекта, где были бы созданы фактические node_modules, если бы они использовалисьnpm install
.Для этого вам понадобится хотя бы одна
node_modules
настоящая папка, а затем подключитесь к ней в других проектах.В Windows вы можете использовать командную строку или приложение. Использование командной строки дает вам немного больше контроля, использовать приложение проще, я предлагаю расширение Link Shell .
источник
mklink /d node_modules (source dir)\node_modules
.node_modules
у меня нет самой папки проекта, это работает. Просто не забудьте перейти в настоящуюnode_modules
папку перед установкой чего-либо нового: Pnpm install
в любом из «подключенных» приложений?npm install <new-package>
все пакеты, не входящие в ваш текущий проект, package.json удаляются.Попробуйте pnpm вместо npm.
Установить с помощью:
Чтобы обновить существующие установки (и подкаталоги), используйте:
источник
Главный каталог должен выглядеть так
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
пустую папку в каталоге вашего проектаисточник
При просмотре некоторых статей кажется, что Lerna - хороший инструмент для управления несколькими проектами в одном каталоге (
monorepo
). Он поддерживает совместное использование модулей без дублирования всех пакетов в каждой папке и команд для их установки в нескольких проектах.pnpm также является простым и эффективным инструментом, который не дублирует те модули, которые уже установлены для других проектов.
источник
Предположим, что имея один node_modules, он должен содержать все пакеты для всех приложений. таким образом, ваши приложения также будут разделять большинство уникальных записей package.json (должно измениться только имя)
Моя идея заключалась бы в том, чтобы иметь один корень и несколько уровней src, как показано ниже
единственная проблема, с которой вы можете столкнуться, - это иметь резервную копию json (или tsconfig) для любого приложения и восстанавливать их, когда вы работаете над ним, или настраивать сценарии запуска для обслуживания любого приложения
источник
См. Также поддержку рабочих областей в npm v7.0.0
https://github.com/npm/rfcs/blob/latest/implemented/0026-workspaces.md
источник