open-index/open-npm huggingface dataset:
npm package: @start/cli
Description: ⬛️ CLI entry point
Author: Kir Belevich
Latest version: 2.0.1

# ⬛️ cli

CLI entry point.

## Install

```sh
$ yarn add --dev @start/cli
```

## Usage

### Example

```js
// package.json

"start": {
  // `./tasks` by default if there is no `preset` option
  "file": "./my-tasks-file",
  // module name as a preset, overrides `file` option
  "preset": "my-awesome-start-preset",
  // modules to require before anything else, kinda `node -r`
  "require": [
    // module name
    "whatever-require-hook-lib",
    // or a tuple with settings, just like in Babel
    [
      "@babel/register",
      {
        "extensions": [
          ".ts",
          ".js"
        ]
      }
    ]
  ],
  // reporter module name
  "reporter": "@start/reporter-verbose"
}
```

```sh
$ yarn start

One of the following task names is required:
* foo
* bar
* baz
```

```sh
$ yarn start foo
$ yarn start bar arg
$ yarn start baz arg1 arg2
```
npm package: @start/cli-lib
Description: ⬛️ Core CLI lib
Author: Kir Belevich
Latest version: 0.1.0
Deprecated: This package has been deprecated

# ⬛️ cli-lib

[![npm](https://img.shields.io/npm/v/@start/cli-lib.svg?style=flat-square)](https://www.npmjs.com/package/@start/cli-lib) [![linux](https://img.shields.io/travis/deepsweet/start/master.svg?label=linux&style=flat-square)](https://travis-ci.org/deepsweet/start) [![windows](https://img.shields.io/appveyor/ci/deepsweet/start/master.svg?label=windows&style=flat-square)](https://ci.appveyor.com/project/deepsweet/start) [![coverage](https://img.shields.io/codecov/c/github/deepsweet/start/master.svg?style=flat-square)](https://codecov.io/github/deepsweet/start) [![deps](https://david-dm.org/deepsweet/start.svg?path=packages/cli&style=flat-square)](https://david-dm.org/deepsweet/start?path=packages/cli)

Core CLI lib.

## Install

```sh
$ yarn add --dev @start/cli-lib
# or
$ npm install --save-dev @start/cli-lib
```

## Usage

### Signature

```ts
cliLib(options: {
  file?: string,
  preset?: string,
  reporter?: string,
  taskName?: string,
  taskArgs?: string[]
})
```

### Example

```js
import cliLib from '@start/cli-lib'

cliLib({
  file: options.file,
  preset: options.preset,
  reporter: options.reporter,
  taskName: process.argv[2],
  taskArgs: process.argv.slice(3)
}).catch((error) => {
  if (error !== null) {
    console.log(error)
  }

  process.exit(1)
})
```
npm package: @start/plugin
Description: ⚙️ Plugin creator
Author: Kir Belevich
Latest version: 2.0.0

# ⚙️ plugin

Plugin creator.

## Install

```sh
$ yarn add @start/plugin
```

## Usage

### Types

See [`src/index.ts`](src/index.ts) for all the types. It's (usually) better than any words.

### Example

```js
import plugin from '@start/plugin'

export default plugin('noop', () => () => {})
```

```js
import plugin from '@start/plugin'

export default plugin('foo', ({ logPath }) => async ({ files }) => {
  const { default: fooTransform } = await import('foo-lib')

  return {
    files: await Promise.all(
      files.map(async (file) =>
        const { transformedData, sourceMap } = fooTransform(file.path)

        logPath(file.path)

        return {
          path: file.path,
          data: transformedData,
          map: sourceMap
        }
      )
    )
  }
})
```

```js
import plugin from '@start/plugin'

export default (barOptions) =>
  plugin('bar', ({ logMessage }) => async () => {
    const { default: barCheck } = await import('bar-lib')

    const barResult = barCheck(files, barOptions)

    if (barResult.issues.length === 0) {
      logMessage('¯\\_(ツ)_/¯')
    }
  })
```

## Notes

* Dynamic imports – [it's a good idea](https://github.com/gulpjs/gulp/issues/632) to "lazyload" dependencies inside of a plugin function instead of importing it on top of a file
* Plugin can return whatever "props" object or just nothing, and that output will extend an input props as an overall plugin result
* `files` – many plugins works with `files` structure: it's an array of `{ path, data, map }` objects, where:
  * `path` – absolute file path
  * `data` – file data as utf8 string, if any
  * `map` – [Source Map object](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-anatomy), if any
* `logMessage` – any random message from plugin
* `logPath` – current file path to indicate some kind of progress
* `reporter` – advanced prop which should be passed through if plugin operates other plugins, like [sequence](../plugin-sequence) or [watch](../plugin-watch)
npm package: @start/plugin-assert
Description: ❓ Node.js assert()
Author: Kir Belevich
Latest version: 2.0.0

# ❓ plugin-assert

Node.js [`assert()`](https://nodejs.org/docs/latest-v8.x/api/all.html#assert_assert_value_message).

## Install

```sh
$ yarn add --dev @start/plugin-assert
```

## Usage

### Signature

```ts
assert(arg: any, message?: string)
```

### Example

```js
export const task = (arg) => assert(arg, 'arg is required')
```
npm package: @start/plugin-concurrent
Description: 🔀 Run plugins concurrently
Author: Kir Belevich
Latest version: 0.1.0

# 🔀 plugin-concurrent

Run plugins concurrently.

## Install

```sh
$ yarn add --dev @start/plugin-concurrent
```

## Usage

### Signature

```ts
concurrent(...plugins: StartPlugin[])
```

### Example

```js
import concurrent from '@start/plugin-sequence'
import remove from '@start/plugin-remove'

export const task = () =>
  concurrent(
    remove('foo/'),
    remove('bar/') 
  )
```
npm package: @start/plugin-copy
Description: 👯 Copy files to relative destination using streams and keeping folders structure
Author: Kir Belevich
Latest version: 2.0.1

# 👯 plugin-copy

Copy files to relative destination using streams and keeping folders structure.

## Install

```sh
$ yarn add --dev @start/plugin-copy
```

## Usage

### Signature

```ts
copy(outDirRelative: string)
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import copy from '@start/plugin-copy'

export const task = () =>
  sequence(
    find('src/**/*.json'),
    copy('build/')
  )
```
npm package: @start/plugin-env
Description: 👔 Set environment variable using process.env
Author: Kir Belevich
Latest version: 2.0.0

# 👔 plugin-env

Set environment variable using [`process.env`](https://nodejs.org/api/all.html#process_process_env).

## Install

```sh
$ yarn add --dev @start/plugin-env
```

## Usage

### Signature

```ts
env(vars: { [key: string]: any })
```

### Example

```js
import sequence from '@start/plugin-sequence'
import env from '@start/plugin-env'
import webpack from '@start/plugin-webpack'

export task = async () => {
 const { default: webpackConfig } = await import('./webpack-config')

  return sequence(
    env({ NODE_ENV: 'production' }),
    webpack(webpackConfig)
  )
}
```
npm package: @start/plugin-find
Description: 🔍 Find files using glob patterns
Author: Kir Belevich
Latest version: 2.0.0

# 🔍 plugin-find

Find files using glob patterns.

## Install

```sh
$ yarn add --dev @start/plugin-find
```

## Usage

### Signature

```ts
find(glob: string | string[], options?: {})
```

#### `glob`

[minimatch patterns](https://github.com/isaacs/minimatch#usage).

#### `options`

[fast-glob options](https://github.com/mrmlnc/fast-glob#options-1).

Default:

```js
{
  ignore: ['node_modules/**']
}
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import copy from '@start/plugin-copy'

export const task = () =>
  sequence(
    find('src/**/*.json'),
    copy('build/')
  )
```
npm package: @start/plugin-find-git-staged
Description: 🔍 Find Git staged files and filter them using glob patterns
Author: Kir Belevich
Latest version: 2.0.1

# 🔍 plugin-find-git-staged

Find Git staged files and filter them using glob patterns.

## Install

```sh
$ yarn add --dev @start/plugin-find-git-staged
```

## Usage

### Signature

```ts
findGitStaged(glob: string | string[])
```

#### `glob`

[minimatch patterns](https://github.com/isaacs/minimatch#usage)

### Example

```js
import sequence from '@start/plugin-sequence'
import findGitStaged from '@start/plugin-find-git-staged'
import eslint from '@start/plugin-lib-eslint'

export const task = () =>
  sequence(
    findGitStaged('src/**/*.js'),
    eslint()
  )
```
npm package: @start/plugin-input-files
Description: 🔌 Inject arguments as files into Start flow files
Author: Kir Belevich
Latest version: 2.0.0

# 🔌 plugin-input-files

Inject arguments as files into Start flow.

## Install

```sh
$ yarn add --dev @start/plugin-input-files
```

## Usage

### Signature

```ts
inputFiles(target: StartPlugin): (...files: string[])
```

### Example

```js
import inputFiles from '@start/plugin-input-files'
import eslint from '@start/plugin-lib-eslint'

export task = inputFiles(eslint())
```
npm package: @start/plugin-lib-auto
Description: 🤖 Auto Tools
Author: Kir Belevich
Latest version: 0.6.0

# 🤖 plugin-lib-auto

[![npm](https://img.shields.io/npm/v/@start/plugin-lib-auto.svg?style=flat-square)](https://www.npmjs.com/package/@start/plugin-lib-auto) [![linux](https://img.shields.io/travis/deepsweet/start/master.svg?label=linux&style=flat-square)](https://travis-ci.org/deepsweet/start) [![windows](https://img.shields.io/appveyor/ci/deepsweet/start/master.svg?label=windows&style=flat-square)](https://ci.appveyor.com/project/deepsweet/start) [![coverage](https://img.shields.io/codecov/c/github/deepsweet/start/master.svg?style=flat-square)](https://codecov.io/github/deepsweet/start) [![deps](https://david-dm.org/deepsweet/start.svg?path=packages/plugin-lib-auto&style=flat-square)](https://david-dm.org/deepsweet/start?path=packages/plugin-lib-auto)

TBA.

## Install

```sh
$ yarn add --dev @start/plugin-lib-auto
# or
$ npm install --save-dev @start/plugin-lib-auto
```
npm package: @start/plugin-lib-babel
Description: 🏭 Transform files using Babel
Author: Kir Belevich
Latest version: 3.0.0

# 🏭 plugin-lib-babel

Transform files using [Babel](https://babeljs.io/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-babel
```

## Usage

### Signature

```ts
babel(options?: TransformOptions)
```

#### `options`

[Babel options](https://babeljs.io/docs/usage/api/#options).

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'

const babelConfig = {
  // …
  babelrc: false,
  sourceMaps: true,
}

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    babel(babelConfig),
    write('build/')
  )
```
npm package: @start/plugin-lib-codecov
Description: 💯 Send code coverage report to codecov.io
Author: Kir Belevich
Latest version: 2.0.0

# 💯 plugin-lib-codecov

Send code coverage report to [codecov.io](https://codecov.io/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-codecov
```

## Usage

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import codecov from '@start/plugin-lib-codecov'

export task = () =>
  sequence(
    find('coverage/lcov.info'),
    read,
    codecov
  )
```
npm package: @start/plugin-lib-eslint
Description: 🚷 Lint and/or fix code using ESLint
Author: Kir Belevich
Latest version: 3.0.0

# 🚷 plugin-lib-eslint

Lint and/or fix code using [ESLint](https://eslint.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-eslint
```

## Usage

### Signature

```ts
eslint(options?: {}, formatter?: string)
```

#### `options`

[ESLint CLIEngine options](https://eslint.org/docs/developer-guide/nodejs-api#cliengine).

Default:

```js
{
  cache: true,
  cacheLocation: 'node_modules/.cache/eslint'
}
```

#### `formatter`

[ESLint formatter](https://eslint.org/docs/developer-guide/nodejs-api#clienginegetformatter).

### Example

```js
import sequence from '@start/plugin-sequence'
import findGitStaged from '@start/plugin-find-git-staged'
import read from '@start/plugin-read'
import eslint from '@start/plugin-lib-eslint'

export const task = () =>
  sequence(
    findGitStaged('src/**/*.js'),
    read,
    eslint({
      rules: {
        'no-undef': 'error'
      }
    })
  )
```

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import eslint from '@start/plugin-lib-eslint'
import overwrite from '@start/plugin-overwrite'

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    eslint({ fix: true }),
    overwrite
  )
```
npm package: @start/plugin-lib-esm-loader
Description: 🏭 Copy a predefined ESM loader file to a directory
Author: Kir Belevich
Latest version: 2.0.0

# 🏭 plugin-lib-esm-loader

Copy a predefined [ESM loader](https://github.com/standard-things/esm) file to a directory.

## Install

```sh
$ yarn add --dev @start/plugin-lib-esm-loader
```

## Usage

### Signature

```ts
copyEsmLoader(outDir: string, filename: string = 'esm-loader.js')
```

### Example

```json
{
  "name": "my-package",
  "version": "1.0.0",
  "main": "build/esm-loader.js",
  "module": "build/index.js",
  "dependencies": {
    "esm": "^3.0.75"
  }
}
```

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'
import copyEsmLoader from '@start/plugin-lib-esm-loader'

const babelConfig = {
  // …
  babelrc: false,
  sourceMaps: true,
  presets: [
    ['@babel/preset-env', {
      targets: { node: 6 },
      modules: false
    }]
  ]
}

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    babel(babelConfig),
    write('build/'),
    copyEsmLoader('build/')
  )
```
npm package: @start/plugin-lib-flow-check
Description: 🚷 Check types using Flow
Author: Kir Belevich
Latest version: 2.0.0

# 🚷 plugin-lib-flow-check

Check types using [Flow](https://flow.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-flow-check
```

## Usage

### Signature

```ts
flowGenerate(outDirRelative: string, ...flowArgs: string[])
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import flowGenerate from '@start/plugin-lib-flow-generate'

export task = () =>
  sequence(
    find('src/**/*.js'),
    flowGenerate('build/')
  )
```
npm package: @start/plugin-lib-flow-generate
Description: 🏭 Generate `.js.flow` files using Flow
Author: Kir Belevich
Latest version: 2.0.0

# 🏭 plugin-lib-flow-generate

Generate `.js.flow` files using [Flow](https://flow.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-flow-generate
```

## Usage

### Signature

```ts
flowCheck(...flowArgs: string[])
```

### Example

```js
import flowGenerate from '@start/plugin-lib-flow-generate'

export task = () => flowCheck()
```
npm package: @start/plugin-lib-istanbul
Description: 💯 Collect, report and check code coverage using Istanbul
Author: Kir Belevich
Latest version: 2.0.0

# 💯 plugin-lib-istanbul

Collect, report and check code coverage using [Istanbul](https://istanbul.js.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-istanbul
```

## Usage

### Signature

```ts
istanbulInstrument(extensions?: string[])
```

#### `options`

#### `extensions`

File extensions to instrument, for example `['.ts']`

```ts
import type { ReportType } from 'istanbul-reports'

istanbulReports(formats: ReportType[] = ['lcovonly', 'text-summary'])
```

```ts
istanbulThresholds(options: {
  branches?: number,
  functions?: number,
  lines?: number,
  statements?: number
})
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import {
  istanbulInstrument,
  istanbulReport,
  istanbulThresholds
} from '@start/plugin-lib-istanbul'
import tape from '@start/plugin-lib-tape'

export const task = () =>
  sequence(
    find('src/**/*.js'),
    istanbulInstrument(),
    find('test/**/*.js'),
    tape(),
    istanbulReport(['lcovonly', 'html', 'text-summary']),
    istanbulThresholds({ functions: 100 })
  )
```
npm package: @start/plugin-lib-jest
Description: ✅ Run tests using Jest
Author: Kir Belevich
Latest version: 3.0.0

# ✅ plugin-lib-jest

Run tests using [Jest](https://facebook.github.io/jest/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-jest
```

## Usage

### Signature

```ts
jest(argv?: ArgvOptions)
```

#### `options`

[Jest "argv" options](https://github.com/facebook/jest/blob/cc5d630ec1cdbf8414ab78af800cb838d24ee63c/packages/jest-types/src/Config.ts#L358-L446).

### Example

```js
import jest from '@start/plugin-lib-jest'

export task () => jest({
  browser: true
})
```
npm package: @start/plugin-lib-karma
Description: ✅ Run tests using Karma
Author: Kir Belevich
Latest version: 2.0.0

# ✅ plugin-lib-karma

Run tests using [Karma](https://github.com/karma-runner/karma).

## Install

```sh
$ yarn add --dev @start/plugin-lib-karma
```

## Usage

### Signature

```ts
karma(options: {})
```

#### `options`

[Karma config options](https://karma-runner.github.io/2.0/config/configuration-file.html).

### Example

```js
import karma from '@start/plugin-lib-karma'

export const task = () => karma({
  browsers: [ 'Chrome', 'Firefox' ],
  files: [
    'test/index.js'
  ],
  singleRun: true
})
```
npm package: @start/plugin-lib-npm-publish
Description: 📦 Publish package to NPM
Author: Kir Belevich
Latest version: 2.0.0

# 📦 plugin-lib-npm-publish

Publish package to NPM.

## Install

```sh
$ yarn add --dev @start/plugin-lib-npm-publish
```

## Usage

### Signature

```ts
npmPublish(packagePath: string, options?: {})
```

#### `packagePath`

Relative path to package, `.` by default.

#### `options`

[NPM publish options](https://docs.npmjs.com/cli/publish)

Default:

```js
{
  registry: 'https://registry.npmjs.org/'
}
```

### Example

```js
import npmPublish from '@start/plugin-npm-plugin-lib-npm-publish'

export task = (packageName) => npmPublish(`packages/${packageName}`)
```
npm package: @start/plugin-lib-npm-version
Description: 🔢 Bump package version
Author: Kir Belevich
Latest version: 2.0.0

# 🔢 plugin-lib-npm-version

Bump package version.

## Install

```sh
$ yarn add --dev @start/plugin-lib-npm-version
```

## Usage

### Signature

```ts
npmVersion(version: string, options?: {)
```

#### `version`

`<newversion> | major | minor | patch | premajor | premin
or | prepatch | prerelease | from-git`

#### `options`

[NPM version options](https://docs.npmjs.com/cli/version).

### Example

```js
import npmVersion from '@start/plugin-npm-plugin-lib-npm-version'

export task = (version) => npmVersion(version, { message: '📦 v%s' })
```
npm package: @start/plugin-lib-postcss
Description: 🏭 Transform files using PostCSS
Author: Kir Belevich
Latest version: 2.0.0

# 🏭 plugin-lib-postcss

Transform files using [PostCSS](https://postcss.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-postcss
```

## Usage

### Signature

```ts
postcss(options?: {})
```

#### `options`

* `plugins` – an array of [PostCSS plugins](https://github.com/postcss/postcss#plugins)
* `sourceMaps` – boolean whether to process source maps or not
* `parser`, `stringifier`, `syntax` – [PostCSS options](https://github.com/postcss/postcss#options)

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import postcss from '@start/plugin-lib-postcss'
import write from '@start/plugin-write'

import autoprefixer from 'autoprefixer'

export const task = () =>
  sequence(
    find('src/**/*.css'),
    read,
    postcss({
      plugins: [autoprefixer],
      sourceMaps: true
    }),
    write('build/')
  )
```
npm package: @start/plugin-lib-prettier-eslint
Description: 🚷 Fix code(style) using Prettier + ESLint
Author: Kir Belevich
Latest version: 2.0.0

# 🚷 plugin-lib-prettier-eslint

Fix code(style) using [Prettier + ESLint](https://github.com/prettier/prettier-eslint).

## Install

```sh
$ yarn add --dev @start/plugin-lib-prettier-eslint
```

## Usage

### Signature

```ts
prettierEslint(options?: {})
```

#### `options`

[prettier-eslint options](https://github.com/prettier/prettier-eslint#options).

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import prettierEslint from '@start/plugin-lib-prettier-eslint'
import overwrite from '@start/plugin-overwrite'

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    prettierEslint(),
    overwrite
  )
```
npm package: @start/plugin-lib-rollup
Description: 🏭 Bundle files using Rollup
Author: Kir Belevich
Latest version: 3.0.0

# 🏭 plugin-lib-rollup

Bundle files using [Rollup](https://rollupjs.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-rollup
```

## Usage

### Signature

```ts
rollup(config: {})
```

#### `config`

[Rollup configuration](https://rollupjs.org/guide/en#configuration-files).

### Example

```js
import sequence from '@start/plugin-sequence'
import env from '@start/plugin-env'
import rollup from '@start/plugin-lib-rollup'

export const task = async () => {
  const { default: rollupConfig } = await import('./rollup.config')

  return sequence(
    env('NODE_ENV', 'production'),
    rollup(rollupConfig)
  )
}
```
npm package: @start/plugin-lib-tape
Description: ✅ Run tests using Tape
Author: Kir Belevich
Latest version: 3.0.0

# ✅ plugin-lib-tape

Run tests using [Tape](https://github.com/substack/tape).

## Install

```sh
$ yarn add --dev @start/plugin-lib-tape
```

## Usage

### Signature

```ts
tape(reporter?: () => NodeJS.ReadWriteStream)
```

#### `reporter`

[TAP compatible reporter](https://github.com/substack/tape#pretty-reporters).

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import tape from '@start/plugin-lib-tape'
import tapDiff from 'tap-diff'

export const task = () =>
  sequence(
    find('test/**/*.js'),
    tape(tapDiff)
  )
```
npm package: @start/plugin-lib-typescript-check
Description: 🚷 Check types using TypeScript
Author: Kir Belevich
Latest version: 3.0.1

# 🚷 plugin-lib-typescript-check

Check types using [TypeScript](https://www.typescriptlang.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-typescript-check
```

## Usage

### Signature

```ts
typescriptCheck(options?: {})
```

#### `options`

[TypeScript Compiler options](https://www.typescriptlang.org/docs/handbook/compiler-options.html).

Default:

```js
{
  allowSyntheticDefaultImports: true,
  lib: 'esnext',
  moduleResolution: 'node',
  pretty: true
}
```

### Example

```js
import typescriptCheck from '@start/plugin-lib-typescript-check'

export const task = () => typescriptCheck()
```
npm package: @start/plugin-lib-typescript-generate
Description: 🏭 Generate `.d.ts` files using TypeScript
Author: Kir Belevich
Latest version: 4.0.0

# 🏭 plugin-lib-typescript-generate

Generate `.d.ts` files using [TypeScript](https://www.typescriptlang.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-typescript-generate
```

## Usage

### Signature

```ts
typescriptGenerate(inDir: string, outDir: string)
```

### Example

```js
import typescriptGenerate from '@start/plugin-lib-typescript-generate'

export const task = () => typescriptGenerate('src/', 'build/')
```
npm package: @start/plugin-lib-webpack
Description: 🏭 Bundle files using Webpack
Author: Kir Belevich
Latest version: 2.0.0

# 🏭 plugin-lib-webpack

Bundle files using [Webpack](https://webpack.js.org/).

## Install

```sh
$ yarn add --dev @start/plugin-lib-webpack
```

## Usage

### Signature

```ts
webpack(config: Configuration, statsOptions?: StatsOptions)
```

#### `config`

[webpack configuration](https://webpack.js.org/configuration/).

#### `statsOptions`

[webpack stats options](https://webpack.js.org/configuration/stats/#stats).

Default:

```js
{
  colors: true
}
```

### Example

```js
import sequence from '@start/plugin-sequence'
import env from '@start/plugin-env'
import webpack from '@start/plugin-lib-webpack'

export const task = async () => {
  const { default: webpackConfig } = await import('./webpack.config')

  return sequence(
    env('NODE_ENV', 'production'),
    webpack(webpackConfig)
  )
}
```
npm package: @start/plugin-lib-webpack-dev-server
Description: 🏭 Run Webpack development server
Author: Kir Belevich
Latest version: 2.0.0

# 🏭 plugin-lib-webpack-dev-server

Run [Webpack development server](https://github.com/webpack/webpack-dev-server).

## Install

```sh
$ yarn add --dev @start/plugin-lib-webpack-dev-server
```

## Usage

### Signature

```ts
webpackServe(config: WebpackConfig, devServerConfig?: WebpackDevServerConfig)
```

#### `config`

[webpack config](https://webpack.js.org/configuration#options).

#### `devServerConfig`

[webpack `devServer` config](https://webpack.js.org/configuration/dev-server).

Default:

```js
{
  host: '127.0.0.1',
  port: 8080
}
```

### Example

```js
import sequence from '@start/plugin-sequence'
import env from '@start/plugin-env'
import webpackDevServer from '@start/plugin-lib-webpack-dev-server'

export const task = async () => {
  const { default: webpackDevConfig } = await import('./webpack.dev')

  return sequence(
    env({ NODE_ENV: 'development' }),
    webpackDevServer(
      webpackConfig,
      {
        hot: true,
        port: 3000
      }
    )
  )
}
```
npm package: @start/plugin-lib-webpack-serve
Description: 🏭 Run Webpack development server
Author: Kir Belevich
Latest version: 1.0.0
Deprecated: Deprecated due to a complete rewriting of webpack-serve, use @start/plugin-lib-webpack-dev-server instead

# 🏭 plugin-lib-webpack-serve

Run [Webpack development server](https://github.com/webpack-contrib/webpack-serve).

**⚠️ Deprecated in favor of [plugin-webpack-dev-server](https://github.com/deepsweet/start/tree/master/packages/plugin-lib-webpack-dev-server)**

## Install

```sh
$ yarn add --dev @start/plugin-lib-webpack-serve
```

## Usage

### Signature

```ts
webpackServe(options: {}, argv?: {}, )
```

#### `options`

[webpack-serve options](https://github.com/webpack-contrib/webpack-serve#serveoptions).

#### `argv`

[webpack-serve argv](https://github.com/webpack-contrib/webpack-serve#argv).

### Example

```js
import sequence from '@start/plugin-sequence'
import env from '@start/plugin-env'
import webpackServe from '@start/plugin-lib-webpack-serve'

export const task = async () => {
  const { default: webpackConfig } = await import('./webpack.config')

  return sequence(
    env({ NODE_ENV: 'development' }),
    webpackServe({ config: webpackConfig })
  )
}
```
npm package: @start/plugin-overwrite
Description: ✏️ Overwrite files
Author: Kir Belevich
Latest version: 2.0.0

# ✏️ plugin-overwrite

Overwrite files.

## Install

```sh
$ yarn add --dev @start/plugin-overwrite
```

## Usage

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import eslint from '@start/plugin-lib-eslint'
import overwrite from '@start/plugin-overwrite'

export const task = () =>
  sequence(
    find('src/**/*.js'),
    eslint({ fix: true }),
    overwrite
  )
```
npm package: @start/plugin-parallel
Description: 🔀 Run tasks as parallel child processes with same agruments
Author: Kir Belevich
Latest version: 2.0.0

# 🔀 plugin-parallel

Run tasks as parallel child processes with same agruments.

## Install

```sh
$ yarn add --dev @start/plugin-parallel
```

## Usage

### Signature

```ts
parallel(taskNames: string[], options?: {}): (...args: string[])
```

#### `taskNames`

Array of exported task names.

#### `options`

* `maxProcesses` – `Infinity` by default

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import remove from '@start/plugin-remove'
import parallel from '@start/plugin-parallel'

export const buildCJS = (...args) => {
  // …
}

export const buildESM = (...args) => {
  // …
}

export const task = (...args) =>
  sequence(
    find('build/'),
    remove,
    parallel(['buildCJS', 'buildESM'])(...args)
  )
```
npm package: @start/plugin-read
Description: 📖 Read files content
Author: Kir Belevich
Latest version: 2.0.0

# 📖 plugin-read

Read files content.

## Install

```sh
$ yarn add --dev @start/plugin-read
```

## Usage

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'

const babelConfig = {
  // …
  babelrc: false,
  sourceMap: true,
}

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    babel(babelConfig),
    write('build/')
  )
```
npm package: @start/plugin-remove
Description: ❌ Remove files or directories
Author: Kir Belevich
Latest version: 2.0.0

# ❌ plugin-remove

Remove files or directories.

## Install

```sh
$ yarn add --dev @start/plugin-remove
```

## Usage

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import remove from '@start/plugin-remove'

export const task = () =>
  sequence(
    find('build/'),
    remove,
  )
```
npm package: @start/plugin-rename
Description: 🔠 Rename files
Author: Kir Belevich
Latest version: 2.0.0

# 🔠 plugin-rename

Rename files.

## Install

```sh
$ yarn add --dev @start/plugin-rename
```

## Usage

### Signature

```ts
rename(callback: (file: string) => string)
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import rename from '@start/plugin-rename'
import write from '@start/plugin-write'

const babelConfig = {
  // …
  babelrc: false,
  sourceMap: true,
}

export const task = () =>
  sequence(
    find('src/*.ts'),
    read,
    babel(babelConfig),
    rename((file) => file.replace(/\.ts$/, '.js')),
    write('build/')
  )
```
npm package: @start/plugin-sequence
Description: ⏩ Run plugins in sequence
Author: Kir Belevich
Latest version: 2.0.0

# ⏩ plugin-sequence

Run plugins in sequence.

## Install

```sh
$ yarn add --dev @start/plugin-sequence
```

## Usage

### Signature

```ts
sequence(...plugins: StartPlugin[])
```

See [@start/plugin](https://github.com/deepsweet/start/tree/master/packages/plugin) for more details.

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import copy from '@start/plugin-copy'

export const task = () =>
  sequence(
    find('src/**/*.json'),
    copy('build/')
  )
```
npm package: @start/plugin-spawn
Description: 🐣 Spawn new child process
Author: Kir Belevich
Latest version: 3.0.0

# 🐣 plugin-spawn

Spawn new child process.

## Install

```sh
$ yarn add --dev @start/plugin-spawn
```

## Usage

### Signature

```ts
const spawn: (command: string): StartPlugin
```

### Example

```js
import spawn from '@start/plugin-spawn'

export task = () => spawn('node --version')
```
npm package: @start/plugin-unpack
Description: 🗜 Unpack .tar/.tar.bz2/.tar.gz/.zip archives
Latest version: 2.0.0

# 🗜 plugin-unpack

Unpack .tar/.tar.bz2/.tar.gz/.zip archives archives.

## Install

```sh
$ yarn add --dev @start/plugin-unpack
```

## Usage

### Signature

```ts
unpack(outDir: string)
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import unpack from '@start/plugin-unpack'

export const task = () =>
  sequence(
    find('packed/*.tar'),
    unpack('unpacked/')
  )
```
npm package: @start/plugin-watch
Description: 👀 Watch for new or changed files matched by glob patterns
Author: Kir Belevich
Latest version: 2.0.0

# 👀 plugin-watch

Watch for new or changed files matched by glob patterns.

## Install

```sh
$ yarn add --dev @start/plugin-watch
```

## Usage

### Signature

```ts
watch(glob: string | string[], options?: {}): (target: StartPlugin)
```

#### `options`

[chokidar options](https://github.com/paulmillr/chokidar#api).

### Example

```js
import sequence from '@start/plugin-sequence'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'
import watch from '@start/plugin-watch'

const babelConfig = {
  // …
  babelrc: false,
  sourceMap: true,
}

export const task = () =>
  watch('src/**/*.js')(
    sequence(
      read,
      babel(babelConfig),
      write('build/')
    )
  )
```
npm package: @start/plugin-write
Description: ✏️ Write files with source maps to relative destination keeping folders structure
Author: Kir Belevich
Latest version: 2.0.1

# ✏️ plugin-write

Write files with source maps to relative destination keeping folders structure.

## Install

```sh
$ yarn add --dev @start/plugin-write
```

## Usage

### Signature

```ts
write(outDirRelative: string)
```

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'

const babelConfig = {
  // …
  babelrc: false,
  sourceMap: true,
}

export const task = () =>
  sequence(
    find('src/**/*.js'),
    read,
    babel(babelConfig),
    write('build/')
  )
```
npm package: @start/plugin-xargs
Description: 🔂 Run task as parallel child process for each argument
Author: Kir Belevich
Latest version: 2.0.1

# 🔂 plugin-xargs

Run task as parallel child process for each argument.

## Install

```sh
$ yarn add --dev @start/plugin-xargs
```

## Usage

### Signature

```ts
xargs(taskName: string, options?: {}): (...args: string[])
```

#### `taskName`

Exported task name.

#### `options`

* `maxProcesses` – `Infinity` by default

### Example

```js
import sequence from '@start/plugin-sequence'
import find from '@start/plugin-find'
import read from '@start/plugin-read'
import babel from '@start/plugin-lib-babel'
import write from '@start/plugin-write'

const babelConfig = {
  // …
  babelrc: false,
  sourceMap: true,
}

export const task1 = (packageName) =>
  sequence(
    find(`${packageName}/src/**/*.js`),
    read,
    babel(babelConfig),
    write(`${packageName}/build/`)
  )

export const task2 => (...packageNames) = xargs('task1')(...packageNames)
// export const task2 = xargs('task1')
```
npm package: @start/reporter-verbose
Description: 📃 Verbose reporter
Author: Kir Belevich
Latest version: 2.0.1

# 📃 reporter-verbose

Verbose reporter.

## Install

```sh
$ yarn add --dev @start/reporter-verbose
```

## Usage

### Example

```ts
export default (taskName: string) => {
  const emitter = new EventEmitter()

  emitter.on('start', (pluginName: string) => {})
  emitter.on('message', (pluginName: string, message: string) => {})
  emitter.on('file', (pluginName: string, file: string) => {})
  emitter.on('done', (pluginName: string) => {})
  emitter.on('error', (pluginName: string, error: Error | string[] | string | null) => {})

  return emitter
}
```