You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
3.9 KiB

  1. /*******************************
  2. Build Task
  3. *******************************/
  4. var
  5. gulp = require('gulp'),
  6. // node dependencies
  7. fs = require('fs'),
  8. // gulp dependencies
  9. autoprefixer = require('gulp-autoprefixer'),
  10. chmod = require('gulp-chmod'),
  11. clone = require('gulp-clone'),
  12. flatten = require('gulp-flatten'),
  13. gulpif = require('gulp-if'),
  14. header = require('gulp-header'),
  15. less = require('gulp-less'),
  16. minifyCSS = require('gulp-minify-css'),
  17. plumber = require('gulp-plumber'),
  18. print = require('gulp-print'),
  19. rename = require('gulp-rename'),
  20. replace = require('gulp-replace'),
  21. rtlcss = require('gulp-rtlcss'),
  22. uglify = require('gulp-uglify'),
  23. // user config
  24. config = require('./config/user'),
  25. // install config
  26. tasks = require('./config/project/tasks'),
  27. install = require('./config/project/install'),
  28. // shorthand
  29. globs = config.globs,
  30. assets = config.paths.assets,
  31. output = config.paths.output,
  32. source = config.paths.source,
  33. banner = tasks.banner,
  34. comments = tasks.regExp.comments,
  35. log = tasks.log,
  36. settings = tasks.settings
  37. ;
  38. // add internal tasks (concat release)
  39. require('../collections/internal')(gulp);
  40. module.exports = function(callback) {
  41. var
  42. stream,
  43. compressedStream,
  44. uncompressedStream
  45. ;
  46. console.info('Building Semantic');
  47. if( !install.isSetup() ) {
  48. console.error('Cannot build files. Run "gulp install" to set-up Semantic');
  49. return;
  50. }
  51. // unified css stream
  52. stream = gulp.src(source.definitions + '**/' + globs.components + '.less')
  53. .pipe(plumber())
  54. .pipe(less(settings.less))
  55. .pipe(autoprefixer(settings.prefix))
  56. .pipe(flatten())
  57. ;
  58. // two concurrent streams from same source to concat release
  59. uncompressedStream = stream.pipe(clone());
  60. compressedStream = stream.pipe(clone());
  61. uncompressedStream
  62. .pipe(plumber())
  63. .pipe(replace(comments.variables.in, comments.variables.out))
  64. .pipe(replace(comments.large.in, comments.large.out))
  65. .pipe(replace(comments.small.in, comments.small.out))
  66. .pipe(replace(comments.tiny.in, comments.tiny.out))
  67. .pipe(replace(assets.source, assets.uncompressed))
  68. .pipe(header(banner, settings.header))
  69. .pipe(gulpif(config.hasPermission, chmod(config.permission)))
  70. .pipe(gulp.dest(output.uncompressed))
  71. .pipe(print(log.created))
  72. .on('end', function() {
  73. gulp.start('package uncompressed rtl css');
  74. })
  75. ;
  76. compressedStream = stream
  77. .pipe(plumber())
  78. .pipe(clone())
  79. .pipe(replace(assets.source, assets.compressed))
  80. .pipe(minifyCSS(settings.minify))
  81. .pipe(rename(settings.rename.minCSS))
  82. .pipe(header(banner, settings.header))
  83. .pipe(gulpif(config.hasPermission, chmod(config.permission)))
  84. .pipe(gulp.dest(output.compressed))
  85. .pipe(print(log.created))
  86. .on('end', function() {
  87. callback();
  88. gulp.start('package compressed rtl css');
  89. })
  90. ;
  91. // copy assets
  92. gulp.src(source.themes + '**/assets/**/' + globs.components + '?(s).*')
  93. .pipe(gulpif(config.hasPermission, chmod(config.permission)))
  94. .pipe(gulp.dest(output.themes))
  95. ;
  96. // copy source javascript
  97. gulp.src(source.definitions + '**/' + globs.components + '.js')
  98. .pipe(plumber())
  99. .pipe(flatten())
  100. .pipe(gulp.dest(output.uncompressed))
  101. .pipe(gulpif(config.hasPermission, chmod(config.permission)))
  102. .pipe(print(log.created))
  103. .pipe(uglify(settings.uglify))
  104. .pipe(rename(settings.rename.minJS))
  105. .pipe(header(banner, settings.header))
  106. .pipe(gulp.dest(output.compressed))
  107. .pipe(gulpif(config.hasPermission, chmod(config.permission)))
  108. .pipe(print(log.created))
  109. .on('end', function() {
  110. gulp.start('package compressed js');
  111. gulp.start('package uncompressed js');
  112. })
  113. ;
  114. };