Guest User

Untitled

a guest
Jan 26th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.33 KB | None | 0 0
  1. var gulp = require('gulp');
  2. var browserSync = require('browser-sync').create();
  3. var sass = require('gulp-sass');
  4. //Компиляция SASS
  5. gulp.task('sass', function() {
  6. gulp.src('app/scss/*.scss')
  7. .pipe(sass())
  8. .on('error', log)
  9. .pipe(gulp.dest('app/css'))
  10. .pipe(browserSync.stream());
  11. });
  12. // Запускаем локальный сервер (только после компиляции
  13. sass)
  14. gulp.task('server', ['sass'], function() {
  15. browserSync.init({
  16. notify: false,
  17. port: 9000,
  18. server: {
  19. baseDir: 'app'
  20. }
  21. });
  22. });
  23.  
  24. // слежка и запуск задач
  25. gulp.task('watch', function() {
  26. gulp.watch('app/scss/*.scss', ['sass']);
  27. gulp.watch([
  28. 'app/**/*.html',
  29. 'app/js/**/*.js'
  30. ]).on('change', browserSync.reload);
  31. gulp.watch([
  32. 'app/css/**/*.css'
  33. ]).on('change', browserSync.reload);
  34. });
  35. // Задача по-умолчанию
  36. gulp.task('default', ['server', 'watch']);
  37.  
  38. ---------------
  39. Пример использования при склеивании файлов:
  40. var gulp = require('gulp'),
  41. concatCss = require('gulp-concat-css');
  42. gulp.task('default', function () {
  43. return gulp.src('app/**/*.css')
  44. .pipe( concatCss('fullstyle.css') )
  45. .pipe( gulp.dest('app/css/') );
  46. });
  47. ---------
  48. Использоание:
  49. var gulp = require('gulp');
  50. gulp.task('default', function() {
  51. console.log('default task');
  52. });
  53. Использоание с deps:
  54. var gulp = require('gulp');
  55. gulp.task('default', ['your_task_1', 'your_task_2'],
  56. function() {
  57. console.log('default task');
  58. });
  59. ----------
  60. Чтобы выполнить синхронно задачу:
  61. 1) Передать callback:
  62. gulp.task('callback_task', function(callback_func) {
  63. // любая асинхронная задача
  64. setTimeout(function () {
  65. callback_func();
  66. }, 500);
  67. });
  68. 2) Вернуть поток:
  69. gulp.task('stream_task', function() {
  70. return gulp.src('app/**/*.css')
  71. .pipe( concatCss('fullstyle.css') )
  72. .pipe( gulp.dest('app/css/') );
  73. });
  74. 3) Вернуть промис:
  75. gulp.task('promise_task', function() {
  76. var deferred = Q.defer();
  77. // любая асинхронная задача
  78. setTimeout(function () {
  79. deferred.resolve();
  80. }, 500);
  81. return deferred.promise;
  82. });
  83. Выполняем задачи последовательно:
  84. var gulp = require('gulp');
  85. // Первая задача
  86. gulp.task('first_task', function() { });
  87. // Вторая задача
  88. gulp.task('second_task', ['first_task'], function() {
  89. // Не запустится пока не выполнится первая задача
  90. });
  91. gulp.task('default', ['first_task', 'second_task'],
  92. function() { });
  93. -----------
  94. var watcher = gulp.watch('js/**/*.js', ['task_1',
  95. 'task_2']);
  96. watcher.on('change', function(event) {
  97. console.log('File change - running tasks...');
  98. });
  99. gulp.watch(glob[, opts, cb]) (вариант 2)
  100.  
  101.  
  102.  
  103. ------
  104. Gulp-concat-css
  105. Модуль для склеивания css файлов
  106. -------
  107. var gulp = require('gulp'),
  108. concatCss = require('gulp-concat-css');
  109. gulp.task('default', function () {
  110. return gulp.src('app/**/*.css')
  111. .pipe( concatCss('fullstyle.css') )
  112. .pipe( gulp.dest('app/css/') );
  113. });
  114. -------
  115. Gulp-minify-css
  116. Модуль для минификации css файлов
  117. ------
  118. var gulp = require('gulp'),
  119. concatCss = require('gulp-concat-css'),
  120. minifyCss = require('gulp-minifycss');
  121. gulp.task('default', function () {
  122. return gulp.src('app/**/*.css')
  123. .pipe( concatCss('fullstyle.css') )
  124. .pipe( minifyCss() )
  125. .pipe( gulp.dest('app/css/') );
  126. });
  127. -----
  128. Gulp-rename
  129. Модуль для переименования файлов
  130. -----
  131. Строка:
  132. var gulp = require('gulp'),
  133. rename = require('gulp-rename');
  134. gulp.task('default', function () {
  135. return gulp.src('app/**/*.js')
  136. .pipe( rename('new.js') )
  137. .pipe( gulp.dest('dist/js/') );
  138. });
  139. Callback-функция:
  140. gulp.task('default', function () {
  141. return gulp.src('app/**/*.js')
  142. .pipe( rename( function (path) {
  143. path.dirname += '/js';
  144. path.basename += 'new';
  145. path.extname = '.js'
  146. }))
  147. .pipe( gulp.dest('dist') );
  148. });
  149. Hash:
  150. gulp.task('default', function () {
  151. return gulp.src('app/**/*.js')
  152. .pipe( rename( {
  153. dirname : '/js',
  154. basename : 'new',
  155. prefix : 'pre-',
  156. suffix : '.full',
  157. extname : '.js'
  158. } )
  159. .pipe( gulp.dest('dist') );
  160. });
  161. ------
  162. Gulp-uglify
  163. Модуль для минификации js файлов
  164. ------
  165. var gulp = require('gulp'),
  166. rename = require('gulp-rename'),
  167. uglify = require('gulp-uglify');
  168. gulp.task('default', function () {
  169. return gulp.src('app/**/*.js')
  170. .pipe( uglify() )
  171. .pipe( rename('main.min.js') )
  172. .pipe( gulp.dest('dist/js') );
  173. });
  174. ------
  175. Gulp-autoprefixer
  176. Модуль для управления браузерными префиксами
  177. ------
  178. var gulp = require('gulp'),
  179. autoprefixer = require('gulp-autoprefixer');
  180. gulp.task('default', function () {
  181. return gulp.src('app/**/*.css')
  182. .pipe( autoprefixer({
  183. browsers: ['last 2 versions'],
  184. cascade: false
  185. }))
  186. .pipe( gulp.dest('dist/js') );
  187. });
  188. ------
  189. Gulp-sass
  190. Модуль для компиляции sass файлов
  191. ------
  192. var gulp = require('gulp'),
  193. sass = require('gulp-sass');
  194. gulp.task('sass_task', function () {
  195. gulp.src('app/**/*.sass')
  196. .pipe( sass({outputStyle: 'compressed'}) )
  197. .pipe(gulp.dest('dist/css'));
  198. });
  199. ------
  200. Gulp-uncss
  201. Модуль для оптимизации css файлов, на основе использования в html
  202. ------
  203. var gulp = require('gulp'),
  204. uncss = require('gulp-uncss');
  205. gulp.task('sass_task', function () {
  206. gulp.src('app/**/*.css')
  207. .pipe( uncss({ html: [ 'app/index.html' ] })
  208. )
  209. .pipe(gulp.dest('dist/css'));
  210. });
  211. ------
  212. Gulp-imagemin
  213. Модуль для сжатия изображений
  214. ------
  215. var gulp = require('gulp'),
  216. imagemin = require('gulp-imagemin');
  217. gulp.task('imagemin_task', function () {
  218. gulp.src('app/img/**/*')
  219. .pipe( imagemin( {
  220. progressive: true,
  221. interlaced: true
  222. } )
  223. .pipe(gulp.dest('dist/css'));
  224. ) );
  225. });
  226. ------
  227. Del
  228. Модуль для удаления папок и файлов
  229. ------
  230. var del = require('del');
  231. del(['tmp/*.js', '!tmp/unicorn.js'], function (err,
  232. paths) {
  233. console.log('Deleted files/folders:\n', paths.
  234. join('\n'));
  235. });
  236. ------
  237. Gulp-util
  238. Модуль утилит
  239. ------
  240. var gutil = require('gulp-util');
  241. gutil.log('stuff happened', 'Really it did', gutil.
  242. colors.magenta('123'));
  243. ------
  244. Vinyl-ftp
  245. Модуль для работы по ftp
  246. ------
  247. var gulp = require('gulp'),
  248. gutil = require('gulp-util'),
  249. ftp = require('vinyl-ftp');
  250. gulp.task('deploy', function () {
  251. var conn = ftp.create({
  252. host: 'your_host',
  253. user: 'your_user',
  254. password: 'your_password',
  255. parallel: 10,
  256. log: gutil.log
  257. });
  258. var globs = [
  259. 'dist/**/*'
  260. ];
  261. return gulp.src(globs, { base: 'dist/', buffer:
  262. false})
  263. .pipe(conn.dest('public_html/'));
  264. });
  265. ------
  266. Browser-sync
  267. Модуль для синхронизации с браузером
  268. ------
  269. var gulp = require('gulp'),
  270. browserSync = require('browser-sync');
  271. gulp.task('browser_sync', function () {
  272. browserSync({
  273. port: 9000,
  274. open: true,
  275. notify: false,
  276. server: './app'
  277. });
  278. });
  279. ------
  280. Gulp-useref
  281. Модуль для конкатенации стилей и скриптов через парсинг спец. блоков
  282. ------
  283. Спец. блок
  284. <html>
  285. <head>
  286. <!-- build:css css/combined.css -->
  287. <link href="css/one.css" rel="stylesheet">
  288. <link href="css/two.css" rel="stylesheet">
  289. <!-- endbuild -->
  290. </head>
  291. <body>
  292. <!-- build:js scripts/combined.js -->
  293. <script type="text/javascript" src="scripts/one.
  294. js"></script>
  295. <script type="text/javascript" src="scripts/two.
  296. js"></script>
  297. <!-- endbuild -->
  298. </body>
  299. </html>
  300. 38
  301. Использование:
  302. var gulp = require('gulp'),
  303. useref = require('gulp-useref');
  304. gulp.task('useref_task', function () {
  305. var assets = useref.assets();
  306. gulp.src('app/*.html')
  307. .pipe( assets )
  308. .pipe( assets.restore() )
  309. .pipe( useref() )
  310. .pipe(gulp.dest('dist'));
  311. });
  312. useref (options)
  313. - options - объект настроек
  314. Результат:
  315. <html>
  316. <head>
  317. <link href="css/combined.css" rel="stylesheet">
  318. </head>
  319. <body>
  320. <script type="text/javascript" src="scripts/combined.
  321. js"></script>
  322. </body>
  323. </html>
  324. ------
  325. Wiredep
  326. Модуль для автоподключения bower компонентов через спец. блоки
  327. ------
  328. Спец. блок
  329. <html>
  330. <head>
  331. <!-- bower:css -->
  332. <!-- endbower -->
  333. </head>
  334. <body>
  335. <!-- bower:js -->
  336. <!-- endbower -->
  337. </body>
  338. </html>
  339. Использование:
  340. var gulp = require('gulp'),
  341. wiredep = require('wiredep').stream;
  342. gulp.task('wiredep_task', function () {
  343. gulp.src('app/templates/*.html')
  344. .pipe( wiredep ({
  345. ignorePath: /^(\.\.\/)*\.\./
  346. 40
  347. }) )
  348. .pipe(gulp.dest('app/temp/templates'));
  349. });
  350. wiredep (options)
  351. - options - объект настроек
  352. Так же можно работать и с jade файлами:
  353. gulp.task('wiredep_jade', function () {
  354. gulp.src('app/templates/*.jade')
  355. .pipe( wiredep ({
  356. ignorePath: /^(\.\.\/)*\.\./
  357. }) )
  358. .pipe(gulp.dest('app/temp/templates'));
  359. });
  360. Пропишем в самом jade файле
  361. doctype html
  362. html(lang='ru-RU')
  363. head
  364. // bower:css
  365. // endbower
  366. script(src='bower/modernizr/modernizr.js')
  367. body
  368. // bower:js
  369. // endbower
  370. 41
  371. modernizr.js лучше подключить вручную т.к. он должен быть в head
  372. Wiredep автоматически определит какие файлы в какой
  373. последовательности необходимо подключать. Чтобы указать другие файлы
  374. (например чтобы подключить .min файл) необходимо в нашем bower.json
  375. файле указать следующее:
  376. {
  377. “overrides” : {
  378. “qtip2” : {
  379. “main” : [
  380. “./jquery.qtip.min.js” ,
  381. “./jquery.qtip.min.css”
  382. ],
  383. “dependencies” : {
  384. “jquery” : “>=1.6.0”
  385. }
  386. }
  387. }
  388. }
  389. main - какие файлы подключать
  390. dependencies - зависимости
  391. ------
  392.  
  393.  
  394. Gulp Blacklist
  395. ------
  396. Нерекомендуемые модули (ссылка на полный список)
  397. gulp-clean use the `del` module
  398. gulp-browserify use the browserify module directly
  399. gulp-rimraf use the `del` module
  400. gulp-image-optimization duplicate of gulp-imagemin
  401. gulp-bower use the bower module directly
  402. gulp-php use PHP directly through gulp-spawn or
  403. ChildProcess.spawn()
  404. gulp-tinypng uses fs to create a temp .gulp folder
  405. gulp-css duplicate of gulp-minify-css
  406. gulp-cssmin duplicate of gulp-minify-css
  407. gulp-clean-old duplicate of gulp-clean
  408. gulp-if-else duplicate of gulp-if
  409. gulp-prettify duplicate of gulp-html-prettify
  410. ------
  411. ------
  412. ------
  413. ------
  414. ------
  415. ------
  416. ------
  417. ------
  418. ------
  419. ------
Add Comment
Please, Sign In to add comment