moe-scripts v0.1.29
moe-scripts
Description
CLI toolbox for common scripts for JavaScript / TypeScript projects. Inspired by "Tools without config" and kcd-scripts
Synopsis
- Create a project:
npm init my-project- If TypeScript: add
typesintopackage.jsonsuch as:{ "types": "lib/index" }
- Install:
npm install --save-dev moe-scripts
- Use scripts:
npm run build -- --watchnpm run build:docnpm run validatenpm run commitnpm run release- ... etc.
Beware
Build yours using script-helper.
Instead of using this toolbox directly, consider creating yours using script-helper. This library is an example usage for script-helper and not meant for general use.
If it fits you, fork it, because it may change from version to version according to needs of author.
Problem
There are lots of configuration and boilerplate to start and maintain a JavaScript project. It is very tiresome to update libraries and configurations within multiple projects. See "Tools without config"
Solution
This toolkit is provided as an npm module and every configuration for linting, testing, building and more are initialized with a single command and updated simply updating a single npm package.
Configuration
This toolkit exposes a bin called moe-scripts. All scripts are stored in
lib/scripts and all configurations are stored either in lib/config or in root of the library.
Toolkit decide whether a project is a TypeScript project or JavaScript project by looking types
entry in package.json.
moe-scripts init is automatically executed after package install and creates configuration files
and entries in package.json if they do not exist. See init script below.
All scripts can be further refined used arguments related to used tool within that script. It is mostly avoided to provide extra besides original ones of the tool parameters if really not necessary.
Overriding Configuration
Most of the configuration can be extended by native extend mechanism of the related
library. Those which cannot be extended such as .gitignore or can be extended but
behaves according to location of extended file such as tsconfig.json are used with
symbolic links pointing to a file in this toolkit.
All of the configuration can be overridden.
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.
ESLint
Create an .eslintrc with the contents of:
{"extends": "./node_modules/moe-scripts/eslint.js"}Note: for now, you'll have to include an
.eslintignorein your project until this eslint issue is resolved.
TSLint
It is extendible via:
{ "extends": "moe-scripts/tslint.json" }Note: tslint.json is not a symbolic link in source root. There is no safe place to link it, because lib is not always available in source and src is not available in npm package.
Babel
Or, for babel, a .babelrc with:
{"presets": ["moe-scripts/babel"]}Jest
const {jest: jestConfig} = require('moe-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',
},
})Inspiration
This toolkit is based on and very heavily inspired by kcd-scripts. I'm also grateful for his Tools without config article. I created this as a fork and a separate toolkit instead of contributing it, because he mentioned that, like me, kcd-scripts are a personal project and specific to his needs. (Like this one is specific to my needs).
API
Modules
build
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| --bundle | If present, uses rollup, otherwise TypeScript or Babel. | ||
| --outDir | string | "lib" | Output destination for built files. |
| --no-clean | If present, does not clean target directory. | ||
| --out-dir | string | "lib" | Output destination for built files. |
| OTHERS | All CLI options used by related binary. (tsc, babel or rollup) |
Example
$ npm run build -- --watch --preserveWatchOutput
$ npx moe-scripts build
$ npx moe-scripts build --watch --preserveWatchOutputcommit
Example
$ npm run commit
$ npx moe-scripts commitcontributors
Example
$ npx moe-scripts contributorsdoc
Properties
| Name | Description |
|---|---|
| OTHERS | All CLI options used by related binary. (jsdoc2md) |
Example
$ npm run build:doc
$ npx moe-scripts docformat
Properties
| Name | Description |
|---|---|
| --no-write | If provided files are not written to disk. (Default is write to disk). |
| OTHERS | All CLI options used by related binary. (prettier) |
Example
$ npm run format
$ npx moe-scripts formatinfo
Example
$ npx moe-scripts infoinit
Properties
| Name | Description |
|---|---|
| ...files | Files to lint |
| --no-cache | Disables ESLint --cache arg which is added by this script. |
| OTHERS | All CLI options used by related binary. (TSLint or ESLint) |
Example
$ npx moe-scripts initlint
Properties
| Name | Description |
|---|---|
| ...files | Files to lint |
| --no-cache | Disables ESLint's --cache arg which is added by this script. |
| OTHERS | All CLI options used by related binary. (TSLint or ESLint) |
Example
$ npm run lint
$ npm run lint my-file.ts -- --config my-config.json
$ npx moe-scripts lint
$ npx moe-scripts lint --no-cache
$ npx moe-scripts lint my-file.tsprecommit
Properties
| Name | Description |
|---|---|
| OTHERS | All CLI options used by related binary. (prettier) |
reset
Example
$ npx moe-scripts resettest
Properties
| Name | Description |
|---|---|
| --no-watch | If provided, works once. (Default is watch mode) |
| OTHERS | All CLI options used by related binary. (jest) |
Example
$ npm run test
$ npx moe-scripts testtravis-after-success
Example
$ npx travis-after-successvalidate
Properties
| Name | Description |
|---|---|
| 0 | If provided vomma separated list of npm script names to run. |
Example
$ npm run validate my-custom-validator
$ npx moe-scripts validate
$ npx moe-scripts validate my-custom-validator,second-validator7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago