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

<p>у меня есть gulpfile.js, который отлично работает при вводе <code>gulp</code> в командной строке.</p><p>все, что действительно делает команда <code>gulp</code> bash, - это вызывает указанный js-файл в <code>package.json >> bin >> gulp</code> глобально установленного gulp.</p><p>теперь я хочу запустить gulpfile без глобально установленного gulp, просто набрав <code>node gulpfile.js</code>, что явно не удается и уже упоминалось довольно часто, несмотря на то, что gulp устанавливается локально и требуется в начале <code>gulpfile.js</code></p><p>использование gulp без инструмента cli позволит очень легко использовать gulp как часть других плагинов npm.</p><p><strong> заметка: </strong><br> требование другого gulpfile.js работает из оригинального gulpfile.js, когда этот оригинальный gulpfile.js был запущен с помощью инструмента gulp cli.</p><p><strong> вопрос: </strong><br> каков наилучший способ запустить/требовать gulp без использования глобального инструмента cli gulp (// edit: или локальная ссылка на него)? например возможность просто запросить его из другого файла js, когда gulp является только локально установленной зависимостью. (другими словами, программный запуск gulp изнутри js без какого-либо вмешательства cli)</p>

<p>в package.json</p><pre><code>"scripts": { "gulp": "gulp" }, </code></pre><p>и затем эта команда <code>npm run gulp</code> также npm предоставляет возможность передавать дополнительные параметры вашим командам . это только в случае npm> = 2.0</p><p>обновление: без ссылки на бин</p><p>вы можете проверить файл <code>node\_modules/.bin/gulp</code> или <code>node\_modules/gulp/bin/gulp.js</code>, чтобы увидеть, как вы можете запустить gulp (строка 129 интересна) </p><p>я думаю, что это должно работать:</p><pre><code>var gulp = require('gulp'); gulp.task('default', function() { console.log('do something'); }); gulp.start.apply(gulp, ['default']); </code></pre>

<p>когда вы устанавливаете его локально (<code>npm install --save-dev gulp</code>), вы можете просто запустить его, вызвав <code>./node\_modules/.bin/gulp all</code></p><p>или вы можете определить скрипт <code>npm</code> и запустить его с помощью <code>npm run gulp</code></p><p>добавив это к <code>package.json</code></p><pre><code>"scripts": { "gulp": "gulp" } </code></pre>

<p>в ваш package.json добавьте следующее:</p><pre><code>"scripts": { "gulp": "node ./node\_modules/gulp/bin/gulp.js <task-name>" } </code></pre><p>и запустите из командной строки, набрав npm run gulp.</p><p>это устраняет зависимость от наличия глобальной установки gulp</p>

<p>я думаю, что самый прямой ответ заключается в следующем:</p><pre><code>node ./node\_modules/gulp/bin/gulp.js </code></pre><p>да, добавление в ваши npm-скрипты работает, но это не помогает в таких ситуациях, как автоматические сборки, когда вы пытаетесь выполнить задачу gulp для существующего кода из репозитория, и вы не можете легко изменить package.json.</p><p>вообще говоря, ответ сандера виссера, вероятно, «лучший», но это вызов самого низкого уровня, который может быть реализован где угодно.</p>

<p>между тем, так как npm> = 5.2.0. вы можете сделать это с помощью 'npx':</p><pre><code>npx gulp </code></pre><p>выполняет двоичные файлы в ./node\_modules/.bin</p><p>кстати, у него есть возможность запускать неустановленные инструменты, которые только временно устанавливаются, выполняются, а затем удаляются.</p><p>оформить заказ от кэт marchán: <a href="https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b">представляем npx: бегун пакета npm</a> </p>