PageRenderTime 59ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/gulpfile.js

https://bitbucket.org/fxmedia/klm-replylive
JavaScript | 273 lines | 207 code | 37 blank | 29 comment | 0 complexity | c4b5ca9974d83634358db5f83ffb8dec MD5 | raw file
  1. var gulp = require('gulp'),
  2. // sass
  3. sass = require('gulp-sass'),
  4. autoprefix = require('gulp-autoprefixer'),
  5. sourcemaps = require('gulp-sourcemaps'),
  6. // js
  7. uglify = require('gulp-uglify'),
  8. webpack = require('webpack-stream'),//require('gulp-webpack'),
  9. webpack2 = require('webpack');
  10. // images
  11. imagemin = require('gulp-imagemin'),
  12. // utils
  13. plumber = require('gulp-plumber'),
  14. rename = require('gulp-rename'),
  15. replace = require('gulp-replace'),
  16. env = require('dotenv').config({path: './.env'}).parsed,
  17. //del = require('del'),
  18. // minify_css = require('gulp-minify-css'),
  19. path = require('path');
  20. console.log('starting gulp with env:');
  21. var paths = {
  22. // watch
  23. WATCH_SASS_PATH_BACKEND: './resources/assets/sass/backend/**/*.scss',
  24. WATCH_SASS_PATH_FRONTEND: './resources/assets/sass/frontend/**/*.scss',
  25. WATCH_JS_PATH_BACKEND: './resources/assets/js/backend/**/*.{js,jsx}',
  26. WATCH_JS_PATH_FRONTEND: './resources/assets/js/frontend/**/*.{js,jsx}',
  27. WATCH_JS_PATH_LOADER: './resources/assets/js/loader/**/*.{js,jsx}',
  28. WATCH_JS_PATH_SCANNER: './resources/assets/js/scanner/**/*.{js,jsx}',
  29. WATCH_IMAGES_PATH: './resources/assets/images/**/*.*',
  30. WATCH_CSS_PATH: './resources/assets/css/**/*.css', // css library files which are being used by the backend. we might want to get rid of these in the future
  31. WATCH_FONTS_PATH: './resources/assets/fonts/',
  32. WATCH_ROOT_PATH: './resources/assets/root_files/',
  33. // Destinations
  34. DEST_CSS: './public/css',
  35. DEST_JS: './public/js',
  36. DEST_JS_BACKEND: './public/js/backend',
  37. DEST_IMAGES: './public/images',
  38. DEST_FONTS: './public/fonts',
  39. DEST_ROOT: './public',
  40. // webpack
  41. WP_ENTRY_USER: './resources/assets/js/frontend/user.js',
  42. WP_ENTRY_DISPLAY: './resources/assets/js/frontend/display.js'
  43. };
  44. var webpack_conf_frontend = {
  45. entry: {
  46. polyfill: "babel-polyfill",
  47. user: paths.WP_ENTRY_USER,
  48. display: paths.WP_ENTRY_DISPLAY
  49. },
  50. output: {
  51. filename: '[name].js'
  52. },
  53. devtool: 'eval',
  54. module: {
  55. rules: [
  56. { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
  57. ]
  58. }
  59. };
  60. var webpack_conf_frontend_dist = {
  61. entry: {
  62. polyfill: "babel-polyfill",
  63. user: paths.WP_ENTRY_USER,
  64. display: paths.WP_ENTRY_DISPLAY
  65. },
  66. output: {
  67. filename: '[name].js'
  68. },
  69. module: {
  70. rules: [
  71. { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
  72. ]
  73. },
  74. plugins: [
  75. new webpack2.DefinePlugin({
  76. 'process.env.NODE_ENV': JSON.stringify('production')
  77. }),
  78. new webpack2.optimize.UglifyJsPlugin()
  79. ]
  80. };
  81. var webpack_conf_backend = {
  82. entry: {
  83. polyfill: "babel-polyfill",
  84. main: './resources/assets/js/backend/main.js'
  85. },
  86. output: {
  87. filename: '[name].js'
  88. },
  89. module: {
  90. rules: [
  91. { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
  92. ]
  93. },
  94. plugins: [
  95. new webpack2.DefinePlugin({
  96. 'process.env.NODE_ENV': JSON.stringify('production')
  97. }),
  98. new webpack2.optimize.UglifyJsPlugin()
  99. ]
  100. };
  101. //_____General_Functions_______________________________________________________________________________________________/
  102. var replaceCssPlaceholders = function(){
  103. return replace('[[!!BASE_PATH!!]]', env.APP_URL);
  104. };
  105. //_____Build_Dev_Tasks_________________________________________________________________________________________________/
  106. gulp.task('build_css_dev_backend', function(){
  107. gulp.src(paths.WATCH_SASS_PATH_BACKEND)
  108. .pipe(plumber())
  109. .pipe(sourcemaps.init())
  110. .pipe(sass())
  111. .pipe(autoprefix(['last 1 version', '> 1%', 'ie 9']))
  112. .pipe(replaceCssPlaceholders())
  113. .pipe(sourcemaps.write())
  114. .pipe(gulp.dest(paths.DEST_CSS))
  115. });
  116. gulp.task('build_css_dev_frontend', function(){
  117. gulp.src(paths.WATCH_SASS_PATH_FRONTEND)
  118. .pipe(plumber())
  119. .pipe(sourcemaps.init())
  120. .pipe(sass())
  121. .pipe(autoprefix(['last 1 version', '> 1%', 'ie 9']))
  122. .pipe(replaceCssPlaceholders())
  123. .pipe(sourcemaps.write())
  124. .pipe(gulp.dest(paths.DEST_CSS))
  125. });
  126. gulp.task('build_js_dev_backend', function(){
  127. gulp.src(paths.WATCH_JS_PATH_BACKEND)
  128. .pipe(plumber())
  129. //.pipe(webpack(webpack_conf_backend))
  130. .pipe(gulp.dest(paths.DEST_JS_BACKEND));
  131. });
  132. gulp.task('build_js_dev_frontend', function(){
  133. gulp.src(paths.WATCH_JS_PATH_FRONTEND)
  134. .pipe(webpack(webpack_conf_frontend))
  135. .pipe(gulp.dest(paths.DEST_JS));
  136. });
  137. gulp.task('build_js_dev_loader', function(){
  138. gulp.src(paths.WATCH_JS_PATH_LOADER)
  139. .pipe(plumber())
  140. .pipe(gulp.dest(paths.DEST_JS));
  141. });
  142. gulp.task('build_js_dev_scanner', function(){
  143. gulp.src(paths.WATCH_JS_PATH_SCANNER)
  144. .pipe(plumber())
  145. .pipe(gulp.dest(paths.DEST_JS));
  146. });
  147. gulp.task('place_images', function(){
  148. gulp.src(paths.WATCH_IMAGES_PATH)
  149. .pipe(gulp.dest(paths.DEST_IMAGES));
  150. });
  151. gulp.task('place_css', function(){
  152. gulp.src(paths.WATCH_CSS_PATH)
  153. .pipe(plumber())
  154. .pipe(gulp.dest(paths.DEST_CSS));
  155. });
  156. //_____Build_Dist_Tasks________________________________________________________________________________________________/
  157. gulp.task('place_root_files', function(){
  158. gulp.src([paths.WATCH_ROOT_PATH+'**/*.*', '!'+ paths.WATCH_ROOT_PATH +'htaccess.txt'])
  159. .pipe(plumber())
  160. .pipe(gulp.dest(paths.DEST_ROOT));
  161. gulp.src(paths.WATCH_ROOT_PATH+'htaccess.txt')
  162. .pipe(rename('.htaccess'))
  163. .pipe(gulp.dest('public/'));
  164. });
  165. gulp.task('place_font_files', function(){
  166. gulp.src([paths.WATCH_FONTS_PATH+'**/*.**'])
  167. .pipe(plumber())
  168. .pipe(gulp.dest(paths.DEST_FONTS));
  169. });
  170. gulp.task('build_css_dist', function(){
  171. gulp.src(paths.WATCH_SASS_PATH_BACKEND)
  172. .pipe(sass({outputStyle: 'compressed'}))
  173. .pipe(autoprefix(['last 1 version', '> 1%', 'ie 9']))
  174. .pipe(replaceCssPlaceholders())
  175. .pipe(gulp.dest(paths.DEST_CSS));
  176. gulp.src(paths.WATCH_SASS_PATH_FRONTEND)
  177. .pipe(sass({outputStyle: 'compressed'}))
  178. .pipe(autoprefix(['last 1 version', '> 1%', 'ie 9']))
  179. .pipe(replaceCssPlaceholders())
  180. .pipe(gulp.dest(paths.DEST_CSS));
  181. });
  182. gulp.task('build_js_dist', function(){
  183. gulp.src(paths.WATCH_JS_PATH_BACKEND)
  184. .pipe(plumber())
  185. //.pipe(webpack(webpack_conf_backend))
  186. //.pipe(uglify()) // uglify here doesn't work??
  187. .pipe(gulp.dest(paths.DEST_JS_BACKEND));
  188. gulp.src(paths.WATCH_JS_PATH_FRONTEND)
  189. .pipe(webpack(webpack_conf_frontend_dist))
  190. .pipe(uglify())
  191. .pipe(gulp.dest(paths.DEST_JS));
  192. gulp.src(paths.WATCH_JS_PATH_LOADER)
  193. .pipe(plumber())
  194. .pipe(uglify())
  195. .pipe(gulp.dest(paths.DEST_JS));
  196. gulp.src(paths.WATCH_JS_PATH_SCANNER)
  197. .pipe(plumber())
  198. .pipe(uglify())
  199. .pipe(gulp.dest(paths.DEST_JS));
  200. });
  201. gulp.task('place_and_minify_images', function(){
  202. gulp.src(paths.WATCH_IMAGES_PATH)
  203. .pipe(imagemin())
  204. .pipe(gulp.dest(paths.DEST_IMAGES));
  205. });
  206. gulp.task('place_and_uglify_css', function(){
  207. gulp.src(paths.WATCH_CSS_PATH)
  208. .pipe(plumber())
  209. //.pipe(minify_css({compatibility: 'ie9'})) // do we want an uglifier here?
  210. .pipe(gulp.dest(paths.DEST_CSS));
  211. });
  212. //_____Dist_Tasks______________________________________________________________________________________________________/
  213. gulp.task('clean', function(){
  214. //return del( paths.CLEANUP_PATHS );
  215. });
  216. gulp.task('build_dist', ['place_root_files', 'place_font_files', 'build_css_dist', 'build_js_dist', 'place_and_minify_images', 'place_and_uglify_css']);
  217. //_____Dev_Tasks______________________________________________________________________________________________________/
  218. gulp.task('build_dev', ['place_root_files', 'place_font_files','build_css_dev_backend', 'build_css_dev_frontend', 'build_js_dev_backend', 'build_js_dev_frontend', 'build_js_dev_loader', 'build_js_dev_scanner','place_images', 'place_css']);
  219. gulp.task('watch', function(){
  220. gulp.watch(paths.WATCH_ROOT_PATH, ['place_root_files']);
  221. gulp.watch(paths.WATCH_FONTS_PATH, ['place_font_files']);
  222. gulp.watch(paths.WATCH_SASS_PATH_BACKEND, ['build_css_dev_backend']);
  223. gulp.watch(paths.WATCH_SASS_PATH_FRONTEND, ['build_css_dev_frontend']);
  224. gulp.watch(paths.WATCH_JS_PATH_BACKEND, ['build_js_dev_backend']);
  225. gulp.watch(paths.WATCH_JS_PATH_FRONTEND, ['build_js_dev_frontend']);
  226. gulp.watch(paths.WATCH_JS_PATH_LOADER, ['build_js_dev_loader']);
  227. gulp.watch(paths.WATCH_JS_PATH_SCANNER, ['build_js_dev_scanner']);
  228. gulp.watch(paths.WATCH_IMAGES_PATH, ['place_images']);
  229. gulp.watch(path.WATCH_CSS_PATH, ['place_css']);
  230. });
  231. //_____Public_Tasks____________________________________________________________________________________________________/
  232. gulp.task('dev', ['build_dev', 'watch']);
  233. gulp.task('dist', ['clean', 'build_dist']);
  234. //gulp.task('server', ['node_server']);
  235. gulp.task('default', ['watch']);