У меня есть проект Node.js (на самом деле проект Firebase), где у меня есть код на Google Drive. (Вместо этого я мог бы использовать, например, Dropbox. Важно, чтобы файлы кода были зеркальными.)
Теперь я хочу развить этот проект и на другом компьютере. Не понимаю, как обращаться с каталогом node_modules. Сейчас там потрясающее количество файлов - 15 000. Следует ли исключить их из зеркалирования?
Или это просто плохая установка?
Спасибо @DougStevenson, но сейчас у меня есть практические причины сделать это таким образом. Я буду использовать систему управления версиями, когда опубликую проект, но мой способ программирования вначале довольно похож на «а, черт, мне нужно снова провести рефакторинг».
У меня такая проблема, даже при использовании системы контроля версий. Причина в том, что у меня может быть незавершенная работа на одной машине, а затем я перейду на другую машину и захочу получить файлы вне системы управления версиями (например, папку конфигурации IntelliJ) и синхронизировать выполняемую работу. Один из ключевых моментов в том, чтобы поддерживать IDE, ОС и другое вспомогательное программное обеспечение (например, Node) в (примерно) одних и тех же версиях.





Поскольку папка node_modules создается с помощью команды npm install, вы можете полностью исключить папку при загрузке в папку Google Диска.
При загрузке файлов с другого компьютера просто запустите команду еще раз, чтобы установить все зависимости в папку node_modules.
Один из приемов - вручную добавить папку node_modules перед запуском npm install, чтобы вы могли исключить ее из синхронизации, прежде чем она получит десятки тысяч файлов.
К сожалению, трюк @EricMajerus не работает на OneDrive. В этом случае локальная папка просто удаляется :(
Это действительно плохая установка. Для обработки исходного кода рекомендуется использовать систему контроля версий.
Немногочисленные системы контроля версий,
При публикации кода в VCS / Drive / Dropbox не включайте папку node_modules. Все модули будут переустановлены с помощью npm install. Но убедитесь, что все ваши необходимые модули были включены в зависимости package.json.
Например,Пользователь А добавление источника в VCS / Drive / Dropbox без node_modules. Как только Пользователь B получит доступ к загрузке исходников. Он загрузит и выполнит команду npm install. После того, как все модули будут установлены, папка node_modules будет создана автоматически на машине Пользователь B.
Спасибо, это было то, что мне было нужно. Я не знал о Bitbucket. И npm install кажется мне сейчас тем, что мне нужно.
Я не думаю, что это плохая установка. Если у вас два персональных компьютера (например, у меня, настольный компьютер и ноутбук), бывают случаи, когда я оставляю свой рабочий стол с незавершенной работой, которую я хочу продолжить на своем ноутбуке. После Я закончил, затем фиксирую и нажимаю на BItBucket.
Контроль версий не имеет ничего общего с использованием локальных / облачных резервных копий данных в ваших рабочих областях. Это похоже на ответ «вам не следует использовать RAID, используйте вместо него GitHub» или «вы не должны использовать твердотельные диски M.2 на своем компьютере, используйте вместо этого GitHub». Non sequitur.
К сожалению, я знаю вашу боль и пока не нашел решения для Google Drive и OneDrive - мои любимые варианты.
У меня есть папки проекта, в которых есть много подпапок, таких как исходные изображения, дизайн и т. д. Я хочу, чтобы эти папки синхронизировались с OneDrive, но также синхронизируются мои подпапки, такие как node_modules, и я не могу найти способ избежать этого.
Я использую Git в качестве исходного кода, но я часто меняю компьютеры (настольные и портативные), и очень сложно полагаться только на Git. Мне придется каждый раз клонировать проекты, и иногда мне нужно только немного потренироваться / попрактиковаться, и я не хочу загружать их на Github.
Возможно, вам поможет стороннее программное обеспечение для синхронизации, такое как Insync. Попробую использовать их пробный период, чтобы проверить.
Спасибо. Я ушел в Git. Я хотел избежать установки сервера для этого, но нашел решение.
Вы можете попробовать такое решение, как InSync. Я использую его в своем ноутбуке с Linux и на рабочем столе Windows. Как и в Git, вы можете настроить программное обеспечение Insync на игнорирование таких папок, как node_modules. Вы можете выбрать не загружать, не загружать или и то и другое. К сожалению, это не бесплатное решение, но, по крайней мере, оно отлично работает.
Это всегда беспокоило меня с Dropbox, потому что выборочная синхронизация доставляла хлопоты. Вы должны выбрать каждую отдельную папку, которую хотите исключить. Было так много запросов на файл .dropboxignore, но Dropbox не слушал. Но я не знаю, есть ли какие-нибудь облачные хранилища, которые предлагали бы эту функцию.
Обновлено: Dropbox, похоже, работает над функцией, которая в настоящее время находится в бета-версии https://help.dropbox.com/en-us/files-folders/restore-delete/ignored-files
В любом случае: использовать git всегда хорошо, но если вы работаете на нескольких устройствах и не хотите фиксировать и подтягивать / подталкивать свою работу каждый раз, когда вы переключаете устройства, вы можете сохранить свой git в своем Dropbox. Но все же есть node_modules, которые синхронизируются часами даром.
Чтобы решить эту проблему, я создал крошечную функцию, которая перемещает node_modules за пределы Dropbox, а затем создает на них мягкие ссылки. Таким образом, Dropbox синхронизирует только файл ссылки, а не его содержимое.
DROPNODE=/usr/local/node_modules_dropbox
init_dropnode() {
if [ -d $DROPNODE ]; then
mkdir -p $DROPNODE
fi
}
dropnode(){
bp=$DROPNODE/`basename "$PWD"`
p=$bp/node_modules
if [ -L "./node_modules" ]; then
rm node_modules
mkdir -p $p
else
if [ -d "./node_modules" ]; then
mkdir -p $bp
mv node_modules $p
else
mkdir -p $p
fi
fi
ln -s $p node_modules
}
Я помещаю их в свой .bash_profile, поэтому, когда я нахожусь в папке проекта, я просто использую dropnode, и проблемы не связаны с моим Dropbox.
Отказ от ответственности: это работает только на Linux / MacO, и вам не нужно устанавливать один и тот же путь для папки дампа node_modules на каждом компьютере. И если вы монтируете код в контейнер Docker, это не сработает, потому что символические ссылки игнорируются.
С Dropbox, позволяющим игнорировать файлы / каталоги с помощью терминала, теперь это сделать довольно просто.
Я построил узел CLI Dropbox игнорировать node_modules, чтобы сделать это очень легко.
Почему вы не используете какой-то стандартный контроль версий для своего проекта? Облачное хранилище действительно не лучшее решение для управления вашим кодом.