Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
{
// package.json
// ...
"scripts": {
"styles:watch": "stylus assets/styles/main.styl -w -r -u kouto-swiss -o public/assets/main.css",
"js:watch": "watchify -d -t debowerify assets/js/main.js -o public/assets/main.js",
"server": "node app.js",
"livereload": "node livereload.js",
"start": "parallelshell \"npm run styles:watch\" \"npm run js:watch\" \"npm run server\" \"npm run livereload\""
}
// ...
}
require('livereload').createServer({ port: 1234 }).watch('public/assets');
"autoprefixer -b '> 5%' < assets/styles/main.css | cssmin | hashmark -l 8 'dist/main.#.css'"
которые конечно можно разделить на строки по-меньше, но авторы предпочли не разделять, например, такое свое творение"browserify -d assets/scripts/main.js -p [minifyify --compressPath . --map main.js.map --output dist/main.js.map] | hashmark -n dist/main.js -s -l 8 -m assets.json 'dist/{name}{hash}{ext}'"
"browserify -d assets/scripts/main.js -p [minifyify --compressPath . --map main.js.map --output dist/main.js.map] | hashmark -n dist/main.js -s -l 8 -m assets.json 'dist/{name}{hash}{ext}'"
Ну и, конечно, я до сих пор не могу отойти и понять, как такое можно всерьез предлагать
stylus assets/styles/main.styl -w -r -u kouto-swiss -o public/assets/main.css
stylus('assets/styles/main.styl', {
w: true,
r: true,
u: 'kouto-swiss',
o: 'public/assets/main.css'
});
{
"scripts": {
"stylus": "stylus assets/styles/main.styl --watch --resolve-url --use kouto-swiss --out public/assets/main.css"
}
}
npm test && npm run deploy задеплоит даже код с ошибками. run() не возвращает ничего. Gulp не сможет узнать об окончании таска, поэтому они у вас все будут выполняться параллельно.Your plugin should only do one thing, and do it well.
- Avoid config options that make your plugin do completely different tasks
- For example: A JS minification plugin should not have an option that adds a header as well
— Guidelines
var requireDir = require('require-dir');
requireDir('./gulp/tasks', { recurse: true });
это глоток воздуха после grunt'a <…> нужно подключать с десяток зависимостей и писать почти 50 строчек
gulpfile в 10 строк? Легко! — упрощаем создание типовых задач