@beemo/dev
TypeScript icon, indicating that this package has built-in type declarations

2.1.2 • Public • Published

Beemo - Development configuration module

Build Status npm version npm deps

An official TypeScript-only "batteries included" Beemo configuration module that provides pre-packaged configs for the Babel, ESLint, Jest, Prettier, and TypeScript drivers and developer tools.

yarn install --dev @beemo/dev

Requirements

  • Source files are in a folder called src.
  • Tests files are in a folder called tests relative to source, or __tests__ within source.
  • Declaration/types files are in a folder called types relative to source.
  • Custom TypeScript paths should start with : instead of @ to avoid NPM supply chain attacks.

Setup

Create a .config/beemo.ts file in the root of your project that configures @beemo/dev as the configuration module. Be sure to enable all drivers and any settings.

// .config/beemo.ts
export default {
	module: '@beemo/dev',
	drivers: ['babel', 'eslint', 'jest', 'prettier', 'typescript'],
	settings: {},
};

Settings

The following Beemo settings can be defined and will be passed to applicable drivers.

  • decorators (boolean) - Enable decorators for Babel and TypeScript drivers. Defaults to false.
  • esm (boolean) - Enable ECMAScript module "mode" for tools that support it (Babel, Jest, etc).
  • node (boolean) - Current project will target Node.js instead of the browser. Defaults to false.
  • projects (boolean | string[]) - Enable Jest projects. If true is passed, will be resolved using workspaces, otherwise requires an array of explicit strings. Defaults to false.
  • react (boolean | classic | automatic) - Enable React and JSX support for all drivers. Defaults to false.

Overrides

If you would like to override a driver config, create a .config/beemo/<driver>.ts file in the root of the project. View the official Beemo docs for more information.

// .config/beemo/eslint.ts
export default {
	rules: {
		'no-param-reassign': 'off',
	},
};

Drivers

The following drivers are directly supported in this configuration module, and automatically passed common command line options when being ran.

  • Babel
    • Always passes --copy-files.
    • Sets --extensions to all JS/TS extensions.
    • If no out provided, defaults to src/ --out-dir lib/.
  • ESLint
    • Always passes --cache --color --fix.
    • Sets --extensions to all JS/TS extensions.
    • If no target provided, defaults to linting src/ tests/.
    • If using workspaces, will target the above in each package.
    • Generates Prettier and TypeScript configs when enabled.
  • Jest
    • Always passes --colors --logHeapUsage.
    • Sets NODE_ENV=test and TZ=UTC.
    • Generates a Babel config when enabled.
    • Supports projects through the projects setting.
  • Prettier
    • If no args provided, defaults to --write ..
    • Provides a default ignore list of common files.
  • TypeScript
    • Modern/next ECMAScript support.
    • Type-checking only.

Please refer to their documentation for more information on how each one is configured.

Scaffolds

Once your project has been configured to use Beemo, you can scaffold specific files using our built-in templates.

project/dotfiles

Will scaffold common dotfiles like .gitignore.

beemo scaffold project dotfiles

project/github

Will scaffold GitHub repository workflow files to .github. Supports the following workflows:

  • build - Builds, tests, lints, and type checks the project on each pull request and master merge. Also verifies Packemon packing and Docusaurus building passes.
  • deploy - Deploys a Docusaurus website on each master commit. Requires GH_USER and GH_PAGES_DEPLOY secrets.
  • pr - Validates a pull request title using the conventional-changelog-beemo preset.
beemo scaffold project github

project/package

Will append fields to the root package.json.

  • Adds scripts for common actions like building, linting, testing, etc.
  • When passed --workspaces, sets private and workspaces to packages/*.
beemo scaffold project package

workspace/package

Will scaffold a new package into a packages workspace. Creates CHANGELOG.md, README.md, LICENSE, and package.json files.

beemo scaffold workspace package --owner milesj --repo aesthetic framework

Package Sidebar

Install

npm i @beemo/dev

Weekly Downloads

3,737

Version

2.1.2

License

MIT

Unpacked Size

43 kB

Total Files

58

Last publish

Collaborators

  • beemo-admin
  • milesj