Использование 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 (//редактирование или привязка к нему локально)? например будучи в состоянии просто потребовать его из другого js файла, когда gulp - это только локально установленная зависимость. (другими словами, начиная с gulp программно изнутри JS без вмешательства CLI любого рода)
Ответы
Ответ 1
В 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']);
Ответ 2
Когда вы устанавливаете его локально (npm install --save-dev gulp
), вы можете просто запустить его, вызвав ./node_modules/.bin/gulp all
Или вы можете определить npm
script и запустить его с помощью npm run gulp
добавив это к package.json
"scripts": {
"gulp": "gulp"
}
Ответ 3
В вашем пакете .json добавьте следующее:
"scripts": {
"gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>"
}
и запустите из командной строки, набрав npm run gulp.
Это устраняет зависимость от наличия gulp в глобальном масштабе
Ответ 4
Я думаю, что самый прямой ответ заключается в следующем:
node ./node_modules/gulp/bin/gulp.js
Да, добавление в ваши сценарии npm работает, но это не помогает в ситуациях, таких как автоматические сборки, когда вы пытаетесь выполнить задачу gulp для существующего кода из репозитория, и вы не можете легко изменить package.json.
Вообще говоря, ответ Sander Visser, вероятно, "лучший", но это вызов самого низкого уровня, который может быть реализован где угодно.