# Asset ToolKits

Node.js toolkits to optimize media assets.

## Use a pipeline

A pipe function to concatenate toolkits.

```js
const { pipeline } = require('@asset-toolkit/core')

const pipelineExample = pipeline(...fn)

pipelineExample({
  pathIn: './exampleIn/',
  pathOut: '../../exampleOut/',
})
```

## Example with pipeline

With **audio-sprite** and **json-minify** tools.
Use the function returned from _pipeline_ to pass **props** and **options**.

The **options** is an array of object.
Every object is linked to tools function passed to _pipeline_ by our order.

```bash
npm i
@asset-toolkit/core
@asset-toolkit/audio-sprite
@asset-toolkit/json-minify
```

```js
const { pipeline } = require('@asset-toolkit/core')
const audioSprite = require('@asset-toolkit/audio-sprite')
const jsonMinify = require('@asset-toolkit/json-minify')
```

```js
const options = [
  {
    output: 'spriteTrack',
    export: 'mp3, m4a',
  },
] // first argument for first tool in pipeline

const pipelineAudio = pipeline(audioSprite, jsonMinify)

pipelineAudio(
  {
    pathIn: './audio/',
    pathOut: '../public/audio',
  },
  options,
)
```

## Example with watcher

For relaunch automatically your pipeline everytime you add or modify the files in input folder.

```js
const { pipeline, watchPipeline } = require('@asset-toolkit/core')
const jsonMinify = require('@asset-toolkit/json-minify')
```

```js
const options = [
  {
    output: 'spriteTrack',
    export: 'mp3, m4a',
  },
] // first argument for first tool in pipeline

const pipelineJSON = pipeline(jsonMinify)

watchPipeline(pipelineJSON, {
  pathIn: './json/',
  pathOut: '../public/json',
})
```

## How to use

Create a js file "example.js", with your code (import and configure the pipelines like examples).

Run your code with node: **`node example.js`**

## License

[MIT](LICENSE.md)
