Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.88 KB | None | 0 0
  1. var gulp = require('gulp');
  2. var browserSync = require('browser-sync').create();
  3. var sass = require('gulp-sass');
  4. var plumber = require('gulp-plumber');
  5. var notify = require('gulp-notify');
  6. var sourcemaps = require('gulp-sourcemaps');
  7. var autoprefixer = require('gulp-autoprefixer');
  8. var del = require('del');
  9. var runSequence = require('run-sequence');
  10. var watch = require('gulp-watch');
  11.  
  12. // SVG sprites
  13. var svgmin = require('gulp-svgmin');
  14. var cheerio = require('gulp-cheerio');
  15. var replace = require('gulp-replace');
  16. var svgSprite = require('gulp-svgsprite');
  17. var rename = require('gulp-rename');
  18.  
  19. // Images
  20. var imagemin = require('gulp-imagemin');
  21. var pngquant = require('imagemin-pngquant');
  22.  
  23. // HTML, CSS, JS
  24. var usemin = require('gulp-usemin');
  25. var htmlclean = require('gulp-htmlclean');
  26. var uglify = require("gulp-uglify"); // Сжатие JS
  27. var minifyCss = require("gulp-minify-css"); // Сжатие CSS
  28. var rev = require('gulp-rev');
  29.  
  30. gulp.task('server', function() {
  31. browserSync.init({
  32. server: { baseDir: './build/'}
  33. });
  34.  
  35. watch('./src/sass/**/*.sass', function(){
  36. gulp.start('styles');
  37. });
  38.  
  39. watch('./src/js/**/*.js', function(){
  40. gulp.start('copy:js');
  41. });
  42.  
  43. watch('./src/libs/**/*.*', function(){
  44. gulp.start('copy:libs-local');
  45. });
  46.  
  47. watch(['./src/img/**/*.*', '!./src/img/svg-for-sprites/**/*.svg'], function(){
  48. gulp.start('copy:img');
  49. });
  50.  
  51. watch('./src/img/svg/*.svg', function(){
  52. gulp.start('svg');
  53. });
  54. });
  55.  
  56. gulp.task('server:docs', function() {
  57. browserSync.init({
  58. server: { baseDir: './docs/'}
  59. });
  60. });
  61.  
  62. gulp.task('styles', function() {
  63. return gulp.src('./src/sass/main.sass')
  64. // .pipe(plumber({
  65. // errorHandler: notify.onError(function(err){
  66. // return {
  67. // title: 'Styles',
  68. // message: err.message
  69. // }
  70. // })
  71. // }))
  72. // .pipe(sourcemaps.init())
  73. .pipe(sass())
  74. .pipe(autoprefixer({
  75. browsers: ['last 15 versions'],
  76. cascade: false
  77. }))
  78. .pipe(sourcemaps.write())
  79. .pipe(gulp.dest('./build/css'))
  80. .pipe(browserSync.stream());
  81. });
  82.  
  83. gulp.task('svg', function() {
  84. return gulp.src('./src/img/svg-for-sprites/*.svg')
  85. .pipe(svgmin({
  86. js2svg: {
  87. pretty: true
  88. }
  89. }))
  90. .pipe(cheerio({
  91. run: function($) {
  92. $('[fill]').removeAttr('fill');
  93. $('[stroke]').removeAttr('stroke');
  94. $('[style]').removeAttr('style');
  95. },
  96. parserOptions: { xmlMode: true }
  97. }))
  98. .pipe(replace('>', '>'))
  99. .pipe(svgSprite({
  100. mode: {
  101. symbol: {
  102. sprite: "sprite.svg"
  103. }
  104. }
  105. }))
  106. .pipe(rename('sprite.svg'))
  107. .pipe(gulp.dest('./build/img'));
  108. });
  109.  
  110. gulp.task('copy:libs', function(callback) {
  111.  
  112. gulp.src('node_modules/jquery/dist/**/*.*')
  113. .pipe(gulp.dest('./build/libs/jquery'));
  114.  
  115. gulp.src('node_modules/bootstrap-4-grid/css/**/*.*')
  116. .pipe(gulp.dest('./build/libs/bootstrap-4-grid'))
  117.  
  118. gulp.src('node_modules/normalize.css/normalize.css')
  119. .pipe(gulp.dest('./build/libs/normalize-css/'))
  120.  
  121. callback()
  122. });
  123.  
  124. gulp.task('copy:libs-local', function(callback) {
  125. gulp.src('./src/libs/**/*.*')
  126. .pipe(gulp.dest('./build/libs/'))
  127. callback()
  128. });
  129.  
  130. gulp.task('copy:img', function() {
  131. return gulp.src(['./src/img/**/*.*', '!./src/img/svg-for-sprites/**/*.svg'])
  132. .pipe(gulp.dest('./build/img'))
  133. .pipe(browserSync.stream());
  134. });
  135.  
  136. gulp.task('copy:js', function() {
  137. return gulp.src('./src/js/**/*.*')
  138. .pipe(gulp.dest('./build/js'))
  139. .pipe(browserSync.stream());
  140. });
  141.  
  142. gulp.task('clean:build', function() {
  143. return del('./build');
  144. });
  145.  
  146. gulp.task('copy:build:files', function(callback) {
  147. gulp.src('./src/php/**/*.*')
  148. .pipe(gulp.dest('./build/php/'))
  149. gulp.src('./src/files/**/*.*')
  150. .pipe(gulp.dest('./build/files/'))
  151. gulp.src('./src/fonts/**/*.*')
  152. .pipe(gulp.dest('./build/fonts/'))
  153. callback()
  154. });
  155.  
  156. gulp.task('default', function(callback){
  157. runSequence(
  158. 'clean:build',
  159. ['styles', 'svg', 'copy:libs', 'copy:libs-local', 'copy:img', 'copy:js'],
  160. 'server',
  161. callback
  162. )
  163. });
  164.  
  165.  
  166. /* ------------------------------------
  167. DOCS TASKS
  168. ------------------------------------ */
  169.  
  170. gulp.task('clean:docs', function() {
  171. return del('./docs');
  172. });
  173.  
  174. gulp.task('img:dist', function() {
  175. return gulp.src('./build/img/**/*.*')
  176. .pipe(imagemin({
  177. progressive: true,
  178. // optimizationLevel: 5,
  179. svgoPlugins: [{removeViewBox: false}],
  180. use: [pngquant()],
  181. interlaced: true
  182. }))
  183. .pipe(gulp.dest('./docs/img'));
  184. });
  185.  
  186. gulp.task('copy:docs:files', function(callback) {
  187. gulp.src('./src/php/**/*.*')
  188. .pipe(gulp.dest('./dist/php/'))
  189. gulp.src('./src/files/**/*.*')
  190. .pipe(gulp.dest('./dist/files/'))
  191. gulp.src('./src/fonts/**/*.*')
  192. .pipe(gulp.dest('./docs/fonts/'))
  193. callback()
  194. });
  195.  
  196. gulp.task('html:docs', function() {
  197. return gulp.src('./build/**/*.html')
  198. .pipe(usemin({
  199. // <!-- build:cssVendor css/vendor.css --> <!-- endbuild -->
  200. cssVendor: [function() { return rev() }, function() { return minifyCss() } ],
  201. cssCustom: [function() { return rev() }, function() { return minifyCss() } ],
  202. jsLibs: [function() { return rev() }, function() { return uglify() } ],
  203. jsVendor: [function() { return rev() }, function() { return uglify() } ],
  204. jsMain: [function() { return rev() }, function() { return uglify() } ]
  205. }))
  206. .pipe(htmlclean())
  207. .pipe(gulp.dest('./docs/'));
  208. });
  209.  
  210. gulp.task('docs', function(callback){
  211. runSequence(
  212. 'clean:build',
  213. ['styles', 'svg', 'copy:libs', 'copy:libs-local', 'copy:img', 'copy:js'],
  214. 'clean:docs',
  215. ['img:dist', 'copy:docs:files', 'html:docs' ],
  216. 'server:docs',
  217. callback
  218. )
  219. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement