/** * @class Cmd.package.json.Manifest * @extend Cmd.codebase.json.Manifest * @singleton * This is not an actual class or singleton but rather the contents of `'package.json'` * which Sencha Cmd uses to describe a package. * * To maintain compatibility with Node.js, Sencha packages wrap these configs in a `"sencha"` * root property: * * { * ... Node.js properties ... * * "sencha": { * ... Sencha properties ... * } * } */ /** * @cfg {String/String[]} alternateName * One or more alternate package names. This is used to support old names for a package * when it has been renamed. */ /** * @cfg {Object} architect * TODO * @private */ /** * @cfg {Object} builds * This object's properties are "build profiles". You can add as many as you need to * produce optimized builds for devices, themes, locales or other criteria. */ /** * @cfg {String} compatVersion * The version that users can transparently update from without requiring code changes. * * In addition to the `version` property, packages can also indicate the degree to which * they are backward compatible using this property. */ /** * @cfg {String} [creator="anonymous"] * The author of the package. * * Required only if you are distributing this package through a Sencha Cmd repository, * in which case it should match the name you assign to your local package repository. */ /** * @cfg {Object} example * This config instructs the `sencha package build` command to also build one or more * example applications contained in `example.path`. * * @cfg {String} example.path * The path to the example(s) for this package. It is assumed that all sub-directories * of this location should be built using `sencha app build`. * * @cfg {String[]} example.apps * This optional array of strings are the names of apps that should be built using the * `sencha app build` command. This is used when only some of the subdirectories of * `examples.path` are buildable in this way. */ /** * @cfg {String} extend * For `"theme"` `type` packages only, this determines the styles and variables this theme * will inherit. */ /** * @cfg {Cmd.codebase.json.JS[]} js * One or more JavaScript assets to include either in the build or to load remotely. * * "js": [{ * "path": "http://3rd.party.org/third-party.js", * "remote": true * }] */ /** * @cfg {Boolean} local * Indicates whether this is a locally developed package or downloaded form a repository. * Defaults to `true` on newly generated packages. This value is removed in the package's * build output and should not be removed manually. * * This flag was originally used by Sencha Cmd to avoid replacing local packages with * remote packages (when all packages were stored in the `./packages` directory). */ /** * @cfg {String} name * The name of the package. Should be a valid JavaScript identifier but can also use * hyphens. If a `name` is not specified in the `sencha` object, the `name` from the * outer (Node.js) level is assumed. */ /** * @cfg {String} namespace * The namespace of this package. * * As a general rule, all classes that belong to this package should be under this namespace * if multiple namespaces are part of this package, set this to "". */ /** * @cfg {Cmd.codebase.json.Output} output * The options used to control build output. */ /** * @cfg {Object/String[]} templates * An array that contains the paths to templates included in this package or an object * keyed by those paths. When using strings, the `$template.json` file is loaded from there. * Otherwise, the value is the {@link Cmd.template.json.Manifest template definition}. * @private */ /** * @cfg {"code"/"framework"/"locale"/"template"/"theme"} [type="code"] * The package's type. The role of `"theme"` packages is the most significantly different * as it controls whether CSS builds include all inherited styling. By default, `"code"` * packages only build their own CSS, though they may use mixins and variables from the * `theme`. */