Я работаю в веб-приложении (JavaScript/C#, версия контролируется TFS), и наша команда хочет начать использовать Visual Studio 2015. Microsoft заставляет разработчиков использовать существующие популярные инструменты, такие как Gulp для автоматизированных задач, поэтому я написал несколько задач Gulp, которые будут выполняться на сервере.Использование gulp для сборки без npm install
Моя проблема заключается в том, что наши автоматические сборки генерируют новые папки проекта на сервере сборки, поэтому я не могу запустить gulp myBuildTask
без первого запуска npm install
. Установка npm добавляет более 2 минут к процессу сборки, и кажется очень неэффективным загружать одинаковые зависимости для каждой сборки (поскольку они будут редко меняться).
В любом случае я могу запустить задачу Gulp в новой папке проекта без первого запуска npm install
?
Опции Я рассмотрел:
Включите node_modules в TFS. Я не мог добавить папку node_modules в TFS (что вызовет ее существование в каждой новой папке сборки), поскольку вложенные зависимости bower имеют слишком длинные пути к Windows. Я мог бы пройти этот маршрут без беседы, но я не уверен, что хочу, чтобы все эти файлы были в моем решении (большая часть из которых не нужна, например, файлы readme и test).
Run
npm install
после каждой автоматизированной сборки. Как уже упоминалось, я не хочу этого делать, потому что он добавляет несколько минут к процессу сборки.Установите модули NPM по всему миру. Я не уверен, что это возможно, но мне интересно, могу ли я устанавливать все зависимости проекта на глобальном уровне на сервере сборки (избегая необходимости устанавливать на уровне проекта). Моя озабоченность подобным подходом заключается в том, что я не хочу, чтобы вручную обновлять глобально установленные модули NPM сервера сборки каждый раз, когда мы добавляем плагин gulp.
В идеале решение будет чем-то вроде # 3. Модули будут устанавливаться глобально, но каждая сборка может запускать npm install
, которая будет проверять каждый модуль. Если новый модуль npm был добавлен в package.json, он будет загружен. Этот npm install
будет довольно быстрым, поскольку в большинстве случаев все модули уже существуют (глобально установлены на сервере сборки).
Отличное предложение с использованием родительского каталога, я не понимал, как работает npm. Структура папок 'my_project/node_modules' и' my_project/builds' должна хорошо работать. Затем я мог запускать 'npm install' с каждой сборкой, и это было бы быстро, поскольку все уже было бы установлено (кроме случаев, когда новые модули добавляются разработчиками). Я дам ему снимок в понедельник и обновить его (и принять ответ). – fotijr
Ждать, это не так просто. Если вы запустите 'npm install', он игнорирует тот факт, что существует каталог' ../ node_modules' и просто запускается полностью, создавая 'node_modules' в том же каталоге, где присутствует' package.json'. Однако вы могли бы сделать еще одну вещь: символически привязать родительский узел node_modules к нужному месту, а затем запустить «npm install». Я пробовал это, и это работает как шарм. Я отредактирую ответ и упомянул об этой возможности. –
Итак, вы попробовали это/это сработало для вас? Если да, не могли бы вы принять ответ? Благодарю. –