Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/kentcdodds/kcd-scripts

CLI toolbox for common scripts for my projects
https://github.com/kentcdodds/kcd-scripts

Last synced: 20 days ago
JSON representation

CLI toolbox for common scripts for my projects

Lists

README

        


kcd-scripts πŸ› πŸ“¦

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]

## The problem

I do a bunch of open source and want to make it easier to maintain so many
projects.

## This solution

This is a CLI that abstracts away all configuration for my open source projects
for linting, testing, building, and more.

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Overriding Config](#overriding-config)
- [TypeScript Support](#typescript-support)
- [Inspiration](#inspiration)
- [Other Solutions](#other-solutions)
- [Issues](#issues)
- [πŸ› Bugs](#-bugs)
- [πŸ’‘ Feature Requests](#-feature-requests)
- [Contributors ✨](#contributors-)
- [LICENSE](#license)

## Installation

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
```

## Usage

This is a CLI and exposes a bin called `kcd-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 `kcd-scripts`.

### Overriding Config

Unlike `react-scripts`, `kcd-scripts` allows you to specify your own
configuration for things and have that plug directly into the way things work
with `kcd-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
`kcd-scripts` 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](https://github.com/eslint/eslint/issues/9227).

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)$': '/node_modules/ts-jest/preprocessor.js',
},
})
```

> 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.

### TypeScript Support

If the `tsconfig.json`-file is present in the project root directory and
`typescript` is a dependency the `@babel/preset-typescript` will automatically
get loaded when you use the default babel config that comes with `kcd-scripts`.
If you customized your `.babelrc`-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`) that
will be run as part of the `validate` script (which is run as part of the
`pre-commit` script as well).

TypeScript definition files will also automatically be generated during the
`build` script.

## Inspiration

This is inspired by `react-scripts`.

## Other Solutions

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](https://github.com/rafgraph/rollpkg) - convention over config build
tool to create packages with TypeScript and Rollup.
- [bebbi-scripts](https://github.com/bebbi/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

## Issues

_Looking to contribute? Look for the [Good First Issue][good-first-issue]
label._

### πŸ› Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

[**See Bugs**][bugs]

### πŸ’‘ Feature Requests

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]

## Contributors ✨

Thanks goes to these people ([emoji key][emojis]):



Kent C. Dodds
Kent C. Dodds

πŸ’» πŸ“– πŸš‡ ⚠️
Suhas Karanth
Suhas Karanth

πŸ’» πŸ› ⚠️
Matt Parrish
Matt Parrish

πŸ’» ⚠️
Mateus
Mateus

πŸ’» ⚠️
Macklin Underdown
Macklin Underdown

πŸ’» ⚠️
stereobooster
stereobooster

πŸ’» ⚠️
Dony Sukardi
Dony Sukardi

πŸ› πŸ’»


Alexander Nanberg
Alexander Nanberg

πŸ’»
Alex Liang
Alex Liang

πŸ’»
Jeff Detmer
Jeff Detmer

πŸ’»
Alex Zherdev
Alex Zherdev

πŸ’»
Adam Harrington
Adam Harrington

πŸ’» ⚠️
AdriΓ  Fontcuberta
AdriΓ  Fontcuberta

πŸ’»
Eric Berry
Eric Berry

πŸ”


Jared Schaab
Jared Schaab

πŸ’» ⚠️
Bitcollage
Bitcollage

πŸ’»
MichaΓ«l De Boey
MichaΓ«l De Boey

πŸ’» πŸ‘€
Weyert de Boer
Weyert de Boer

πŸ’»
Jakub JastrzΔ™bski
Jakub JastrzΔ™bski

πŸ’»
Lukas
Lukas

πŸ’» πŸ“–
Rahim Alwer
Rahim Alwer

πŸ’»


Vincent Ricard
Vincent Ricard

πŸ’»
Tim Deschryver
Tim Deschryver

πŸ’»
Eddy Wilson
Eddy Wilson

πŸ‘€
Ricardo Busquet
Ricardo Busquet

πŸ‘€
Peter HozΓ‘k
Peter HozΓ‘k

πŸ‘€
Marco Moretti
Marco Moretti

πŸ’»
Rafael Pedicini
Rafael Pedicini

πŸ“–


Michael Peyper
Michael Peyper

πŸ’»
HOU Ce
HOU Ce

πŸ’»
Ari PerkkiΓΆ
Ari PerkkiΓΆ

πŸ’» ⚠️
Sebastian Silbermann
Sebastian Silbermann

πŸ’»
Nicolas Stepien
Nicolas Stepien

πŸ’»
Varun
Varun

πŸ“–
Nick McCurdy
Nick McCurdy

πŸ’»


Sai Maheshwar
Sai Maheshwar

πŸ’»

This project follows the [all-contributors][all-contributors] specification.
Contributions of any kind welcome!

## LICENSE

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