taskr
Tools
JavaScript
Taskr
<p>
</a><br /> <a rel="nofollow noopener" target="_blank" href="https://npmjs.org/package/taskr"></p>
<p>
</a>
</p>
<p>
A fast, concurrency-focused task runner.<br /> <strong>Fasten your seatbelt. 🚀</strong>
</p>
<p>
Taskr is a highly performant task runner, much like Gulp or Grunt, but written with concurrency in mind. With Taskr, everything is a <a rel="nofollow noopener" target="_blank" href="https://medium.com/@tjholowaychuk/callbacks-vs-coroutines-174f1fe66127#.vpryf5tyb">coroutine</a>, which allows for cascading and composable tasks; but unlike Gulp, it’s not limited to the stream metaphor.<br /> Taskr is extremely extensible, so anything can be a task. Our core system will accept whatever you throw at it, resulting in a modular system of reusable plugins and tasks, connected by a declarative <code>taskfile.js</code> that’s easy to read.
</p>
<pre>const src = "https://github.com/lukeed/src/{admin,client}";
const dist = ‘build’;
module.exports = {
*lint(task) {
yield task.source(${src}/*.js
).xo({ esnext:true });
},
*scripts(task) {
yield task.source(${src}/*.js
).babel({ presets:[’es2015’] }).target(${dist}/js
);
},
*styles(task) {
yield task.source(${src}/*.sass
).sass().autoprefixer().target(${dist}/css
);
},
*build(task) {
yield task.parallel([’lint’, ‘scripts’, ‘styles’]);
}
}
<h2 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-history" class="anchor" aria-hidden="true" href="#history"></a>History
</h2>
<blockquote>
<p>
<strong>TL;DR</strong> This is the continuation of and successor to <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/fly">Fly</a>!
</p>
</blockquote>
<p>
Fly’s original author, Jorge Bucaran, has shifted focus to other exciting projects. Before leaving, he chose to guarantee Fly’s future by transferring the project to Luke Edwards, who was one of the first and most enthused contributors.<br /> To reflect this milestone, Fly has been renamed to Taskr and has a stable, exciting future ahead! 🎉<br /> For existing Fly users, <code>taskr@1.0.x</code> is equivalent to <code>fly@2.0.6</code> — with a few exceptions:
</p>
<ol dir="auto">
<li>
The <code>flyfile.js</code> has been renamed to <code>taskfile.js</code>;
</li>
<li>
The <code>fly</code> key inside <code>package.json</code> has been renamed to <code>taskr</code>. (See Local Plugins)
</li>
</ol>
<p>
At this point, the Fly & <a rel="nofollow noopener" target="_blank" href="#packages">Taskr ecosystems</a> are fully interchangeable, which means that you can install <code>taskr</code> and use any <code>fly-*</code> or <code>taskr-*</code> plugins of your choosing. That said, most plugins have already been ported over to the new namespace!<br /> Lastly, Taskr will maintain a list of <a rel="nofollow noopener" target="_blank" href="#official-packages">official plugins</a>. Don’t forget to check ’em out!
</p>
<h2 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-core-features" class="anchor" aria-hidden="true" href="#core-features"></a>Core Features
</h2>
<ul dir="auto">
<li>
<strong>lightweight:</strong> with <code>6</code> dependencies, installation takes seconds
</li>
<li>
<strong>minimal API:</strong> Taskr only exposes a couple methods, but they’re everything you’ll ever need
</li>
<li>
<strong>performant:</strong> because of Bluebird, creating and running Tasks are quick and inexpensive
</li>
<li>
<strong>cascadable:</strong> sequential Task chains can cascade their return values, becoming the next Task’s argument
</li>
<li>
<strong>asynchronous:</strong> concurrent Task chains run without side effects & can be <code>yield</code>ed consistently
</li>
<li>
<strong>composable:</strong> chain APIs and Tasks directly; say goodbye to <code>pipe()</code> x 100!
</li>
<li>
<strong>modular:</strong> easily share or export individual Tasks or Plugins for later use
</li>
<li>
<strong>stable:</strong> requires Node <code>>= 4.6</code> to run (LTS is <code>6.11</code>)
</li>
</ul>
<h2 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-docs" class="anchor" aria-hidden="true" href="#docs"></a>Docs
</h2>
<p>
The main documentation can be found in <code>taskr</code>, our core package.<br /> Each <code>@taskr/*</code> or <code>taskr-*</code> plugin will also include its own documentation, too!
</p>
<h2 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-packages" class="anchor" aria-hidden="true" href="#packages"></a>Packages
</h2>
<p>
The Taskr repo is managed as a monorepo that is composed of its many official packages.
</p>
<blockquote>
<p>
<strong>Important:</strong> The core package is <code>taskr</code> and must be installed before using any additional plugins.
</p>
</blockquote>
<h3 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-official-packages" class="anchor" aria-hidden="true" href="#official-packages"></a>Official Packages
</h3>
<p>
These npm packages are officially released and maintained by the Taskr team.<br /> If you can’t find what you need, be sure to check out the <a rel="nofollow noopener" target="_blank" href="#community-plugins">community list</a> or browse for all <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/browse/keyword/taskr-plugin">taskr-related plugins on <code>npmjs.com</code></a>, too!<br /> If you’re still missing something, open a ticket so that the team & community can try to help you… or create & share your own Taskr plugin! We have an awesome Yeoman generator to help speed up the process.
</p>
<p>
Package<br /> Version<br /> Dependencies<br /> Description
</p>
<p>
<code>taskr</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/taskr"></a><br /> Core package. Required
</p>
<p>
<code>@taskr/babel</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/babel"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/babel"></a><br /> Babel plugin for Taskr
</p>
<p>
<code>@taskr/browserify</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/browserify"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/browserify"></a><br /> Browserify plugin for Taskr
</p>
<p>
<code>@taskr/buble</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/buble"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/buble"></a><br /> Bublé plugin for Taskr
</p>
<p>
<code>@taskr/clear</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/clear"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/clear"></a><br /> Remove one or more directories
</p>
<p>
<code>@taskr/coffee</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/coffee"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/coffee"></a><br /> CoffeeScript plugin for Taskr
</p>
<p>
<code>@taskr/concat</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/concat"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/concat"></a><br /> Concatenate files with optional source maps.
</p>
<p>
<code>@taskr/esnext</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/esnext"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/esnext"></a><br /> Allows <code>async</code>/<code>await</code> syntax within <code>taskfile.js</code>
</p>
<p>
<code>@taskr/flatten</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/flatten"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/flatten"></a><br /> Flatten source files to a max of sub-dirs.
</p>
<p>
<code>@taskr/gzip</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/gzip"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/gzip"></a><br /> Gzip plugin for Taskr
</p>
<p>
<code>@taskr/htmlmin</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/htmlmin"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/htmlmin"></a><br /> Minify HTML with Taskr
</p>
<p>
<code>@taskr/jest</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/jest"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/jest"></a><br /> Jest plugin for Taskr
</p>
<p>
<code>@taskr/less</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/less"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/less"></a><br /> Compile LESS to CSS with Taskr
</p>
<p>
<code>@taskr/postcss</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/postcss"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/postcss"></a><br /> PostCSS plugin for Taskr
</p>
<p>
<code>@taskr/prettier</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/prettier"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/prettier"></a><br /> Prettier plugin for Taskr
</p>
<p>
<code>@taskr/rev</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/rev"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/rev"></a><br /> Version/Hash assets for cache-busting
</p>
<p>
<code>@taskr/sass</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/sass"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/sass"></a><br /> Compile SASS to CSS with Taskr
</p>
<p>
<code>@taskr/shell</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/shell"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/shell"></a><br /> Execute shell commands with Taskr
</p>
<p>
<code>@taskr/stylus</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/stylus"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/stylus"></a><br /> Compile Stylus to CSS with Taskr
</p>
<p>
<code>@taskr/typescript</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/typescript"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/typescript"></a><br /> Compile Typescript with Taskr
</p>
<p>
<code>@taskr/uglify</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/uglify"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/uglify"></a><br /> UglifyJS plugin for Taskr
</p>
<p>
<code>@taskr/unflow</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/unflow"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/unflow"></a><br /> Remove Flow type annotations with Taskr
</p>
<p>
<code>@taskr/watch</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/watch"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/watch"></a><br /> Watch files & Execute specified tasks on change
</p>
<p>
<code>@taskr/zip</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/@taskr/zip"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr?path=packages/zip"></a><br /> ZIP compress files with Taskr
</p>
<p>
<code>generator-taskr</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/generator-taskr"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/generator-taskr"></a><br /> Official Yeoman generator
</p>
<h3 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-community-plugins" class="anchor" aria-hidden="true" href="#community-plugins"></a>Community Plugins
</h3>
<p>
Package<br /> Version<br /> Dependencies<br /> Description
</p>
<p>
<code>taskr-autoprefixer</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-autoprefixer"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr-autoprefixer"></a><br /> CSS Autoprefixer plugin for Taskr
</p>
<p>
<code>taskr-nunjucks</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-nunjucks"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr-nunjucks"></a><br /> Render Nunjucks templates with Taskr
</p>
<p>
<code>taskr-precache</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-precache"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr-precache"></a><br /> Cache assets for offline use via service worker
</p>
<p>
<code>taskr-svelte</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-svelte"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr-svelte"></a><br /> Compile Svelte components with Taskr
</p>
<p>
<code>taskr-xo</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-xo"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/lukeed/taskr-xo"></a><br /> XO plugin for Taskr
</p>
<p>
<code>taskr-standard</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/taskr-standard"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/elmasse/taskr-standard"></a><br /> Standard plugin for Taskr
</p>
<p>
<code>template-taskr</code><br /> <a rel="nofollow noopener" target="_blank" href="https://www.npmjs.com/package/template-taskr"></a><br /> <a rel="nofollow noopener" target="_blank" href="https://david-dm.org/adamkiss/template-taskr"></a><br /> Unofficial SAO generator
</p>
<h2 dir="auto">
<a rel="nofollow noopener" target="_blank" id="user-content-license" class="anchor" aria-hidden="true" href="#license"></a>License
</h2>
<p>
MIT © <a rel="nofollow noopener" target="_blank" href="https://lukeed.com">Luke Edwards</a> and Jorge Bucaran
</p>