@todesktop/cli 1.12.5 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,24 +11,125 @@
11
11
  "required": ["id", "icon", "schemaVersion"]
12
12
  },
13
13
  "properties": {
14
+ "$schema": {
15
+ "type": "string",
16
+ "description": "To enable JSON validation and IntelliSense for your `todesktop.json` file in compatible code editors, your editor needs to know where the schema file is located. You can add a `$schema` property to the top of your `todesktop.json` file, pointing to a version of the schema. This can be a local path or a hosted URL.",
17
+ "examples": [
18
+ "https://unpkg.com/@todesktop/cli@1.12.5/schemas/schema.json",
19
+ "./node_modules/@todesktop/cli/schemas/schema.json"
20
+ ]
21
+ },
14
22
  "appBuilderLibVersion": {
23
+ "$ref": "#/definitions/appBuilderLibVersionProperty"
24
+ },
25
+ "appId": { "$ref": "#/definitions/appIdProperty" },
26
+ "appFiles": { "$ref": "#/definitions/appFilesProperty" },
27
+ "appProtocolScheme": { "$ref": "#/definitions/appProtocolSchemeProperty" },
28
+ "appPath": { "$ref": "#/definitions/appPathProperty" },
29
+ "asar": { "$ref": "#/definitions/asarProperty" },
30
+ "asarUnpack": { "$ref": "#/definitions/asarUnpackProperty" },
31
+ "buildVersion": { "$ref": "#/definitions/buildVersionProperty" },
32
+ "copyright": { "$ref": "#/definitions/copyrightProperty" },
33
+ "electronMirror": { "$ref": "#/definitions/electronMirrorProperty" },
34
+ "electronVersion": { "$ref": "#/definitions/electronVersionProperty" },
35
+ "extends": {
36
+ "type": "string",
37
+ "minLength": 1,
38
+ "description": "This is the path to a base configuration file. This is especially useful for configuration sharing between staging and production builds. The base configuration file can be a relative path from the project root or an absolute path.",
39
+ "examples": ["./todesktop.staging.json"],
40
+ "default": null
41
+ },
42
+ "extraContentFiles": { "$ref": "#/definitions/extraContentFilesProperty" },
43
+ "extraResources": { "$ref": "#/definitions/extraResourcesProperty" },
44
+ "fileAssociations": { "$ref": "#/definitions/fileAssociationsProperty" },
45
+ "updateUrlBase": { "$ref": "#/definitions/updateUrlBaseProperty" },
46
+ "filesForDistribution": {
47
+ "$ref": "#/definitions/filesForDistributionProperty"
48
+ },
49
+ "icon": {
50
+ "type": "string",
51
+ "description": "The path to your application's desktop icon. It must be an ICNS or PNG.",
52
+ "examples": ["./appIcon.png"],
53
+ "file": {
54
+ "extensions": ["icns", "png"],
55
+ "mustBeFile": true
56
+ },
57
+ "minLength": 3
58
+ },
59
+ "linux": { "$ref": "#/definitions/linuxConfigProperty" },
60
+ "id": {
61
+ "type": "string",
62
+ "minLength": 1,
63
+ "description": "Your ToDesktop application ID. This is used to identify your app. This would have been generated when you first created your ToDesktop application via the web interface.",
64
+ "examples": ["2005223bd1nqpl7"]
65
+ },
66
+ "includeSubNodeModules": {
67
+ "$ref": "#/definitions/includeSubNodeModulesProperty"
68
+ },
69
+ "mac": { "$ref": "#/definitions/macConfigProperty" },
70
+ "mas": { "$ref": "#/definitions/masConfigProperty" },
71
+ "dmg": { "$ref": "#/definitions/dmgConfigProperty" },
72
+ "nodeVersion": { "$ref": "#/definitions/nodeVersionProperty" },
73
+ "npmVersion": { "$ref": "#/definitions/npmVersionProperty" },
74
+ "pnpmVersion": { "$ref": "#/definitions/pnpmVersionProperty" },
75
+ "packageJson": { "$ref": "#/definitions/packageJsonProperty" },
76
+ "packageManager": { "$ref": "#/definitions/packageManagerProperty" },
77
+ "rebuildLibrary": { "$ref": "#/definitions/rebuildLibraryProperty" },
78
+ "schemaVersion": {
79
+ "type": "number",
80
+ "minimum": 1,
81
+ "maximum": 1,
82
+ "description": "This is the `todesktop.json` schema version. This must be `1`.",
83
+ "examples": [1]
84
+ },
85
+ "snap": { "$ref": "#/definitions/snapConfigProperty" },
86
+ "uploadSizeLimit": { "$ref": "#/definitions/uploadSizeLimitProperty" },
87
+ "windows": { "$ref": "#/definitions/windowsConfigProperty" },
88
+ "platformOverrides": {
89
+ "type": "object",
90
+ "additionalProperties": false,
91
+ "description": "This option allows you to specify platform-specific configurations for Windows, macOS, and Linux builds. Most top-level configuration fields available in `todesktop.json` can be overridden within the `windows`, `mac`, or `linux` objects under `platformOverrides`.",
92
+ "default": {},
93
+ "properties": {
94
+ "windows": {
95
+ "$ref": "#/definitions/platformOverridableProperties"
96
+ },
97
+ "mac": {
98
+ "$ref": "#/definitions/platformOverridableProperties"
99
+ },
100
+ "linux": {
101
+ "$ref": "#/definitions/platformOverridableProperties"
102
+ }
103
+ }
104
+ }
105
+ },
106
+ "definitions": {
107
+ "appBuilderLibVersionProperty": {
15
108
  "type": "string",
16
109
  "validSemver": {},
17
- "minLength": 1
110
+ "minLength": 1,
111
+ "description": "The version of app-builder-lib that ToDesktop should use for building your app. This can be useful if you need to use a specific version that includes certain features or fixes.",
112
+ "examples": ["22.14.13"]
18
113
  },
19
- "appId": {
114
+ "appIdProperty": {
20
115
  "type": "string",
21
- "minLength": 1
116
+ "minLength": 1,
117
+ "description": "Your application ID. Omit this unless you know what you're doing. It's used as the [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as the [Application User Model ID](<https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx>) for Windows.",
118
+ "examples": ["com.microsoft.word"],
119
+ "default": "auto-generated"
22
120
  },
23
- "appFiles": {
121
+ "appFilesProperty": {
24
122
  "type": "array",
123
+ "description": "This option allows you to decide which files get uploaded to be built on the ToDesktop servers. By default, all files in your app path are included in your app, except for `node_modules` and `.git`. Dependencies are installed on our build servers as there could be platform-specific postinstall steps.",
124
+ "default": ["**"],
125
+ "examples": ["[\"dist/**\", \"!static/**\"]"],
25
126
  "items": {
26
127
  "type": "string",
27
128
  "minLength": 1
28
129
  },
29
130
  "minItems": 1
30
131
  },
31
- "appProtocolScheme": {
132
+ "appProtocolSchemeProperty": {
32
133
  "oneOf": [
33
134
  {
34
135
  "type": "string",
@@ -42,20 +143,27 @@
42
143
  },
43
144
  "minItems": 1
44
145
  }
45
- ]
146
+ ],
147
+ "description": "If you want to register a protocol for your application (e.g. `example://`) and or support deeplinking, you will need to use this option. If your desired protocol is `example://`, you would set `\"appProtocolScheme\": \"example\"`. NOTE: these features also require additional application logic.",
148
+ "examples": ["word", "[\"word\", \"excel\"]"],
149
+ "default": "no protocol scheme is registered"
46
150
  },
47
- "appPath": {
151
+ "appPathProperty": {
48
152
  "type": "string",
153
+ "description": "This is the path to your Electron application directory. Omit this unless your project setup is complicated. This is the directory that the CLI uploads.",
154
+ "default": ".",
155
+ "examples": ["./dist"],
49
156
  "file": {
50
157
  "isOptional": true,
51
158
  "mustBeElectronApp": true
52
159
  }
53
160
  },
54
- "asar": {
161
+ "asarProperty": {
55
162
  "type": "boolean",
56
- "default": true
163
+ "default": true,
164
+ "description": "Whether to package your application's source code within an asar archive. You should only turn this off if you have a good reason to."
57
165
  },
58
- "asarUnpack": {
166
+ "asarUnpackProperty": {
59
167
  "oneOf": [
60
168
  {
61
169
  "type": "boolean"
@@ -68,30 +176,41 @@
68
176
  },
69
177
  "minItems": 1
70
178
  }
71
- ]
179
+ ],
180
+ "description": "This option allows you to decide which files get unpacked from the asar archive. By default we unpack all native `*.node` files.",
181
+ "default": ["**/*.node"]
72
182
  },
73
- "buildVersion": {
183
+ "buildVersionProperty": {
74
184
  "type": "string",
75
- "minLength": 1
185
+ "minLength": 1,
186
+ "description": "The build version. Maps to the CFBundleVersion on macOS, and FileVersion metadata property on Windows.",
187
+ "default": "auto-generated from build id"
76
188
  },
77
- "copyright": {
189
+ "copyrightProperty": {
78
190
  "type": "string",
79
- "minLength": 1
191
+ "minLength": 1,
192
+ "description": "The human-readable copyright line for the app.",
193
+ "examples": ["Copyright © 1995 Walt Disney"],
194
+ "default": "The `package.json` [productName](#recommendations-for-app-packagejson) / `name`."
80
195
  },
81
- "electronMirror": {
196
+ "electronMirrorProperty": {
82
197
  "type": "string",
83
- "format": "uri"
198
+ "format": "uri",
199
+ "description": "The base URL of the mirror to download Electron from. This may be a mirror geographically closer to you or even your own mirror which contains custom Electron builds. The version downloaded is the Electron version specified in `devDependencies` in your app's `package.json`. Alternatively you can explicitly specify an `electronVersion` in `todesktop.json` as described below.",
200
+ "examples": ["https://cdn.npm.taobao.org/dist/electron/"],
201
+ "default": "Electron is downloaded from the main official source."
84
202
  },
85
- "electronVersion": {
203
+ "electronVersionProperty": {
86
204
  "type": "string",
87
- "minLength": 1
205
+ "minLength": 1,
206
+ "description": "The version of Electron to use. In most cases you should not specify an `electronVersion` property. Only specify this option if you wish to override the version that is specified in `package.json`.",
207
+ "examples": ["12.0.7-beta.17"],
208
+ "default": "Electron version specified in `devDependencies` in your app's `package.json`"
88
209
  },
89
- "extends": {
90
- "type": "string",
91
- "minLength": 1
92
- },
93
- "extraContentFiles": {
210
+ "extraContentFilesProperty": {
94
211
  "type": "array",
212
+ "description": "This option allows you specify files to be copied into the application's content directory (`Contents` for MacOS, root directory for Linux and Windows).",
213
+ "default": [],
95
214
  "items": {
96
215
  "type": "object",
97
216
  "required": ["from"],
@@ -107,8 +226,10 @@
107
226
  }
108
227
  }
109
228
  },
110
- "extraResources": {
229
+ "extraResourcesProperty": {
111
230
  "type": "array",
231
+ "description": "This option allows you to specify files to be copied into the application's resources directory (`Contents/Resources` for MacOS, `resources` for Linux and Windows). It works just like the `extraContentFiles` option, except the files go to a different directory.",
232
+ "default": [],
112
233
  "items": {
113
234
  "type": "object",
114
235
  "required": ["from"],
@@ -126,8 +247,9 @@
126
247
  }
127
248
  }
128
249
  },
129
- "fileAssociations": {
250
+ "fileAssociationsProperty": {
130
251
  "type": "array",
252
+ "description": "Associate a file type with your Electron app.",
131
253
  "items": {
132
254
  "type": "object",
133
255
  "required": ["ext"],
@@ -146,69 +268,84 @@
146
268
  "minLength": 1
147
269
  }
148
270
  }
149
- ]
271
+ ],
272
+ "description": "The extension (minus the leading period). e.g. png."
150
273
  },
151
274
  "description": {
152
275
  "type": "string",
153
- "minLength": 1
276
+ "minLength": 1,
277
+ "description": "windows-only. The description."
154
278
  },
155
279
  "name": {
156
280
  "type": "string",
157
- "minLength": 1
281
+ "minLength": 1,
282
+ "description": "The name. e.g. PNG. Defaults to value of `ext`."
158
283
  },
159
284
  "mimeType": {
160
285
  "type": "string",
161
- "minLength": 1
286
+ "minLength": 1,
287
+ "description": "linux-only. The mime-type."
162
288
  },
163
289
  "icon": {
164
290
  "type": "string",
165
- "minLength": 1
291
+ "minLength": 1,
292
+ "description": "macOS and windows. Icon file name without extension. It points to ico file for Windows and icns for macOS. For example, if the `icon` value is `\"icons/py\"` then it will look for both `\"icons/py.ico\"` and `\"icons/py.icns\"` in your project directory."
166
293
  },
167
294
  "role": {
168
295
  "type": "string",
169
- "minLength": 1
296
+ "minLength": 1,
297
+ "description": "macOS-only. The app's role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.",
298
+ "default": "Editor"
170
299
  },
171
300
  "isPackage": {
172
- "type": "boolean"
301
+ "type": "boolean",
302
+ "description": "macOS-only. Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`."
173
303
  },
174
304
  "rank": {
175
305
  "type": "string",
176
- "enum": ["Owner", "Default", "Alternate", "None"]
306
+ "enum": ["Owner", "Default", "Alternate", "None"],
307
+ "description": "macOS-only. Determines how Launch Services ranks this app among the apps that declare themselves editors or viewers of files of this type. The possible values are: `Owner` (this app is the primary creator of files of this type), `Default` (this app is an opener of files of this type; this value is also used if no rank is specified), `Alternate` (this app is a secondary viewer of files of this type), and `None` (this app is never selected to open files of this type, but it accepts drops of files of this type).",
308
+ "default": "Default"
177
309
  }
178
310
  }
179
311
  },
180
312
  "minItems": 1
181
313
  },
182
- "updateUrlBase": {
314
+ "updateUrlBaseProperty": {
183
315
  "type": "string",
184
- "format": "uri"
316
+ "format": "uri",
317
+ "description": "The URL to check for updates. You should only set this if you want to use your own self-hosted update server instead of ToDesktop's built-in update service. See https://www.github.com/ToDesktop/self-hosted for more information.",
318
+ "examples": ["https://example.com/updates"],
319
+ "default": "ToDesktop's auto-update URL."
185
320
  },
186
- "filesForDistribution": {
321
+ "filesForDistributionProperty": {
187
322
  "type": "array",
323
+ "description": "This option allows you to explicitly exclude or include certain files in the packaged version of your app. These files are filtered _after_ the build step which happens on the ToDesktop servers.",
324
+ "examples": [
325
+ "[\"!**/node_modules/realm/android/**\", \"!**/design/**\"]"
326
+ ],
188
327
  "items": {
189
328
  "type": "string",
190
329
  "minLength": 1
191
330
  },
192
331
  "minItems": 1
193
332
  },
194
- "icon": {
195
- "type": "string",
196
- "file": {
197
- "extensions": ["icns", "png"],
198
- "mustBeFile": true
199
- },
200
- "minLength": 3
201
- },
202
- "linux": {
333
+ "linuxConfigProperty": {
203
334
  "type": "object",
335
+ "description": "This object contains some options that only apply to the building & releasing for Linux.",
336
+ "examples": ["{ \"category\": \"Utility\"}"],
204
337
  "additionalProperties": false,
205
338
  "properties": {
206
339
  "category": {
207
340
  "type": "string",
208
- "minLength": 1
341
+ "minLength": 1,
342
+ "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).",
343
+ "examples": ["Utility"]
209
344
  },
210
345
  "icon": {
211
346
  "type": "string",
347
+ "description": "The path to your application's Linux desktop icon. It must be an ICNS or PNG.",
348
+ "examples": ["./linux-icon.png"],
212
349
  "file": {
213
350
  "extensions": ["icns", "png"],
214
351
  "mustBeFile": true
@@ -217,31 +354,40 @@
217
354
  },
218
355
  "imageVersion": {
219
356
  "type": "string",
220
- "minLength": 1
357
+ "minLength": 1,
358
+ "description": "The version of the Linux image that ToDesktop should use to build your app.",
359
+ "examples": ["0.1.0"],
360
+ "default": "0.0.11"
221
361
  },
222
362
  "noSandbox": {
223
- "type": "boolean"
363
+ "type": "boolean",
364
+ "description": "This option allows you to configure whether your app should run in a sandboxed environment.",
365
+ "default": true
224
366
  }
225
367
  }
226
368
  },
227
- "id": {
228
- "type": "string",
229
- "minLength": 1
230
- },
231
- "includeSubNodeModules": {
369
+ "includeSubNodeModulesProperty": {
232
370
  "type": "boolean",
233
- "default": false
371
+ "default": false,
372
+ "description": "Whether to include **all** of the submodules node_modules directories"
234
373
  },
235
- "mac": {
374
+ "macConfigProperty": {
236
375
  "type": "object",
376
+ "description": "This object contains some options that only apply to the building & releasing for MacOS.",
377
+ "examples": ["{ \"entitlements\": \"./entitlements.mac.plist\" }"],
237
378
  "additionalProperties": false,
238
379
  "properties": {
239
380
  "category": {
240
381
  "type": "string",
241
- "minLength": 1
382
+ "minLength": 1,
383
+ "description": "The application category type, as shown in the Finder via _View -> Arrange by Application Category_ when viewing the Applications directory.",
384
+ "examples": ["public.app-category.productivity"]
242
385
  },
243
386
  "additionalBinariesToSign": {
244
387
  "type": "array",
388
+ "description": "Paths of any extra binaries that need to be signed. These could be files in your own app code or `node_modules`.",
389
+ "examples": ["[\"./node_modules/example-package/example-file\"]"],
390
+ "default": [],
245
391
  "items": {
246
392
  "type": "string",
247
393
  "minLength": 1
@@ -249,6 +395,9 @@
249
395
  },
250
396
  "entitlements": {
251
397
  "type": "string",
398
+ "description": "The path to an entitlements file for signing your application. It must be a plist file.",
399
+ "examples": ["./entitlements.mac.plist"],
400
+ "default": "A sane minimal entitlements file we've put together.",
252
401
  "file": {
253
402
  "extensions": ["plist"],
254
403
  "mustBeFile": true
@@ -257,6 +406,9 @@
257
406
  },
258
407
  "entitlementsInherit": {
259
408
  "type": "string",
409
+ "description": "The path to a child entitlements file for signing your application. It must be a plist file.",
410
+ "examples": ["./entitlementsInherit.mac.plist"],
411
+ "default": "No entitlements file is provided by default.",
260
412
  "file": {
261
413
  "extensions": ["plist"],
262
414
  "mustBeFile": true
@@ -264,10 +416,15 @@
264
416
  "minLength": 1
265
417
  },
266
418
  "extendInfo": {
267
- "type": "object"
419
+ "type": "object",
420
+ "description": "Extra entries for `Info.plist`.",
421
+ "examples": ["{ \"NSUserNotificationAlertStyle\": \"alert\" }"],
422
+ "default": {}
268
423
  },
269
424
  "icon": {
270
425
  "type": "string",
426
+ "description": "The path to your application's Mac desktop icon. It must be an ICNS or PNG.",
427
+ "examples": ["./mac-icon.png"],
271
428
  "file": {
272
429
  "extensions": ["icns", "png"],
273
430
  "mustBeFile": true
@@ -276,6 +433,9 @@
276
433
  },
277
434
  "requirements": {
278
435
  "type": "string",
436
+ "description": "The path to the [requirements file](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used when signing your application.",
437
+ "examples": ["./requirements.txt"],
438
+ "default": "No requirements file is used by default.",
279
439
  "file": {
280
440
  "extensions": ["txt"],
281
441
  "mustBeFile": true
@@ -284,12 +444,17 @@
284
444
  }
285
445
  }
286
446
  },
287
- "mas": {
447
+ "masConfigProperty": {
288
448
  "type": "object",
449
+ "description": "This object contains options that only apply to building the application for Mac App Store.",
450
+ "examples": ["{ \"type\": \"development\" }"],
289
451
  "additionalProperties": false,
290
452
  "properties": {
291
453
  "entitlements": {
292
454
  "type": "string",
455
+ "description": "The path to an entitlements file for signing your application. It must be a plist file.",
456
+ "examples": ["./entitlements.mas.plist"],
457
+ "default": "No entitlements file is provided by default.",
293
458
  "file": {
294
459
  "extensions": ["plist"],
295
460
  "mustBeFile": true
@@ -298,6 +463,9 @@
298
463
  },
299
464
  "entitlementsInherit": {
300
465
  "type": "string",
466
+ "description": "The path to a child entitlements file for signing your application. It must be a plist file.",
467
+ "examples": ["./entitlementsInherit.mas.plist"],
468
+ "default": "No entitlements file is provided by default.",
301
469
  "file": {
302
470
  "extensions": ["plist"],
303
471
  "mustBeFile": true
@@ -306,6 +474,9 @@
306
474
  },
307
475
  "provisioningProfile": {
308
476
  "type": "string",
477
+ "description": "The path to a provisioning profile for authorizing your application.",
478
+ "examples": ["./mas.provisionprofile"],
479
+ "default": "No provisioning profile is used by default.",
309
480
  "file": {
310
481
  "extensions": ["provisionprofile"],
311
482
  "mustBeFile": true
@@ -314,19 +485,29 @@
314
485
  },
315
486
  "type": {
316
487
  "type": "string",
317
- "enum": ["development", "distribution"]
488
+ "enum": ["development", "distribution"],
489
+ "description": "Whether to sign app for development or for distribution.",
490
+ "examples": ["distribution"],
491
+ "default": "development"
318
492
  },
319
493
  "x64ArchFiles": {
320
- "type": "string"
494
+ "type": "string",
495
+ "description": "Minimatch pattern of paths that are allowed to be x64 binaries in both ASAR files.",
496
+ "examples": ["Contents/Resources/foobar/**"],
497
+ "default": "not defined"
321
498
  }
322
499
  }
323
500
  },
324
- "dmg": {
501
+ "dmgConfigProperty": {
325
502
  "type": "object",
503
+ "description": "Options for customizing the macOS DMG (disk image) installer.",
326
504
  "additionalProperties": false,
327
505
  "properties": {
328
506
  "background": {
329
507
  "type": "string",
508
+ "description": "The path to the DMG installer's background image. It must be a `.tiff` file. The resolution of this file determines the resolution of the installer window. Typically, backgrounds are 540x380.",
509
+ "examples": ["./mac-dmg-background.tiff"],
510
+ "default": "undefined",
330
511
  "file": {
331
512
  "extensions": ["tiff"],
332
513
  "mustBeFile": true
@@ -335,94 +516,124 @@
335
516
  },
336
517
  "artifactName": {
337
518
  "type": "string",
338
- "minLength": 1
519
+ "minLength": 1,
520
+ "description": "The artifact name of the DMG file. Macros ${productName}, ${version}, ${name} are supported."
339
521
  },
340
522
  "backgroundColor": {
341
523
  "type": "string",
342
- "minLength": 1
524
+ "minLength": 1,
525
+ "description": "The background color (accepts css colors). Defaults to \"`#ffffff`\" (white) if no background image.",
526
+ "default": "#ffffff"
343
527
  },
344
528
  "iconSize": {
345
- "type": "number"
529
+ "type": "number",
530
+ "description": "The size of all the icons inside the DMG. Defaults to `80`.",
531
+ "default": 80
346
532
  },
347
533
  "iconTextSize": {
348
- "type": "number"
534
+ "type": "number",
535
+ "description": "The size of all the icon texts inside the DMG. Defaults to `12`.",
536
+ "default": 12
349
537
  },
350
538
  "title": {
351
539
  "type": "string",
352
- "minLength": 1
540
+ "minLength": 1,
541
+ "description": "The title of the produced DMG, which will be shown when mounted (volume name). Macro `${productName}`, `${version}` and `${name}` are supported.",
542
+ "default": "${productName} ${version}"
353
543
  },
354
544
  "contents": {
355
545
  "type": "array",
546
+ "description": "Customize icon locations. The x and y coordinates refer to the position of the center of the icon (at 1x scale), and do not take the label into account.",
356
547
  "items": {
357
548
  "type": "object",
358
549
  "additionalProperties": false,
359
550
  "properties": {
360
551
  "x": {
361
- "type": "number"
552
+ "type": "number",
553
+ "description": "The device-independent pixel offset from the left of the window to the center of the icon."
362
554
  },
363
555
  "y": {
364
- "type": "number"
556
+ "type": "number",
557
+ "description": "The device-independent pixel offset from the top of the window to the center of the icon."
365
558
  }
366
559
  }
367
560
  }
368
561
  },
369
562
  "window": {
370
563
  "type": "object",
564
+ "description": "The DMG windows position and size. In most cases, you will only want to specify a `height` and `width` value but not `x` and `y`.",
371
565
  "additionalProperties": false,
372
566
  "properties": {
373
567
  "x": {
374
- "type": "number"
568
+ "type": "number",
569
+ "description": "The X position relative to left of the screen."
375
570
  },
376
571
  "y": {
377
- "type": "number"
572
+ "type": "number",
573
+ "description": "The Y position relative to top of the screen."
378
574
  },
379
575
  "width": {
380
- "type": "number"
576
+ "type": "number",
577
+ "description": "The width. Defaults to background image width or 540."
381
578
  },
382
579
  "height": {
383
- "type": "number"
580
+ "type": "number",
581
+ "description": "The height. Defaults to background image height or 380."
384
582
  }
385
583
  }
386
584
  }
387
585
  }
388
586
  },
389
- "nodeVersion": {
587
+ "nodeVersionProperty": {
390
588
  "type": "string",
391
589
  "validSemver": {},
392
- "minLength": 1
590
+ "minLength": 1,
591
+ "description": "The version of Node.js that ToDesktop should use to build your app.",
592
+ "examples": ["18.12.1"]
393
593
  },
394
- "npmVersion": {
594
+ "npmVersionProperty": {
395
595
  "type": "string",
396
596
  "validSemver": {},
397
- "minLength": 1
597
+ "minLength": 1,
598
+ "description": "The version of NPM that ToDesktop should use for installation.",
599
+ "examples": ["9.8.1"]
398
600
  },
399
- "pnpmVersion": {
601
+ "pnpmVersionProperty": {
400
602
  "type": "string",
401
603
  "validSemver": {},
402
- "minLength": 1
604
+ "minLength": 1,
605
+ "description": "The version of pnpm that ToDesktop should use for installation.",
606
+ "examples": ["8.10.5"]
403
607
  },
404
- "packageJson": {
405
- "type": "object"
608
+ "packageJsonProperty": {
609
+ "type": "object",
610
+ "description": "If you want to override the default `package.json` configuration, use the `packageJson` property. For example, you can use this to override the `productName` or `version` properties.",
611
+ "default": {}
406
612
  },
407
- "packageManager": {
613
+ "packageManagerProperty": {
408
614
  "type": "string",
409
- "enum": ["npm", "yarn", "pnpm"]
615
+ "enum": ["npm", "yarn", "pnpm"],
616
+ "description": "The package manager to use when installing dependencies. Valid values are `npm`, `yarn` or `pnpm`.",
617
+ "examples": ["yarn"],
618
+ "default": "If `yarn.lock` exists, `yarn` is used. If `pnpm-lock.yaml` or `shrinkwrap.yaml` exists, `pnpm` is used. Otherwise, `npm` is used."
410
619
  },
411
- "rebuildLibrary": {
620
+ "rebuildLibraryProperty": {
412
621
  "type": "string",
413
- "enum": ["app-builder", "@electron/rebuild"]
414
- },
415
- "schemaVersion": {
416
- "type": "number",
417
- "minimum": 1,
418
- "maximum": 1
622
+ "enum": ["app-builder", "@electron/rebuild"],
623
+ "description": "The library that ToDesktop should use for rebuilding native modules. Valid values are `app-builder` or `@electron/rebuild`.",
624
+ "default": "app-builder"
419
625
  },
420
- "snap": {
626
+ "snapConfigProperty": {
421
627
  "type": "object",
628
+ "description": "This object contains some options that only apply to the building for the [Snap Store](https://snapcraft.io/store).",
629
+ "examples": ["{ \"confinement\": \"classic\", \"grade\": \"devel\" }"],
422
630
  "additionalProperties": false,
423
631
  "properties": {
424
632
  "after": {
425
633
  "type": "array",
634
+ "description": "Ensures that all the part names listed are staged before the app part begins its [lifecycle](https://snapcraft.io/docs/parts-lifecycle#heading--steps).",
635
+ "default": ["desktop-gtk2"],
636
+ "examples": ["[\"launch-scripts\"]"],
426
637
  "items": {
427
638
  "type": "string",
428
639
  "minLength": 1
@@ -430,6 +641,9 @@
430
641
  },
431
642
  "appPartStage": {
432
643
  "type": "array",
644
+ "description": "Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.",
645
+ "examples": ["[\"-usr/lib/python*\"]"],
646
+ "default": "See [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29).",
433
647
  "items": {
434
648
  "type": "string",
435
649
  "minLength": 1
@@ -448,16 +662,30 @@
448
662
  "minLength": 1
449
663
  }
450
664
  }
451
- ]
665
+ ],
666
+ "description": "The list of features that must be supported by the core in order for this snap to install. To learn more, see the [Snapcraft docs](https://snapcraft.io/docs/snapcraft-top-level-metadata#heading--assumes).",
667
+ "examples": ["snapd2.38"],
668
+ "default": "undefined"
452
669
  },
453
670
  "autoStart": {
454
- "type": "boolean"
671
+ "type": "boolean",
672
+ "description": "Whether or not the snap should automatically start on login.",
673
+ "default": false,
674
+ "examples": [true]
455
675
  },
456
676
  "base": {
457
- "type": "string"
677
+ "type": "string",
678
+ "description": "The base snap to use for building this snap.",
679
+ "default": "core18",
680
+ "examples": ["core20"]
458
681
  },
459
682
  "buildPackages": {
460
683
  "type": "array",
684
+ "description": "The list of debian packages needs to be installed for building this snap.",
685
+ "default": [],
686
+ "examples": [
687
+ "[\"libssl-dev\", \"libssh-dev\", \"libncursesw5-dev\"]"
688
+ ],
461
689
  "items": {
462
690
  "type": "string",
463
691
  "minLength": 1
@@ -465,20 +693,50 @@
465
693
  },
466
694
  "confinement": {
467
695
  "type": "string",
468
- "enum": ["classic", "devmode", "strict"]
696
+ "enum": ["classic", "devmode", "strict"],
697
+ "description": "The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap. `devmode`, `strict`, or `classic`.",
698
+ "default": "strict",
699
+ "examples": ["classic"]
469
700
  },
470
701
  "environment": {
471
- "type": "object"
702
+ "type": "object",
703
+ "description": "The custom environment. If you set this, it will be merged with the default.",
704
+ "default": { "TMPDIR": "$XDG_RUNTIME_DIR" },
705
+ "examples": ["{\"TMPDIR\": \"$XDG_RUNTIME_DIR\"}"]
472
706
  },
473
707
  "grade": {
474
708
  "type": "string",
475
- "enum": ["devel", "stable"]
709
+ "enum": ["devel", "stable"],
710
+ "description": "The quality grade of the snap. It can be either `devel` (i.e. a development version of the snap, so not to be published to the \"stable\" or \"candidate\" channels) or `stable` (i.e. a stable release or release candidate, which can be released to all channels).",
711
+ "default": "stable",
712
+ "examples": ["devel"]
476
713
  },
477
714
  "layout": {
478
- "type": "object"
715
+ "type": "object",
716
+ "description": "Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more.",
717
+ "default": "undefined",
718
+ "examples": [
719
+ "{ \"/var/lib/foo\": { \"bind\": \"$SNAP_DATA/var/lib/foo\" } }"
720
+ ]
479
721
  },
480
722
  "plugs": {
481
723
  "type": "array",
724
+ "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces). If list contains `default`, it will be replaced with the default list, so, `[\"default\", \"foo\"]` can be used to add a custom plug `foo` in addition to the default list.",
725
+ "default": [
726
+ "desktop",
727
+ "desktop-legacy",
728
+ "home",
729
+ "x11",
730
+ "unity7",
731
+ "browser-support",
732
+ "network",
733
+ "gsettings",
734
+ "pulseaudio",
735
+ "opengl"
736
+ ],
737
+ "examples": [
738
+ "[ \"default\", { \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } }, \"another-simple-plug-name\" ]"
739
+ ],
482
740
  "items": {
483
741
  "anyOf": [
484
742
  {
@@ -493,6 +751,19 @@
493
751
  },
494
752
  "stagePackages": {
495
753
  "type": "array",
754
+ "description": "The list of Ubuntu packages to use that are needed to support the app part creation. Like `depends` for deb. If list contains `default`, it will be replaced with the default list, so, `[\"default\", \"foo\"]` can be used to add custom package `foo` in addition to the defaults.",
755
+ "default": [
756
+ "libasound2",
757
+ "libgconf2-4",
758
+ "libnotify4",
759
+ "libnspr4",
760
+ "libnss3",
761
+ "libpcre3",
762
+ "libpulse0",
763
+ "libxss1",
764
+ "libxtst6"
765
+ ],
766
+ "examples": ["[\"default\", \"depends\"]"],
496
767
  "items": {
497
768
  "type": "string",
498
769
  "minLength": 1
@@ -500,22 +771,35 @@
500
771
  },
501
772
  "summary": {
502
773
  "type": "string",
503
- "maxLength": 78
774
+ "maxLength": 78,
775
+ "description": "A sentence summarising the snap. Max len. 78 characters, describing the snap in short and simple terms.",
776
+ "default": "The [productName](#recommendations-for-app-packagejson).",
777
+ "examples": ["The super cat generator"]
504
778
  },
505
779
  "useTemplateApp": {
506
- "type": "boolean"
780
+ "type": "boolean",
781
+ "description": "Whether to use a template snap.",
782
+ "default": "true if `stagePackages` is not specified.",
783
+ "examples": [false]
507
784
  }
508
785
  }
509
786
  },
510
- "uploadSizeLimit": {
511
- "type": "number"
787
+ "uploadSizeLimitProperty": {
788
+ "type": "number",
789
+ "description": "The max upload size (in MB). Before uploading your files to our servers, we check that the total file size is less than this number. If you are accidentally including unneccesary files in your app, check out the `appPath` and `appFiles` options.",
790
+ "default": 20,
791
+ "examples": [35]
512
792
  },
513
- "windows": {
793
+ "windowsConfigProperty": {
514
794
  "type": "object",
795
+ "description": "This object contains some options that only apply to the building & releasing for Windows.",
796
+ "examples": ["{ \"icon\": \"./icon.ico\" }"],
515
797
  "additionalProperties": false,
516
798
  "properties": {
517
799
  "icon": {
518
800
  "type": "string",
801
+ "description": "The path to your application's Windows desktop icon. It must be an ICO, ICNS, or PNG.",
802
+ "examples": ["./icon.ico"],
519
803
  "file": {
520
804
  "extensions": ["icns", "png", "icon"],
521
805
  "mustBeFile": true
@@ -524,24 +808,33 @@
524
808
  },
525
809
  "nsisCustomBinary": {
526
810
  "type": "object",
811
+ "description": "Allows you to provide your own makensis, such as one with support for debug logging via LogSet and LogText. (Logging also requires option debugLogging = true). It's not recommended to use it for production build.",
812
+ "default": "undefined",
527
813
  "additionalProperties": false,
528
814
  "properties": {
529
815
  "checksum": {
530
- "type": "string"
816
+ "type": "string",
817
+ "description": "Checksum for the custom NSIS binary."
531
818
  },
532
819
  "debugLogging": {
533
- "type": "boolean"
820
+ "type": "boolean",
821
+ "description": "Enable debug logging with the custom NSIS binary."
534
822
  },
535
823
  "url": {
536
- "type": "string"
824
+ "type": "string",
825
+ "description": "URL to download the custom NSIS binary (e.g., a .7z archive)."
537
826
  },
538
827
  "version": {
539
- "type": "string"
828
+ "type": "string",
829
+ "description": "Version of the custom NSIS binary."
540
830
  }
541
831
  }
542
832
  },
543
833
  "nsisInclude": {
544
834
  "type": "string",
835
+ "description": "The path to NSIS script to customize installer.",
836
+ "examples": ["build/installer.nsh"],
837
+ "default": "undefined",
545
838
  "file": {
546
839
  "extensions": ["nsh"],
547
840
  "mustBeFile": true
@@ -549,12 +842,64 @@
549
842
  },
550
843
  "publisherName": {
551
844
  "type": "array",
845
+ "description": "The publisher name, exactly as in your code signing certificate. Several names can be provided. Defaults to common name from your code signing certificate. You should typically not include this property in your configuration unless you wish to transition to a new certificate in the future.",
846
+ "examples": ["[\"ABC Limited\"]"],
847
+ "default": "Default to the common name from your code signing certificate.",
552
848
  "items": {
553
849
  "type": "string",
554
850
  "minLength": 1
555
851
  }
556
852
  }
557
853
  }
854
+ },
855
+ "platformOverridableProperties": {
856
+ "type": "object",
857
+ "additionalProperties": false,
858
+ "description": "Defines properties that can be overridden on a per-platform basis under the 'platformOverrides' field.",
859
+ "properties": {
860
+ "appBuilderLibVersion": {
861
+ "$ref": "#/definitions/appBuilderLibVersionProperty"
862
+ },
863
+ "appId": { "$ref": "#/definitions/appIdProperty" },
864
+ "appFiles": { "$ref": "#/definitions/appFilesProperty" },
865
+ "appProtocolScheme": {
866
+ "$ref": "#/definitions/appProtocolSchemeProperty"
867
+ },
868
+ "appPath": { "$ref": "#/definitions/appPathProperty" },
869
+ "asar": { "$ref": "#/definitions/asarProperty" },
870
+ "asarUnpack": { "$ref": "#/definitions/asarUnpackProperty" },
871
+ "buildVersion": { "$ref": "#/definitions/buildVersionProperty" },
872
+ "copyright": { "$ref": "#/definitions/copyrightProperty" },
873
+ "electronMirror": { "$ref": "#/definitions/electronMirrorProperty" },
874
+ "electronVersion": { "$ref": "#/definitions/electronVersionProperty" },
875
+ "extraContentFiles": {
876
+ "$ref": "#/definitions/extraContentFilesProperty"
877
+ },
878
+ "extraResources": { "$ref": "#/definitions/extraResourcesProperty" },
879
+ "fileAssociations": {
880
+ "$ref": "#/definitions/fileAssociationsProperty"
881
+ },
882
+ "updateUrlBase": { "$ref": "#/definitions/updateUrlBaseProperty" },
883
+ "filesForDistribution": {
884
+ "$ref": "#/definitions/filesForDistributionProperty"
885
+ },
886
+ "linux": { "$ref": "#/definitions/linuxConfigProperty" },
887
+ "includeSubNodeModules": {
888
+ "$ref": "#/definitions/includeSubNodeModulesProperty"
889
+ },
890
+ "mac": { "$ref": "#/definitions/macConfigProperty" },
891
+ "mas": { "$ref": "#/definitions/masConfigProperty" },
892
+ "dmg": { "$ref": "#/definitions/dmgConfigProperty" },
893
+ "nodeVersion": { "$ref": "#/definitions/nodeVersionProperty" },
894
+ "npmVersion": { "$ref": "#/definitions/npmVersionProperty" },
895
+ "pnpmVersion": { "$ref": "#/definitions/pnpmVersionProperty" },
896
+ "packageJson": { "$ref": "#/definitions/packageJsonProperty" },
897
+ "packageManager": { "$ref": "#/definitions/packageManagerProperty" },
898
+ "rebuildLibrary": { "$ref": "#/definitions/rebuildLibraryProperty" },
899
+ "snap": { "$ref": "#/definitions/snapConfigProperty" },
900
+ "uploadSizeLimit": { "$ref": "#/definitions/uploadSizeLimitProperty" },
901
+ "windows": { "$ref": "#/definitions/windowsConfigProperty" }
902
+ }
558
903
  }
559
904
  }
560
905
  }