BuildConfig.ts 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { normalize } from 'path';
  2. import { WinConfig } from './WinConfig';
  3. import { MacConfig } from './MacConfig';
  4. import { LinuxConfig } from './LinuxConfig';
  5. import { NsisConfig } from './NsisConfig';
  6. export class BuildConfig {
  7. public nwVersion: string = 'lts';
  8. public nwFlavor: string = 'normal';
  9. public output: string = './dist/';
  10. public outputPattern: string = '${NAME}-${VERSION}-${PLATFORM}-${ARCH}';
  11. public packed: boolean = false;
  12. public targets: string[] = [];
  13. public files: string[] = [ '**/*' ];
  14. public excludes: string[] = [];
  15. public win: WinConfig = new WinConfig();
  16. public mac: MacConfig = new MacConfig();
  17. public linux: LinuxConfig = new LinuxConfig();
  18. public nsis: NsisConfig = new NsisConfig();
  19. public appId: string = undefined;
  20. public ffmpegIntegration: boolean = false;
  21. public strippedProperties: string[] = [ 'scripts', 'devDependencies', 'build' ];
  22. public overriddenProperties: any = {};
  23. constructor(pkg: any = {}) {
  24. const options = pkg.build ? pkg.build : {};
  25. Object.keys(this).map((key) => {
  26. if(options[key] !== undefined) {
  27. switch(key) {
  28. case 'win':
  29. this.win = new WinConfig(options.win);
  30. break;
  31. case 'mac':
  32. this.mac = new MacConfig(options.mac);
  33. break;
  34. case 'linux':
  35. this.linux = new LinuxConfig(options.linux);
  36. break;
  37. case 'nsis':
  38. this.nsis = new NsisConfig(options.nsis);
  39. break;
  40. default:
  41. (<any>this)[key] = options[key];
  42. break;
  43. }
  44. }
  45. });
  46. this.output = normalize(this.output);
  47. this.appId = this.appId ? this.appId : `io.github.nwjs.${ pkg.name }`;
  48. if(this.win.versionStrings.ProductName && !this.win.productName) {
  49. console.warn('DEPRECATED: build.win.versionStrings.ProductName is deprecated, use build.win.productName instead.');
  50. this.win.productName = this.win.versionStrings.ProductName;
  51. }
  52. if(this.win.versionStrings.CompanyName && !this.win.companyName) {
  53. console.warn('DEPRECATED: build.win.versionStrings.CompanyName is deprecated, use build.win.companyName instead.');
  54. this.win.companyName = this.win.versionStrings.CompanyName;
  55. }
  56. if(this.win.versionStrings.FileDescription && !this.win.fileDescription) {
  57. console.warn('DEPRECATED: build.win.versionStrings.FileDescription is deprecated, use build.win.fileDescription instead.');
  58. this.win.fileDescription = this.win.versionStrings.FileDescription;
  59. }
  60. if(this.win.versionStrings.LegalCopyright && !this.win.copyright) {
  61. console.warn('DEPRECATED: build.win.versionStrings.LegalCopyright is deprecated, use build.win.copyright instead.');
  62. this.win.copyright = this.win.versionStrings.LegalCopyright;
  63. }
  64. this.win.productName = this.win.productName ? this.win.productName : pkg.name;
  65. this.win.companyName = this.win.companyName ? this.win.companyName : this.win.productName;
  66. this.win.fileDescription = this.win.fileDescription ? this.win.fileDescription : pkg.description;
  67. this.win.productVersion = this.win.productVersion ? this.win.productVersion : pkg.version;
  68. this.win.fileVersion = this.win.fileVersion ? this.win.fileVersion : this.win.productVersion;
  69. this.mac.name = this.mac.name ? this.mac.name : pkg.name;
  70. this.mac.displayName = this.mac.displayName ? this.mac.displayName : this.mac.name;
  71. this.mac.version = this.mac.version ? this.mac.version : pkg.version;
  72. this.mac.description = this.mac.description ? this.mac.description : pkg.description;
  73. }
  74. }