Skip to main content
  1. All Posts/

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&#8217;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&#8217;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&#8217;s original author, Jorge Bucaran, has shifted focus to other exciting projects. Before leaving, he chose to guarantee Fly&#8217;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> &#8212; 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&#8217;t forget to check &#8217;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&#8217;re everything you&#8217;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&#8217;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>&gt;= 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&#8217;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&#8217;re still missing something, open a ticket so that the team & community can try to help you&#8230; 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>