Beemo - Development configuration module
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 tofalse
. -
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 tofalse
. -
projects
(boolean | string[]
) - Enable Jest projects. Iftrue
is passed, will be resolved using workspaces, otherwise requires an array of explicit strings. Defaults tofalse
. -
react
(boolean | classic | automatic
) - Enable React and JSX support for all drivers. Defaults tofalse
.
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/
.
- Always passes
-
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.
- Always passes
-
Jest
- Always passes
--colors --logHeapUsage
. - Sets
NODE_ENV=test
andTZ=UTC
. - Generates a Babel config when enabled.
- Supports projects through the
projects
setting.
- Always passes
-
Prettier
- If no args provided, defaults to
--write .
. - Provides a default ignore list of common files.
- If no args provided, defaults to
-
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. RequiresGH_USER
andGH_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
, setsprivate
andworkspaces
topackages/*
.
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