it-swarm.com.ru

Использование gulp без глобального gulp // edit: и без ссылки на файл bin js

У меня есть gulpfile.js, который отлично работает при вводе gulp в командной строке.

Все, что действительно делает команда gulp bash, - это вызывает указанный js-файл в package.json >> bin >> gulp глобально установленного gulp.

Теперь я хочу запустить gulpfile без глобально установленного gulp, просто набрав node gulpfile.js, что явно не удается и уже упоминалось довольно часто, несмотря на то, что gulp устанавливается локально и требуется в начале gulpfile.js

Использование gulp без инструмента cli позволит очень легко использовать gulp как часть других плагинов npm.

Заметка:
Требование другого gulpfile.js работает из оригинального gulpfile.js, когда этот оригинальный gulpfile.js был запущен с помощью инструмента gulp cli.

Вопрос:
Каков наилучший способ запустить/требовать gulp без использования глобального инструмента cli gulp (// edit: или локальная ссылка на него)? например возможность просто запросить его из другого файла js, когда gulp является только локально установленной зависимостью. (другими словами, программный запуск gulp изнутри JS без какого-либо вмешательства CLI)

16
philkunz

В package.json

"scripts": {
   "gulp": "gulp"  
},

И затем эта команда npm run gulp Также npm предоставляет возможность передавать дополнительные параметры вашим командам . Это только в случае npm> = 2.0

Обновление: без ссылки на бин

Вы можете проверить файл node_modules/.bin/gulp или node_modules/gulp/bin/gulp.js, чтобы увидеть, как вы можете запустить gulp (строка 129 интересна) 

Я думаю, что это должно работать:

var gulp = require('gulp');

gulp.task('default', function() {
    console.log('do something');
});

gulp.start.apply(gulp, ['default']);
34
Sander Visser

Когда вы устанавливаете его локально (npm install --save-dev gulp), вы можете просто запустить его, вызвав ./node_modules/.bin/gulp all

Или вы можете определить скрипт npm и запустить его с помощью npm run gulp

добавив это к package.json

"scripts": {
  "gulp": "gulp"
}
8
t.niese

В ваш package.json добавьте следующее:

"scripts": {
  "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
}

и запустите из командной строки, набрав npm run gulp.

Это устраняет зависимость от наличия глобальной установки gulp

5
Megha Bisht

Я думаю, что самый прямой ответ заключается в следующем:

node ./node_modules/gulp/bin/gulp.js

Да, добавление в ваши npm-скрипты работает, но это не помогает в таких ситуациях, как автоматические сборки, когда вы пытаетесь выполнить задачу gulp для существующего кода из репозитория, и вы не можете легко изменить package.json.

Вообще говоря, ответ Сандера Виссера, вероятно, «лучший», но это вызов самого низкого уровня, который может быть реализован где угодно.

1
Doug Lampe

Между тем, так как npm> = 5.2.0. Вы можете сделать это с помощью 'npx':

npx gulp

Выполняет двоичные файлы в ./node_modules/.bin

Кстати, у него есть возможность запускать неустановленные инструменты, которые только временно устанавливаются, выполняются, а затем удаляются.

Оформить заказ от Кэт Marchán: Представляем npx: бегун пакета npm

1
tweini