BuildConfig.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { normalize } from 'path';
  2. import { WinConfig } from './WinConfig';
  3. import { MacConfig } from './MacConfig';
  4. import { LinuxConfig } from './LinuxConfig';
  5. export class BuildConfig {
  6. public nwVersion: string = 'lts';
  7. public nwFlavor: string = 'normal';
  8. public output: string = './dist/';
  9. public packed: boolean = false;
  10. public targets: string[] = [];
  11. public files: string[] = [ '**/*' ];
  12. public excludes: string[] = [];
  13. public win: WinConfig = new WinConfig();
  14. public mac: MacConfig = new MacConfig();
  15. public linux: LinuxConfig = new LinuxConfig();
  16. public appId: string = undefined;
  17. public ffmpegIntegration: boolean = false;
  18. constructor(pkg: any = {}) {
  19. const options = pkg.build ? pkg.build : {};
  20. Object.keys(this).map((key) => {
  21. if(options[key] !== undefined) {
  22. switch(key) {
  23. case 'win':
  24. this.win = new WinConfig(options.win);
  25. break;
  26. case 'mac':
  27. this.mac = new MacConfig(options.mac);
  28. break;
  29. case 'linux':
  30. this.linux = new LinuxConfig(options.linux);
  31. break;
  32. default:
  33. (<any>this)[key] = options[key];
  34. break;
  35. }
  36. }
  37. });
  38. this.output = normalize(this.output);
  39. this.appId = `io.github.nwjs.${ pkg.name }`;
  40. this.win.versionStrings.ProductName = this.win.versionStrings.ProductName ? this.win.versionStrings.ProductName : pkg.name;
  41. this.win.versionStrings.FileDescription = this.win.versionStrings.FileDescription ? this.win.versionStrings.FileDescription : pkg.description;
  42. this.win.productVersion = this.win.productVersion ? this.win.productVersion : pkg.version;
  43. this.win.fileVersion = this.win.fileVersion ? this.win.fileVersion : this.win.productVersion;
  44. this.mac.name = this.mac.name ? this.mac.name : pkg.name;
  45. this.mac.displayName = this.mac.displayName ? this.mac.displayName : this.mac.name;
  46. this.mac.version = this.mac.version ? this.mac.version : pkg.version;
  47. this.mac.description = this.mac.description ? this.mac.description : pkg.description;
  48. }
  49. }