gulpfile.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * @author oldj
  3. * @blog http://oldj.net
  4. */
  5. 'use strict';
  6. const fs = require('fs');
  7. const path = require('path');
  8. // const util = require('util');
  9. const exec = require('child_process').exec;
  10. const gulp = require('gulp');
  11. const beautify = require('js-beautify').js_beautify;
  12. const ELECTRON_VERSION = '1.4.8';
  13. gulp.task('ver', () => {
  14. let fn = path.join(__dirname, 'src', 'version.js');
  15. let version = require('./src/version').version;
  16. version[3]++;
  17. console.log(`version -> ${version.join('.')}`);
  18. let cnt = `exports.version = ${JSON.stringify(version)};`;
  19. fs.writeFileSync(fn, cnt, 'utf-8');
  20. // update package.json
  21. fn = './package.json';
  22. cnt = fs.readFileSync(fn);
  23. let d = JSON.parse(cnt);
  24. d.version = version.slice(0, 3).join('.');
  25. cnt = beautify(JSON.stringify(d), {indent_size: 2});
  26. fs.writeFileSync(fn, cnt, 'utf-8');
  27. });
  28. gulp.task('pack', () => {
  29. let version = require('./src/version').version;
  30. let v1 = version.slice(0, 3).join('.');
  31. let v2 = version[3];
  32. let cmds = `
  33. # for macOS
  34. electron-packager . 'SwitchHosts!' --platform=darwin --arch=x64 --version=${ELECTRON_VERSION} --overwrite --asar=true --prune --icon=../assets/app.icns --ignore=node_modules/.bin --ignore=.git --ignore=dist --ignore=node_modules/electron-* --out=dist --app-version=${v1} --build-version=${v2}
  35. cp ../assets/Credits.rtf dist/SwitchHosts\!-darwin-x64/SwitchHosts\!.app/Contents/Resources/en.lproj
  36. # for windows x64
  37. electron-packager . 'SwitchHosts!' --platform=win32 --arch=x64 --version=${ELECTRON_VERSION} --overwrite --asar=true --prune --icon=../assets/app.ico --ignore=node_modules/.bin --ignore=.git --ignore=dist --ignore=node_modules/electron-* --out=dist --app-version=${v1} --build-version=${v2}
  38. # for windows ia32
  39. electron-packager . 'SwitchHosts!' --platform=win32 --arch=ia32 --version=${ELECTRON_VERSION} --overwrite --asar=true --prune --icon=../assets/app.ico --ignore=node_modules/.bin --ignore=.git --ignore=dist --ignore=node_modules/electron-* --out=dist --app-version=${v1} --build-version=${v2}
  40. # for linux x86_64
  41. electron-packager . 'SwitchHosts!' --platform=linux --arch=x64 --version=${ELECTRON_VERSION} --overwrite --asar=true --prune --icon=../assets/app.ico --ignore=node_modules/.bin --ignore=.git --ignore=dist --ignore=node_modules/electron-* --out=dist --app-version=${v1} --build-version=${v2}
  42. `;
  43. console.log(`start packing, v: ${v1}.${v2} ..`);
  44. console.log(cmds);
  45. exec(cmds, (error, stdout, stderr) => {
  46. console.log('end pack.');
  47. if (error) {
  48. console.error(`exec error: ${error}`);
  49. }
  50. // if (stdout) console.log(`${stdout}`);
  51. // if (stderr) console.log(`${stderr}`);
  52. });
  53. });
  54. gulp.task('zip', () => {
  55. let version = require('./src/version').version;
  56. let v = version.join('.');
  57. let cmds = `
  58. cd ./dist
  59. rm -f ./SwitchHosts-*.zip
  60. zip -ry SwitchHosts-macOS-x64_v${v}.zip ./SwitchHosts\\!-darwin-x64/SwitchHosts\\!.app
  61. zip -ry SwitchHosts-win32-x64_v${v}.zip ./SwitchHosts\\!-win32-x64
  62. zip -ry SwitchHosts-win32-ia32_v${v}.zip ./SwitchHosts\\!-win32-ia32
  63. zip -ry SwitchHosts-linux-x64_v${v}.zip ./SwitchHosts\\!-linux-x64
  64. cd ..
  65. `;
  66. console.log(`start zip ..`);
  67. exec(cmds, (error, stdout, stderr) => {
  68. console.log('end zip.');
  69. if (error) {
  70. console.error(`exec error: ${error}`);
  71. }
  72. // if (stdout) console.log(`${stdout}`);
  73. // if (stderr) console.log(`${stderr}`);
  74. });
  75. });
  76. gulp.task('default', () => {
  77. gulp.start('ver');
  78. gulp.watch([
  79. './main.js',
  80. './index.html',
  81. './src/**/*.*',
  82. '!./src/version.js'
  83. ], ['ver']);
  84. });