npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

moe-scripts

v0.1.29

Published

CLI toolbox for common scripts for JavaScript / TypeScript projects

Downloads

82

Readme

moe-scripts

Commitizen friendly

Description

CLI toolbox for common scripts for JavaScript / TypeScript projects. Inspired by "Tools without config" and kcd-scripts

Synopsis

  1. Create a project:
    • npm init my-project
    • If TypeScript: add types into package.json such as:
      • { "types": "lib/index" }
  2. Install:
    • npm install --save-dev moe-scripts
  3. Use scripts:
    • npm run build -- --watch
    • npm run build:doc
    • npm run validate
    • npm run commit
    • npm 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 .eslintignore in 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 --preserveWatchOutput

commit

Example

$ npm run commit
$ npx moe-scripts commit

contributors

Example

$ npx moe-scripts contributors

doc

Properties

| Name | Description | | --- | --- | | [OTHERS] | All CLI options used by related binary. (jsdoc2md) |

Example

$ npm run build:doc
$ npx moe-scripts doc

format

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 format

info

Example

$ npx moe-scripts info

init

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 init

lint

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

precommit

Properties

| Name | Description | | --- | --- | | [OTHERS] | All CLI options used by related binary. (prettier) |

reset

Example

$ npx moe-scripts reset

test

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 test

travis-after-success

Example

$ npx travis-after-success

validate

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