jmd-scripts

CLI for common scripts for my projects

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
jmd-scripts
181.13.03 years ago7 years agoMinified + gzip package size for jmd-scripts in KB

Readme

jmd-scripts 🛠📦

CLI toolbox for common scripts for my projects


!Build Statusbuild-badgebuild !Code Coveragecoverage-badgecoverage !versionversion-badgepackage !downloadsdownloads-badgenpmtrends !MIT Licenselicense-badgelicense !All Contributorsall-contributors-badge !PRs Welcomeprs-badgeprs !Code of Conductcoc-badgecoc

The problem

I want to make it easier to maintain my 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


- Overriding Config - TypeScript Support - 🐛 Bugs - 💡 Feature Requests

Installation

This module is distributed via npmnpm which is bundled with nodenode and should be installed as one of your project's devDependencies:
npm install --save-dev jmd-scripts

Usage

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

Overriding Config

Unlike react-scripts, jmd-scripts allows you to specify your own configuration for things and have that plug directly into the way things work with jmd-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 jmd-scripts will use that instead of it's own internal config. In addition, jmd-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/jmd-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": ["jmd-scripts/babel"]}

Or, for jest:
const { jest: jestConfig } = require('jmd-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: jmd-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 jmd-scripts. If you customized your .babelrc-file you might need to manually add @babel/preset-typescript to the presets-section.
jmd-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 jmd-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 and heavily borrows code from kcd-scripts.

Other Solutions

I'm not aware of any, if you are please make a pull requestprs and add it here! Again, this is a very specific-to-me solution.

Issues

Looking to contribute? Look for the Good First Issuegood-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 Requestsrequests

Contributors ✨

Thanks goes to these people (emoji keyemojis):

|
Jeff Detmer

💻 📖 🚇') | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |

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

LICENSE

MIT