CLI toolbox for common scripts for my projects (largely based on [kcd-scripts](https://github.com/kentcdodds/kcd-scripts)
I work on a lot of projects that uses the same development configurations and commands and it's a pain to duplicate efforts that could be merge in one place.
This is a CLI that abstracts away all configuration for my open source projects for linting, testing, building, and more.
This module is distributed via [npm
] which is bundled with [node
] and should be installed as one of your project's devDependencies
:
npm install --save-dev mb-scripts
This is a CLI and exposes a bin called mb-scripts
. I don't really plan on
documenting or testing it super duper well because it's really specific to my
needs. You'll find all available scripts in src/scripts
.
This project actually dogfoods itself. If you look in the package.json
, you'll
find scripts with node src {scriptName}
. This serves as an example of some
of the things you can do with mb-scripts
.
Unlike react-scripts
, mb-scripts
allows you to specify your own
configuration for things and have that plug directly into the way things work
with mb-scripts
. There are various ways that it works, but basically if you
want to have your own config for something, just add the configuration and
mb-scripts
will use that instead of it's own internal config. In addition,
mb-scripts
exposes its configuration so you can use it and override only
the parts of the config you need to.
This can be a very helpful way to make editor integration work for tools like ESLint which require project-based ESLint configuration to be present to work.
So, if we were to do this for ESLint, you could create an .eslintrc
with the
contents of:
{"extends": "./node_modules/mb-scripts/eslint.js"}
Or, for babel
, a .babelrc
with:
{"presets": ["mb-scripts/babel"]}
Or, for jest
:
const {jest: jestConfig} = require('mb-scripts/config');
module.exports = Object.assign(jestConfig, {
// your overrides here
// for test written in Typescript, add:
transform: {
'\\.(ts|tsx)$': '<rootDir>/node_modules/ts-jest/preprocessor.js'
}
});
Note:
mb-scripts
intentionally does not merge things for you when you start configuring things to make it less magical and more straightforward. Extending can take place on your terms. I think this is actually a great way to do this.
If the flow-bin
is a dependency on the project the @babel/preset-flow
will automatically get loaded when you use the default babel config that comes with mb-scripts
. If you customised your .babelrc
-file you might need to manually add @babel/preset-flow
to the presets
-section.
I'm not aware of any, if you are please make a pull request and add it here! Again, this is a very specific-to-me solution.
Thanks goes to these people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT