@dashkite/genie-presets v0.7.0
Genie Presets
Defines presets for the Genie task runner. Probably most useful for DashKite internal development.
The available presets are:
| Name | Description |
|---|---|
| presets | Presets for managing your presets. |
| verify | Make sure a module is ready for release. |
| update | Like verify, but tries to fix everything. |
| release | Builds, versions, and publishes a module. |
| esm | Set up package.json to use ESM modules. |
| license | Install a given license. |
| server | Run a local server. |
| browser | Run a local server and connect a puppeteer instance to it for automed tests. |
| coffeescript | Builds CoffeeScript source and test code for node and import targets. |
| pug | Compile pug into HTML or JavaScript functions. |
| stylus | Compile Stylus into CSS or a JavaScript module. |
| yaml | Compile YAML into JSON or a JavaScript module. |
| media | Compile media assets for use in Web apps or Web Components. |
| writeme | Builds YAML spec files into Markdown reference docs using WriteMe. |
| retype | Configures and runs Retype, publishing to GitHub pages. |
To use a preset, just load it from your task file, passing in your Genie module.
import "coffeescript/register"
import * as t from "@dashkite/genie"
import preset from "@dashkite/genie-presets"
preset t, "coffeescript"
preset t, "writeme"
preset t, "retype"
preset t, "release"You can also specify them in genie.yaml, along with any applicable options.
presets:
coffeescript:
targets:
- import
verify: ~
update: ~
release: ~You can also use the built-in presets mixin to add or remove them:
genie presets:add:esmcoffeescript
| Name | Description |
|---|---|
| build | Builds source and test files from src and test directories into the build directory. Builds to two targets: node and import, to corresponding subdirectories. |
| test | Builds and run tests from the build/ directory. |
| dev:test | Runs tests from test/ directly without building the source. (This is sometimes helpful for complex builds, where the build is relatively slow.) |
| watch | Watch the src/ and test/ directory for changes and runs build in response. |
| clean | Remove the build directory. |
| targets:add | Adds a target using the default configuration. |
| targets:remove | Removes a target. |
Options
| Name | Type | Description |
|---|---|---|
| targets | dictionary | Target configurations. |
Each target configuration consists of an array of build descriptions. Each build description specifies a glob, a preset name, corresponding to the presets of Masonry’s CoffeeScript extension, and an options object to pass to the Masonry preset.
Example
Default build for the import target:
targets:
import:
# build from src to the browser
- preset: import
glob: src/**/*.coffee
# build test client
- preset: import
glob: test/client/**/*.coffee
options:
mode: debug
# build test driver
- preset: node
glob:
- test/**/*.coffee
- '!test/client/**/*.coffee'release
Usually what you want to run is something like:
genie release:patchwhich will run all the subtasks necessary to do a full release. But sometimes, for whatever reason, you want to do the steps manually, in which case, this preset also provides subtask definitions for convenience.
Important ▹ The release preset assumes that you have a test task defined (the coffeescript preset defines one, for example) and runs that before proceeding. That task should also perform a build, if necessary, and run tests against the build to ensure that the published code has been tested.
| Name | Description |
|---|---|
| release: | Does a patch release (test, version, publish, and push). Takes version as arguments. Ex: release:patch:alpha. The prerelease argument is optional. |
| release:version: | Versions the module: npm version <level>. Version may be major, minor, patch, alpha, or beta. To start a new prerelease, use major, minor, or patch with alpha or beta. Ex: minor-beta or patch-alpha. |
| release:publish | Publishes to the NPM registry: npm publish --access public. |
| release:push | Pushes to git remote: git push --follow-tags. |
Options
version- Arguments to pass tonpm version.
writeme
| Name | Description |
|---|---|
| docs:build | Builds your Markdown files (into docs/reference) from your specs (specs). |
| docs:watch | Watches the specs directory for changes and runs docs:build in response. |
| docs:clean | Removes the docs/reference directory. Important: Do not add files to this directory, since they’ll be removed on the next build. |
Options
Currently takes no options.
retype
| Name | Description |
|---|---|
| retype:configure | Sets up your Retype configuration for use locally and with GitHub pages. Requires the RETYPE_LICENSE_KEY environment variable be set. You will also need to add the license key to your GitHub secrets. |
| site:build | Builds the site with Retype into the .retype directory. (This directory should be added to your .gitignore.) |
| site:watch | Runs doc:watch if defined and runs Retype using your local configuration. |
Options
Currently takes no options.
esm
| Name | Description |
|---|---|
| esm:dual | Set up node and import targets in your package.json. |
| esm:dual:glob | Set up node and import glob targets in your package.json. |
| esm:node | Set up node target in your package.json. |
| esm:import | Set up import target in your package.json. |
| esm:node:glob | Set up node glob targets in your package.json. |
| esm:import:glob | Set up import glob targets in your package.json. |
| esm:main | Set up main target in your package.json. |
Options
Currently takes no options.
license
| Name | Description |
|---|---|
| license:ethical | Installs an ethical source license. |
Options
Currently takes no options.
verify
| Name | Description |
|---|---|
| verify | Runs verify:audit, verify:dependencies, and verify:license. |
| verify:audit | Runs npm audit. |
| verify:dependencies | Runs ncu. You can install ncu by running npm i -g npm-check-updates. Runs verify:dependencies:no-local and no-legacy first. |
| verify:license | Checks to make sure a license file exists and there’s a license entry in package.json. |
| verify:dependencies:no-local | Checks for local dependencies (those starting with file:). |
| verify:dependencies:no-legacy | Checks for legacy dependencies. |
Options
Currently takes no options.
pug
Coming soon.
stylus
Coming soon.
media
Coming soon.
yaml
Coming soon.
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago