Собираю проект при помощи GulpGulp ничего собирать не может, так как Gulp - это task runner (запускатель задач если по-русски), собирать может то, что Gulp запускает, например bundler (сборщик) вроде Webpack или Rollup или просто конкатенатор файлов.
Если я подключаю один и тот же модуль npm, к примеру JQuery, к разным файлам, а потом эти файлы подключаю к main.js - будут ли модули из npm дублироваться?зависит от того, чем все таки собираете, если обычная конкатенация файлов - то да, будет дублирование. А если Webpack или Rollup - нет.