build.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // const typescript = require('@rollup/plugin-typescript');
  2. const typescript = require('rollup-plugin-typescript2');
  3. const rollup = require('rollup');
  4. const path = require('path');
  5. const processs = require('process');
  6. const chalk = require('chalk');
  7. const progress = require('./progress');
  8. const UglifyJS = require('uglify-js');
  9. const fs = require('fs');
  10. function current() {
  11. return (new Date()).toLocaleString();
  12. }
  13. const inputOption = {
  14. input: path.resolve(__dirname, '../index.ts'),
  15. plugins: [typescript({
  16. tsconfigOverride: {
  17. compilerOptions: {
  18. // Rollup don't use CommonJS by default.
  19. module: 'ES2015',
  20. sourceMap: true,
  21. // Use the esm d.ts
  22. declaration: false
  23. }
  24. }
  25. }), progress({
  26. scope: {
  27. total: 0
  28. }
  29. })]
  30. };
  31. const outputOption = {
  32. format: 'umd',
  33. file: path.resolve(__dirname, '../dist/zrender.js'),
  34. sourcemap: true,
  35. name: 'zrender'
  36. };
  37. function minify(outPath) {
  38. const fileMinPath = outPath.replace(/.js$/, '.min.js');
  39. const code = fs.readFileSync(outPath, 'utf-8');
  40. const uglifyResult = UglifyJS.minify(code);
  41. if (uglifyResult.error) {
  42. throw new Error(uglifyResult.error);
  43. }
  44. fs.writeFileSync(fileMinPath, uglifyResult.code, 'utf-8');
  45. }
  46. if (processs.argv.includes('--watch')) {
  47. const watcher = rollup.watch({
  48. ...inputOption,
  49. output: [outputOption],
  50. watch: {
  51. clearScreen: true
  52. }
  53. });
  54. watcher.on('event', event => {
  55. switch(event.code) {
  56. // case 'START':
  57. // console.log(chalk.green('Begin to watch'));
  58. // break;
  59. case 'BUNDLE_START':
  60. console.log(
  61. chalk.gray(current()),
  62. chalk.blue('File changed. Begin to bundle')
  63. );
  64. break;
  65. case 'BUNDLE_END':
  66. console.log(
  67. chalk.gray(current()),
  68. chalk.green('Finished bundle')
  69. );
  70. break;
  71. case 'ERROR':
  72. console.log(
  73. chalk.gray(current()),
  74. chalk.red(event.error)
  75. );
  76. break;
  77. }
  78. });
  79. }
  80. else {
  81. rollup.rollup({
  82. ...inputOption
  83. }).then(bundle => {
  84. bundle.write(outputOption).then(function () {
  85. if (process.argv.indexOf('--minify') >= 0) {
  86. minify(outputOption.file);
  87. }
  88. });
  89. });
  90. }