Runner for background and cli tasks with SASS/CommonJS bundlers using native multithreading
npm i -D @n1k1t/task-processor
or
yarn add -D @n1k1t/task-processor
- Create
.js
executable file for tasks - Register task
const { registerCliTasks } = require('@n1k1t/task-processor');
/*
Tasks which you are going to use from command line should be registered
with the "registerCliTasks" function
*/
registerCliTasks([
{
name: 'greeting',
use: [
{ processor: 'middleware', fn: () => console.log('Hi there!') }
]
}
]);
- Run it from console
node #your script
- Type
greeting
in the console - Check the message from middleware "Hi there!" in the console
- Done!
...comming soon
...comming soon
const { registerBackgroundTasks } = require('@n1k1t/task-processor');
/*
The "registerBackgroundTasks" with the "watch" option is for tasks
which should watch some files for change and run automatically
*/
registerBackgroundTasks([
{
name: 'css',
watch: { match: 'path/to/src/*.scss', ignore: ['_*.scss'] },
use: [
{ processor: 'sass-bundle' },
{ processor: 'write-files', dir: 'path/to/dest' }
]
}
]);
- First, you need to install a livereload plugin for your browser. Here is the Plugin for Google Chrome
- Turn on the livereload plugin on the page which using bundled
sass
files - Write some code
const { registerBackgroundTasks, useLivereload } = require('@n1k1t/task-processor');
/*
The "useLivereload" creates a web socket server for integration with browser
If you already have another process with the same server then
it creates the client which will integrate with the first one
*/
useLivereload();
registerBackgroundTasks([
{
name: 'css',
watch: { match: 'path/to/src/*.scss', ignore: ['_*.scss'] },
use: [
{ processor: 'sass-bundle' },
{ processor: 'write-files', dir: 'path/to/dest' },
{ processor: 'livereload', type: 'inject' }
]
}
]);
There you can find the Sharp opportunities
const { registerCliTasks, useLivereload } = require('@n1k1t/task-processor');
useLivereload();
registerCliTasks([
{
name: 'create-picture',
use: [
use: [
{
processor: 'sharp',
create: {
width: 48,
height: 48,
channels: 4,
background: { r: 255, g: 0, b: 0, alpha: 0.5 }
},
pipeline: sharp => sharp.png()
},
{ processor: 'write-files', dir: 'test/dest', name: 'result' },
{ processor: 'livereload', type: 'inject' }
]
]
}
]);
const { registerBackgroundTasks } = require('@n1k1t/task-processor');
registerBackgroundTasks([
{
name: 'js',
watch: 'path/to/src/app.js',
use: [
{ processor: 'commonjs-bundle' },
{ processor: 'write-files', dir: 'path/to/dest' }
]
}
]);
const { registerCliTasks, useThreads } = require('@n1k1t/task-processor');
/*
NOTE!!!
The "useThreads" function creates workers each CPUs count in your system
The "execPath" argument should contain the path to module where tasks
are registred.
It's important because workers have different processes. And that's
not possible to forward functions with some lexical environment or
closure to another process
*/
useThreads({ execPath: module.filename });
registerCliTasks([
{
name: 'css',
description: 'This task gets all SASS files in "path/to/src" and bundles they to "path/to/dest"',
add: { path: 'path/to/src/*.scss', ignore: ['_*.scss'] },
use: [
{ processor: 'sass-bundle' },
{ processor: 'write-files', dir: 'path/to/dest' }
]
}
]);
const { registerBackgroundTasks, useLivereload } = require('@n1k1t/task-processor');
useLivereload();
registerBackgroundTasks([
{
name: 'js',
watch: {
match: 'path/to/src/**/*.js',
triggerOnly: true // This option wont pass changed file to the task context
},
use: [
{ processor: 'get-files', path: 'path/to/main/file.js' },
{ processor: 'commonjs-bundle' },
{ processor: 'write-files', dir: 'path/to/dest', name: 'app' },
{
processor: 'livereload',
type: 'reload' // Use type with "reload" for the page refreshing
}
]
}
]);
- Add plugins support