Guest User

Untitled

a guest
Feb 18th, 2018
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. import chalk from 'chalk';
  2.  
  3. /**
  4. |--------------------------------------------------------------------------
  5. | gulp browser-sync
  6. |--------------------------------------------------------------------------
  7. *
  8. * Browser Sync
  9. * @description Refresh the Brwoser after File Change.
  10. * Combined with webpack for HMR or Content Reload
  11. *
  12. * @package generator-lilly
  13. * @author Martin Herweg <info@martinherweg.de>
  14. */
  15.  
  16. /*
  17. |--------------------------------------------------------------------------
  18. | browser-sync.js
  19. |--------------------------------------------------------------------------
  20. */
  21.  
  22. import config from '../../package.json';
  23. import gulp from 'gulp';
  24. import browserSync from 'browser-sync';
  25. import webpack from 'webpack';
  26. import webpackDevMiddleware from 'webpack-dev-middleware';
  27. import webpackHotMiddleware from 'webpack-hot-middleware';
  28. import webpackSettings from '../../webpack/webpack.config.babel';
  29.  
  30. import yargs from 'yargs';
  31. const argv = yargs.argv;
  32. const env = argv.env || 'development';
  33.  
  34. const browserSyncTask = () => {
  35. if(env !== 'browser-sync') return;
  36. const bundler = webpack(webpackSettings);
  37. browserSync.init({
  38. proxy: {
  39. target: config.proxy,
  40. ws: true,
  41. },
  42. ghostMode: {
  43. clicks: true,
  44. forms: true,
  45. scroll: false,
  46. },
  47. logLevel: 'info',
  48. watchTask: true,
  49. open: false,
  50. stream: true,
  51. ui: {
  52. port: 8090,
  53. },
  54. middleware: [
  55. webpackDevMiddleware(bundler, {
  56. quiet: true,
  57. path: webpackSettings.output.path,
  58. publicPath: webpackSettings.output.publicPath,
  59. stats: {
  60. colors: true,
  61. },
  62. }),
  63. webpackHotMiddleware(bundler, {
  64. log: () => {},
  65. }),
  66. ],
  67. files: [
  68. {
  69. match: [
  70. `${config.srcPaths.views}**/*.{php,html,twig}`,
  71. `${config.distPaths.css}**/*.css`,
  72. `${config.distPaths.images.base}**/*.{jpg,png,gif,svg}`,
  73. ],
  74. fn: function(event, file) {
  75. console.log(chalk`{green Changed ${file}}`);
  76. console.log(chalk`{red Event ${event}}`);
  77. if (event === 'change' && file.includes('.css')) {
  78. browserSync.reload('*.css');
  79. }
  80. if (event === 'change' && (file.includes('.php') || file.includes('.html') || file.includes('.twig'))) {
  81. browserSync.reload();
  82. }
  83. },
  84. },
  85. ],
  86. });
  87. };
  88.  
  89.  
  90. const browserSyncReload = () => {
  91. browserSync.reload();
  92. };
  93.  
  94.  
  95. gulp.task('browser-sync', browserSyncTask);
  96. gulp.task('bs-reload', browserSyncReload);
  97.  
  98. export { browserSyncTask, browserSyncReload };
Add Comment
Please, Sign In to add comment