UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

207 lines (161 loc) 10.1 kB
### CLI Commands The qooxdoo CLI commands allow to conveniently create, modify, compile, testand publish and publish your qooxdoo project. To see the main available commands, type `qx` without any further parameters. ``` Typical usage: qx <commands> [options] Type qx <command> --help for options and subcommands. Commands: add <command> [options] adds new elements to an existing qooxdoo application/library clean cleans generated files and caches. compile [configFile] compiles the current application, using compile.json config <key> [value] gets/sets persistent configuration contrib <command> [options] manages qooxdoo contrib libraries create <application namespace> [options] creates a new qooxdoo project. lint [files...] runs eslint on the current application or as set of single files. serve [configFile] runs a webserver to run the current application with continuous compilation, using compile.json upgrade [options] upgrades a qooxdoo application ```` To see the subcommands parameters and options, just type in `qx <command> --help`. # Persistent Configuration Some commands require (or benefit from) having persistent configuration; this is accessed via the `qx config` command and the data is stored in a directory called `.qooxdoo` inside your home directory. The `qx config` supports the following: ``` qx config <key> [value] Commands: set <key> <value> Sets a configuration value get <key> [options] Gets a configuration value delete <key> Deletes a configuration value list Lists all known configuration values Options: --quiet, -q Suppresses warnings (eg about unknown configuration keys) [boolean] ``` Configuration is based on simple key/value pairs, and while you can access keys with any name you likee, the `qx` command will look for the following special keys: `github.token` - this is the API token used when connecting to GitHub `qx.libraryPath` - this is the Qooxdoo library to use when compiling your application ### Create a new project You can create new project skeletons by using the `qx create` command` It has the following options: ``` --type, -t Type of the application to create. [string] --out, -o Output directory for the application content. --namespace, -s Top-level namespace. --name, -n Name of application/library (defaults to namespace). --qxpath Path to the folder containing the qooxdoo framework. --theme The name of the theme to be used. [default: "indigo"] --icontheme The name of the icon theme to be used. [default: "Oxygen"] --noninteractive, -I Do not prompt for missing values --verbose, -v Verbose logging ``` The fastest way to create a new project is to execute `qx create foo -I`. This will create a new application with the namespace "foo", using default values. However, in most cases you wamt to customize the generated application skeleton. `qx create foo` will interactively ask you all information it needs, providing default values where possible. If you are in the top-level folder of the application and want to put the application content into it without creating a subfolder (for example, in a top-level folder of a cloned empty GitHub project), use `--out=.`. ### Compiler To compile a qooxdoo project into a state that can be opened in a browser, use `qx compile`. This is the CLI frontend for the [@qooxdoo/compiler library](https://github.com/qooxdoo/qooxdoo-compiler/blob/master/README.md). The command has the following options: ``` qx compile [options] [configFile] Options: --target Set the target type: source or build or class name [string] [default: "source"] --output-path Base path for output [string] --locale Compile for a given locale [array] --write-all-translations enables output of all translations, not just those that are explicitly referenced [boolean] --set sets an environment value [array] key="value" (with value getting evaluated as js) --app-class sets the application class [string] --app-theme sets the theme class for the current application [string] --app-name sets the name of the current application [string] --library adds a library [array] --watch enables continuous compilation [boolean] --verbose enables additional progress output to console [boolean] ``` The compiler relies on the information contained in `compile.json`. Documentation for the `compile.json` format is [here](../configuration/compile.md). ### Lint To check your project with eslint you can use `qx lint`. The command has the following options: ``` qx lint [files...] Options: --fix runs eslint with --fix --cache operate only on changed files (default: `false`). --warnAsError, -w handle warnings as error --config, -c prints the eslint configuration --format, -f format of the output (default: `codeframe`, options: `codeframe`, `checkstyle`) --outputFile, -o output the results to the specified file --verbose, -v enables additional progress output to console ``` Configuration is done in the `compile.json` file, see here [here](../configuration/compile.md). If no special lint configuration is given in `compile.json` the configuration `@qooxdoo/qx/browser` from [eslint-qx-rules](https://github.com/qooxdoo/eslint-qx-rules/blob/master/README.md) is used. If `compile.json` does not exist, `qx lint` tries to use `.eslintrc`. If you need to turn off a rule (generally discouraged but sometimes necessary), use the following comments in your code: `// eslint-disable-line <name of rule>` in the same line or `// eslint-disable-next-line <name of rule>` to turn off linting for the next line. ### Mini Web Server Although many applications will run perfectly well when loaded via a `file://` URL, browser security means that some applications *must* use an `http://` url. The CLI includes the `qx serve` command which operates a mini web server running (by default) on `http://localhost:8080`. An additional advantage of this command is that if you have several applications in your project, a start page is generated which lets you choose the application that you want to run. You can customise the port with the `--listenPort=<portnumber>` argument, or by adding `serve: { listenPort: <portnumber> }` to your `compile.json`; the command line option will take precedence over the `compile.json` setting. An important feature is that `qx serve` will constantly compile your application in the background, every time you edit the code - this is equivalent to `qx compile --watch` plus the web server. As an example this will compile your application and start the web server on port 8082 ``` $ qx serve --listenPort=8082 ``` ``` qx serve [configFile] Options: --target Set the target type: source or build or class name [string] [default: "source"] --output-path Base path for output [string] --locale Compile for a given locale [array] --write-all-translations enables output of all translations, not just those that are explicitly referenced [boolean] --set sets an environment value [array] key="value" (with value getting evaluated as js) --machine-readable output compiler messages in machine-readable format [boolean] --verbose, -v enables additional progress output to console [boolean] --minify disables minification (for build targets only) [choices: "off", "minify", "mangle", "beautify"] [default: "mangle"] --save-unminified Saves a copy of the unminified version of output files (build target only) [boolean] [default: false] --erase Enabled automatic deletion of the output directory when compiler version changes [boolean] [default: true] --typescript Outputs typescript definitions in qooxdoo.d.ts [boolean] --add-created-at Adds code to populate object's $$createdAt [boolean] --clean Deletes the target dir before compile [boolean] --listenPort The port for the web browser to listen on ``` Note that the `qx serve` command supports exactly the same options as `qx compile`, with the exception of `--watch` because that is always enabled; for more details of the options and the compilation process, please see [here](../configuration/compile.md)