gulpfile.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. const gulp = require('gulp');
  2. const connect = require('gulp-connect');
  3. const open = require('gulp-open');
  4. const header = require('gulp-header');
  5. const uglify = require('gulp-uglify');
  6. const sourcemaps = require('gulp-sourcemaps');
  7. const rollup = require('rollup-stream');
  8. const buble = require('rollup-plugin-buble');
  9. const source = require('vinyl-source-stream');
  10. const buffer = require('vinyl-buffer');
  11. const rename = require('gulp-rename');
  12. const modifyFile = require('gulp-modify-file');
  13. const pkg = require('./package.json');
  14. const date = (function date() {
  15. return {
  16. year: new Date().getFullYear(),
  17. month: ('January February March April May June July August September October November December').split(' ')[new Date().getMonth()],
  18. day: new Date().getDate(),
  19. };
  20. }());
  21. const banner = `
  22. /**
  23. * SSR Window ${pkg.version}
  24. * ${pkg.description}
  25. * ${pkg.homepage}
  26. *
  27. * Copyright ${date.year}, ${pkg.author}
  28. *
  29. * Licensed under ${pkg.license}
  30. *
  31. * Released on: ${date.month} ${date.day}, ${date.year}
  32. */
  33. `.trim();
  34. // UMD DIST
  35. function umd(cb) {
  36. const env = process.env.NODE_ENV || 'development';
  37. rollup({
  38. input: './src/ssr-window.js',
  39. plugins: [buble()],
  40. format: 'umd',
  41. name: 'ssrWindow',
  42. strict: true,
  43. sourcemap: env === 'development',
  44. banner,
  45. })
  46. .pipe(source('ssr-window.js', './src'))
  47. .pipe(buffer())
  48. .pipe(gulp.dest(`./${env === 'development' ? 'build' : 'dist'}/`))
  49. .on('end', () => {
  50. if (env === 'development') {
  51. if (cb) cb();
  52. return;
  53. }
  54. gulp.src('./dist/ssr-window.js')
  55. .pipe(sourcemaps.init())
  56. .pipe(uglify())
  57. .pipe(header(banner))
  58. .pipe(rename('ssr-window.min.js'))
  59. .pipe(sourcemaps.write('./'))
  60. .pipe(gulp.dest('./dist/'))
  61. .on('end', () => {
  62. if (cb) cb();
  63. });
  64. });
  65. }
  66. // ES MODULE DIST
  67. function es(cb) {
  68. const env = process.env.NODE_ENV || 'development';
  69. rollup({
  70. input: './src/ssr-window.js',
  71. plugins: [buble()],
  72. format: 'es',
  73. name: 'ssrWindow',
  74. strict: true,
  75. sourcemap: env === 'development',
  76. banner,
  77. })
  78. .pipe(source('ssr-window.js', './src'))
  79. .pipe(buffer())
  80. .pipe(rename('ssr-window.esm.js'))
  81. .pipe(gulp.dest(`./${env === 'development' ? 'build' : 'dist'}/`))
  82. .on('end', () => {
  83. if (cb) cb();
  84. });
  85. }
  86. gulp.task('build', (cb) => {
  87. let cbs = 0;
  88. umd(() => {
  89. cbs += 1;
  90. if (cbs === 2) cb();
  91. });
  92. es(() => {
  93. cbs += 1;
  94. if (cbs === 2) cb();
  95. });
  96. });
  97. gulp.task('demo', (cb) => {
  98. const env = process.env.NODE_ENV || 'development';
  99. gulp.src('./demo/index.html')
  100. .pipe(modifyFile((content) => {
  101. if (env === 'development') {
  102. return content
  103. .replace('../dist/dom7.min.js', '../build/dom7.js');
  104. }
  105. return content
  106. .replace('../build/dom7.js', '../dist/dom7.min.js');
  107. }))
  108. .pipe(gulp.dest('./demo/'))
  109. .on('end', () => {
  110. if (cb) cb();
  111. });
  112. });
  113. gulp.task('watch', () => {
  114. gulp.watch('./src/*.js', ['build']);
  115. });
  116. gulp.task('connect', () => connect.server({
  117. root: ['./'],
  118. livereload: true,
  119. port: '3000',
  120. }));
  121. gulp.task('open', () => gulp.src('./demo/index.html').pipe(open({ uri: 'http://localhost:3000/demo/index.html' })));
  122. gulp.task('server', ['watch', 'connect', 'open']);