CLI for common scripts for my projects
CLI toolbox for common scripts for my projects
---
[![Build Status][build-badge]][build]
[![Code Coverage][coverage-badge]][coverage]
[![version][version-badge]][package]
[![downloads][downloads-badge]][npmtrends]
[![MIT License][license-badge]][license]
[![All Contributors][all-contributors-badge]](#contributors-)
[![PRs Welcome][prs-badge]][prs]
[![Code of Conduct][coc-badge]][coc]
I do a bunch of open source and want to make it easier to maintain so many
projects.
This is a CLI that abstracts away all configuration for my open source projects
for linting, testing, building, and more.
- Installation
- Usage
- Overriding Config
- TypeScript Support
- Inspiration
- Other Solutions
- Issues
- 🐛 Bugs
- 💡 Feature Requests
- Contributors ✨
- LICENSE
This module is distributed via [npm][npm] which is bundled with [node][node] and
should be installed as one of your project's devDependencies:
```
npm install --save-dev kcd-scripts
This is a CLI and exposes a bin called kcd-scripts. I don't really plan onsrc/scripts
documenting or testing it super duper well because it's really specific to my
needs. You'll find all available scripts in .
This project actually dogfoods itself. If you look in the package.json, you'llnode src {scriptName}
find scripts with . This serves as an example of some ofkcd-scripts
the things you can do with .
Unlike react-scripts, kcd-scripts allows you to specify your ownkcd-scripts
configuration for things and have that plug directly into the way things work
with . There are various ways that it works, but basically if youkcd-scripts
want to have your own config for something, just add the configuration and will use that instead of it's own internal config. In addition,kcd-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/kcd-scripts/eslint.js"}
> Note: for now, you'll have to include an .eslintignore in your project until
> this eslint issue is resolved.
Or, for babel, a .babelrc with:
``
{"presets": ["kcd-scripts/babel"]}
Or, for jest:
`javascript
const {jest: jestConfig} = require('kcd-scripts/config')
module.exports = Object.assign(jestConfig, {
// your overrides here
// for test written in Typescript, add:
transform: {
'\\.(ts|tsx)$': '
},
})
`
> Note: kcd-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 tsconfig.json-file is present in the project root directory andtypescript is a dependency the @babel/preset-typescript will automaticallykcd-scripts
get loaded when you use the default babel config that comes with ..babelrc
If you customized your -file you might need to manually add@babel/preset-typescript to the presets-section.
kcd-scripts will automatically load any .ts and .tsx files, including the
default entry point, so you don't have to worry about any rollup configuration.
If you have a typecheck script (normally set to kcd-scripts typecheck) thatvalidate
will be run as part of the script (which is run as part of thepre-commit script as well).
TypeScript definition files will also automatically be generated during the
build script.
This is inspired by react-scripts.
If you are aware of any please [make a pull request][prs] and add it here!
Again, this is a very specific-to-me solution.
- Rollpkg - convention over config build
tool to create packages with TypeScript and Rollup.
- bebbi-scripts - like kcd-scripts but
✅ tsc, ✅ esm/cjs/types`, ✅ in TS, ✅ yarn 3, ✅ init package.json,
✅ yarn workspace, ✅ extensible (babel, storybook, ..), 🚫 yarn pnp, 🚫 npm
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
label._
Please file an issue for bugs, missing documentation, or unexpected behavior.
[See Bugs][bugs]
Please file an issue to suggest new features. Vote on feature requests by adding
a 👍. This helps maintainers prioritize what to work on.
[See Feature Requests][requests]
Thanks goes to these people ([emoji key][emojis]):
This project follows the [all-contributors][all-contributors] specification.
Contributions of any kind welcome!
MIT
[npm]: https://www.npmjs.com
[node]: https://nodejs.org
[build-badge]: https://img.shields.io/github/workflow/status/kentcdodds/kcd-scripts/validate?logo=github&style=flat-square
[build]: https://github.com/kentcdodds/kcd-scripts/actions?query=workflow%3Avalidate
[coverage-badge]: https://img.shields.io/codecov/c/github/kentcdodds/kcd-scripts.svg?style=flat-square
[coverage]: https://codecov.io/github/kentcdodds/kcd-scripts
[version-badge]: https://img.shields.io/npm/v/kcd-scripts.svg?style=flat-square
[package]: https://www.npmjs.com/package/kcd-scripts
[downloads-badge]: https://img.shields.io/npm/dm/kcd-scripts.svg?style=flat-square
[npmtrends]: http://www.npmtrends.com/kcd-scripts
[license-badge]: https://img.shields.io/npm/l/kcd-scripts.svg?style=flat-square
[license]: https://github.com/kentcdodds/kcd-scripts/blob/master/LICENSE
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
[prs]: http://makeapullrequest.com
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
[coc]: https://github.com/kentcdodds/kcd-scripts/blob/master/other/CODE_OF_CONDUCT.md
[emojis]: https://github.com/all-contributors/all-contributors#emoji-key
[all-contributors]: https://github.com/all-contributors/all-contributors
[all-contributors-badge]: https://img.shields.io/github/all-contributors/kentcdodds/kcd-scripts?color=orange&style=flat-square
[bugs]: https://github.com/kentcdodds/kcd-scripts/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Acreated-desc+label%3Abug
[requests]: https://github.com/kentcdodds/kcd-scripts/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement
[good-first-issue]: https://github.com/kentcdodds/kcd-scripts/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement+label%3A%22good+first+issue%22