Home

Awesome

<div align="center"> <img src="/logo.png" alt="Taskr" width="128"> </div> <h1 align="center">Taskr</h1> <div align="center"> <a href="https://npmjs.org/package/taskr"> <img src="https://img.shields.io/npm/v/taskr.svg" alt="NPM Version"/> </a> <a href="https://travis-ci.org/lukeed/taskr"> <img src="https://img.shields.io/travis/lukeed/taskr.svg" alt="TravisCI"/> </a> <!-- <a href="https://codecov.io/github/lukeed/taskr"> --> <!-- <img src="https://img.shields.io/codecov/c/github/lukeed/taskr/master.svg" alt="Test Coverage"/> --> <!-- </a> --> <a href="https://ci.appveyor.com/project/lukeed/taskr/branch/master"> <img src="https://ci.appveyor.com/api/projects/status/jjw7gor0edirylu5/branch/master?svg=true" alt="AppVeyor"/> </a> <a href="https://npmjs.org/package/taskr"> <img src="https://img.shields.io/npm/dm/taskr.svg" alt="NPM Downloads"/> </a> </div> <div align="center">A fast, concurrency-focused task runner.</div> <div align="center"><strong>Fasten your seatbelt. :rocket:</strong></div> <br />

Taskr is a highly performant task runner, much like Gulp or Grunt, but written with concurrency in mind. With Taskr, everything is a coroutine, which allows for cascading and composable tasks; but unlike Gulp, it's not limited to the stream metaphor.

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 taskfile.js that's easy to read.

const src = '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']);
  }
}

History

TL;DR This is the continuation of and successor to Fly!

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.

To reflect this milestone, Fly has been renamed to Taskr and has a stable, exciting future ahead! :tada:

For existing Fly users, taskr@1.0.x is equivalent to fly@2.0.6 -- with a few exceptions:

  1. The flyfile.js has been renamed to taskfile.js;
  2. The fly key inside package.json has been renamed to taskr. (See Local Plugins)

At this point, the Fly & Taskr ecosystems are fully interchangeable, which means that you can install taskr and use any fly-* or taskr-* plugins of your choosing. That said, most plugins have already been ported over to the new namespace!

Lastly, Taskr will maintain a list of official plugins. Don't forget to check 'em out!

Core Features

Docs

The main documentation can be found in taskr, our core package.

Each @taskr/* or taskr-* plugin will also include its own documentation, too!

Packages

The Taskr repo is managed as a monorepo that is composed of its many official packages.

Important: The core package is taskr and must be installed before using any additional plugins.

Official Packages

These npm packages are officially released and maintained by the Taskr team.

If you can't find what you need, be sure to check out the community list or browse for all taskr-related plugins on npmjs.com, too!

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.

PackageVersionDependenciesDescription
taskrnpmDependency StatusCore package. Required
@taskr/babelnpmDependency StatusBabel plugin for Taskr
@taskr/browserifynpmDependency StatusBrowserify plugin for Taskr
@taskr/bublenpmDependency StatusBublé plugin for Taskr
@taskr/clearnpmDependency StatusRemove one or more directories
@taskr/coffeenpmDependency StatusCoffeeScript plugin for Taskr
@taskr/concatnpmDependency StatusConcatenate files with optional source maps.
@taskr/esnextnpmDependency StatusAllows async/await syntax within taskfile.js
@taskr/flattennpmDependency StatusFlatten source files to a max of sub-dirs.
@taskr/gzipnpmDependency StatusGzip plugin for Taskr
@taskr/htmlminnpmDependency StatusMinify HTML with Taskr
@taskr/jestnpmDependency StatusJest plugin for Taskr
@taskr/lessnpmDependency StatusCompile LESS to CSS with Taskr
@taskr/postcssnpmDependency StatusPostCSS plugin for Taskr
@taskr/prettiernpmDependency StatusPrettier plugin for Taskr
@taskr/revnpmDependency StatusVersion/Hash assets for cache-busting
@taskr/sassnpmDependency StatusCompile SASS to CSS with Taskr
@taskr/shellnpmDependency StatusExecute shell commands with Taskr
@taskr/stylusnpmDependency StatusCompile Stylus to CSS with Taskr
@taskr/typescriptnpmDependency StatusCompile Typescript with Taskr
@taskr/uglifynpmDependency StatusUglifyJS plugin for Taskr
@taskr/unflownpmDependency StatusRemove Flow type annotations with Taskr
@taskr/watchnpmDependency StatusWatch files & Execute specified tasks on change
@taskr/zipnpmDependency StatusZIP compress files with Taskr
generator-taskrnpmDependency StatusOfficial Yeoman generator

Community Plugins

PackageVersionDependenciesDescription
taskr-autoprefixernpmDependency StatusCSS Autoprefixer plugin for Taskr
taskr-nunjucksnpmDependency StatusRender Nunjucks templates with Taskr
taskr-precachenpmDependency StatusCache assets for offline use via service worker
taskr-sveltenpmDependency StatusCompile Svelte components with Taskr
taskr-xonpmDependency StatusXO plugin for Taskr
taskr-standardnpmDependency StatusStandard plugin for Taskr
template-taskrnpmDependency StatusUnofficial SAO generator

License

MIT © Luke Edwards and Jorge Bucaran

<!-- [`@taskr/eslint`](/packages/eslint) | [![npm](https://img.shields.io/npm/v/@taskr/eslint.svg?maxAge=86400)](https://www.npmjs.com/package/@taskr/eslint) | [![Dependency Status](https://david-dm.org/lukeed/taskr.svg?path=packages/eslint)](https://david-dm.org/lukeed/taskr?path=packages/eslint) [`@taskr/flow`](/packages/flow) | [![npm](https://img.shields.io/npm/v/@taskr/flow.svg?maxAge=86400)](https://www.npmjs.com/package/@taskr/flow) | [![Dependency Status](https://david-dm.org/lukeed/taskr.svg?path=packages/flow)](https://david-dm.org/lukeed/taskr?path=packages/flow) [`@taskr/rollup`](/packages/rollup) | [![npm](https://img.shields.io/npm/v/@taskr/rollup.svg?maxAge=86400)](https://www.npmjs.com/package/@taskr/rollup) | [![Dependency Status](https://david-dm.org/lukeed/taskr.svg?path=packages/rollup)](https://david-dm.org/lukeed/taskr?path=packages/rollup) [`@taskr/webpack`](/packages/webpack) | [![npm](https://img.shields.io/npm/v/@taskr/webpack.svg?maxAge=86400)](https://www.npmjs.com/package/@taskr/webpack) | [![Dependency Status](https://david-dm.org/lukeed/taskr.svg?path=packages/webpack)](https://david-dm.org/lukeed/taskr?path=packages/webpack) | -->