Code Monkey home page Code Monkey logo

taskr's Introduction

Taskr

Taskr

A fast, concurrency-focused task runner.
Fasten your seatbelt. ๐Ÿš€

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! ๐ŸŽ‰

For existing Fly users, [email protected] is equivalent to [email protected] -- 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

  • lightweight: with 6 dependencies, installation takes seconds
  • minimal API: Taskr only exposes a couple methods, but they're everything you'll ever need
  • performant: because of Bluebird, creating and running Tasks are quick and inexpensive
  • cascadable: sequential Task chains can cascade their return values, becoming the next Task's argument
  • asynchronous: concurrent Task chains run without side effects & can be yielded consistently
  • composable: chain APIs and Tasks directly; say goodbye to pipe() x 100!
  • modular: easily share or export individual Tasks or Plugins for later use
  • stable: requires Node >= 4.6 to run (LTS is 6.11)

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.

Package Version Dependencies Description
taskr npm Dependency Status Core package. Required
@taskr/babel npm Dependency Status Babel plugin for Taskr
@taskr/browserify npm Dependency Status Browserify plugin for Taskr
@taskr/buble npm Dependency Status Bublรฉ plugin for Taskr
@taskr/clear npm Dependency Status Remove one or more directories
@taskr/coffee npm Dependency Status CoffeeScript plugin for Taskr
@taskr/concat npm Dependency Status Concatenate files with optional source maps.
@taskr/esnext npm Dependency Status Allows async/await syntax within taskfile.js
@taskr/flatten npm Dependency Status Flatten source files to a max of sub-dirs.
@taskr/gzip npm Dependency Status Gzip plugin for Taskr
@taskr/htmlmin npm Dependency Status Minify HTML with Taskr
@taskr/jest npm Dependency Status Jest plugin for Taskr
@taskr/less npm Dependency Status Compile LESS to CSS with Taskr
@taskr/postcss npm Dependency Status PostCSS plugin for Taskr
@taskr/prettier npm Dependency Status Prettier plugin for Taskr
@taskr/rev npm Dependency Status Version/Hash assets for cache-busting
@taskr/sass npm Dependency Status Compile SASS to CSS with Taskr
@taskr/shell npm Dependency Status Execute shell commands with Taskr
@taskr/stylus npm Dependency Status Compile Stylus to CSS with Taskr
@taskr/typescript npm Dependency Status Compile Typescript with Taskr
@taskr/uglify npm Dependency Status UglifyJS plugin for Taskr
@taskr/unflow npm Dependency Status Remove Flow type annotations with Taskr
@taskr/watch npm Dependency Status Watch files & Execute specified tasks on change
@taskr/zip npm Dependency Status ZIP compress files with Taskr
generator-taskr npm Dependency Status Official Yeoman generator

Community Plugins

Package Version Dependencies Description
taskr-autoprefixer npm Dependency Status CSS Autoprefixer plugin for Taskr
taskr-nunjucks npm Dependency Status Render Nunjucks templates with Taskr
taskr-precache npm Dependency Status Cache assets for offline use via service worker
taskr-svelte npm Dependency Status Compile Svelte components with Taskr
taskr-xo npm Dependency Status XO plugin for Taskr
taskr-standard npm Dependency Status Standard plugin for Taskr
template-taskr npm Dependency Status Unofficial SAO generator

License

MIT ยฉ Luke Edwards and Jorge Bucaran

taskr's People

Contributors

0xflotus avatar 2hu12 avatar abhisheksoni27 avatar adamkiss avatar aweary avatar chrishelgert avatar e-jigsaw avatar elmasse avatar frantic1048 avatar frozzare avatar hashd avatar hzlmn avatar iamstarkov avatar ivansanchez avatar jojibucaran avatar juanpabloaj avatar lukeed avatar marionebl avatar marvinroger avatar mrmlnc avatar p-j avatar pine avatar sylvainpolletvillard avatar tjbenton avatar tylersnyder avatar watilde avatar yang-wei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taskr's Issues

Roadmap to 0.2.0

  • New parallel option to run filter application to expanded glob โ†’ files in parallel (almost 40% faster according to my eye-percent tests). In the future we want to run tasks in parallel as well.
  • Finally support for async transformers. This is already implemented and working.
  • Support to specify the extension a filter outputs if it was to write a file. Obvious missing feature until now (unless you were only concatenating).
  • A task named main is no longer treated as the default task. Default tasks are either a task named default or the default export from your Flyfile.
  • Separate util.js from core and put into its own module. This module is already published and fully tested.

flyjs watch task exits after first run

Hi, can you help me understand what am I doing wrong?

export default async function () {
  this.watch([paths.scripts], ["build"]);
}

export async function build () {
  await this.clear(paths.lib);
  await this
    .source(paths.scripts)
    .babel({ stage: 1, optional: ["bluebirdCoroutines"] })
    .target(paths.lib);
}

Flyjs doesn't continue watching files, though. It executes once on start, then exits. What's wrong with my setup? I've tried swapping async/await for generators, same results.

I am running iojs 2.4.0 on Ubuntu 15.04

[17:06:13] Flying with .../flyfile.babel.js...
[17:06:13] Starting "default"
[17:06:13] Watching files...
[17:06:13] Starting "build"
[17:06:13] Finished "default" in 6 ms
[17:06:14] Finished "build" in 945 ms
git:(master) โœ— 

ES7 does not work

Internal implementation changed since 0.2.0 causing async/await syntax to break.

Tasks do run but the await does not cause the function to exit and later reentered.

This could be solved adding support into tj/co directly. This will be revised after tests land in 0.3.0.

Sorting problem.

Hi!
Looks like Fly not respects files order.
I'm trying to implement ng-filesort plugin, code works fine and returns files in right order, but .concat can't see it.

Plugin code:

const ngDeps = require('ng-dependencies')
const R = require('ramda')

function collectFileDep(file) {
  var deps = ngDeps(file.data);
  return {
    file: file,
    deps: deps,
    dependencies: deps.dependencies,
    modules: R.keys(deps.modules)
  }
}

function sortDeps(depFiles){
  if(!depFiles || depFiles.length === 0){
    return []
  } else {
    var declaredModules = R.uniq(R.reduce(function(modules, dep){
      return modules.concat(dep.modules)
    }, [], depFiles))

    var classifiedByDeps = R.groupBy(function(dep){
      if (0 <  R.intersection(declaredModules, dep.dependencies).length){
        return 'depended'
      } else {
        return 'independed'
      }
    }, depFiles)

    return classifiedByDeps.independed.concat(sortDeps(classifiedByDeps.depended))
  }
}

function sortFiles(files){
  return R.map(function(depFile){
    return depFile.file
  }, sortDeps(R.map(function(file){
    return collectFileDep(file)
  }, files)))
}

module.exports = function (){
  this.ngFilesort = function(options){
    this.unwrap().then(function(files){
      return sortFiles(files)
    })
    return this
  }
}

CLI parses bad arguments

This may be an issue with the Parsec package itself, but when using the fly CLI it parses arguments in a strange way. Instead of throwing an error when an incorrect flag has been passed it will ignore what it doesn't parse as valid and attempt to run whatever command it may find. It should not be parsing potential flags from incorrect flags; it should require the exact flag needed and nothing more. Some examples:

fly -vdf
// > fly, 0.3.4
// returns the version, should throw an error that -vdf is not a valid flag

fly -l12312312312
//> Available tasks
//> default
// returns available tasks, should throw an error 

fly -12345
//> [11:02:59] Flying with /Users/xxxx/xxxx/flytest/Flyfile.babel.js...
//> [11:02:59] -12345 not found in Flyfile.
// any argument with a preceeding - should be considered a flag, not a task

It should work much like the node CLI does, and throw errors if the flags are not valid.

node -v
// > v0.12.0
// returns node version

node -v123
// > node: bad option: -v123
// throws appropriate error

CLI arguments are one thing that should require strict equality between whats defined and whats passed at runtime.

Plugins encapsulation

I think this is the most important topic and post it in own issue.
We shouldn't let any plugins have access to another. In this case we need to initialize every plugin call with own instance which will be initialized with some properties of previous instance.

Honor file extensions

Check whether Fly honors file extensions if the last filter does not return { extension: ".." }.

For example:

  yield this.source("coffee/src/**/*.coffee")
  .coffee()
  .uglify()
  .target("coffee/dist/")

If uglify does not set the file extension, Fly should use whatever extension set by coffee and so on.

Fly must be properly tested

We also need a strategy for testing plugins reliably. This will be included in the generator @DrKraken.

Suggestions for test frameworks:

  • tape

Fly tests should land in 0.2.0.

EDIT: Fly tests should land in 0.3.0

Browserify usage

Hey there,

What would the plan be for using Browserify/Watchify with Fly? Does it require a plugin to work, or will the fact that Browserify supports streams already (see how it works with Gulp OOTB) mean that we could avoid having a wrapper unnecessarily?

Are there any issues having import's in your Flyfile, specifically for Browserify transformers?

Cheers

Receive updates in CLI

It's common thing to increase issues arising from using old version of module. How about to put update-notifier for to be able to receive an update of fly version in CLI?

Better error formatting (plugins)

The current strategy for error formatting inside plugins is that plugins are responsible for their special formatting needs.

The following is fine, since Fly will catch that plugin's task's error and show some output, but in the future plugins should trace errors more gracefully.

module.exports = function () {
  return this.filter("pluginName", (src, opts) => {
    try {
      return ....
    } catch (e) {
      this.notify("plugin_error", { plugin: "pluginName", { ... } })
      throw e
    }
  })
}

Specially stack traces we can use prettyjson for the output.

I am thinking something along the lines of

function trace (e) {
  error(pretty.render(e)
    .replace(/(\sFunction|\sObject)\./g, `${fmt.blue("$1")}.`)
    .replace(/\((~?\/.*)\)/g, `(${fmt.gray("$1")})`)
    .replace(/:([0-9]*):([0-9]*)/g, ` ${fmt.yellow("$1")}:${fmt.yellow("$2")}`)
    .replace(new RegExp(process.env.HOME, "g"), "~")
  )
  return process
}

Cannot find module 'dist'

Just upgraded to 0.4 - was having problems with 0.3.3/0.3.4 that seemed to be related to the Node 0.12 template string issue you noted in fly-utils.

Switched to iojs 2.3.4 and reinstalled/rebuilt everything. Now I'm getting this when trying to use the CLI:

Error: Cannot find module '/Users/me/my_project/dist'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Function.Module.runMain (module.js:471:10)
    at startup (node.js:117:18)
    at node.js:948:3

I've tried naming the Flyfile - Flyfile.babel.js & later - Flyfile.js, flyfile.js as this issue seemed to recommend: #64

On OS X 10.10.4

Why Fly?

Can you please tell me why I would use Fly? I am using gulp now. Thanks.

Cannot read property 'filter' of undefined

Scroll to bottom for screencast.


mkdir fly-sandbox && cd $_
npm i fly fly-eslint
touch Flyfile.js source.js

Flyfile.js

console.log('Flyfile.js 1');

exports.main = function* () {
  yield this
    .source('./source.js')
    .eslint();
}

source.js

console.log('source.js')

$(npm bin)/fly main
Flyfile.js 1
stack:
  - TypeError: Cannot read property 'filter' of undefined
  -     at plugins (~/Desktop/fly-sandbox/node_modules/fly/dist/util.js 247:14)
  -     at Object.callee$0$0$ (~/Desktop/fly-sandbox/node_modules/fly/dist/cli/spawn.js 49:38)
  -     at tryCatch (~/Desktop/fly-sandbox/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 67:40)
  -     at GeneratorFunctionPrototype.invoke [as _invoke] (~/Desktop/fly-sandbox/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 297:22)
  -     at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (~/Desktop/fly-sandbox/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 100:21)
  -     at onFulfilled (~/Desktop/fly-sandbox/node_modules/fly/node_modules/co/index.js 64:19)
  -     at ~/Desktop/fly-sandbox/node_modules/fly/node_modules/co/index.js 53:5
  -     at co (~/Desktop/fly-sandbox/node_modules/fly/node_modules/co/index.js 49:10)
  -     at toPromise (~/Desktop/fly-sandbox/node_modules/fly/node_modules/co/index.js 117:63)
  -     at next (~/Desktop/fly-sandbox/node_modules/fly/node_modules/co/index.js 98:29)
message: Cannot read property 'filter' of undefined

  • Yosemite 10.10.3 (14D2134)
  • io v2.3.3
  • npm 2.11.3

Thanks.

ES6 syntax failing in 0.3.4

When trying to test the quickstart guide against 0.3.4 I found that fly is now throwing an error when running or query tasks from a Flyfile with ES6 syntax.

Fly failing on ES6

stack: 
  - ~/.dev/flytest/Flyfile.babel.js:1
  - (function (exports, require, module, __filename, __dirname) { export default f
  -                                                               ^^^^^^
  - SyntaxError: Unexpected token export
  -     at exports.runInThisContext (vm.js 73:16)
  -     at Module._compile (module.js 443:25)
  -     at Object.Module._extensions..js (module.js 478:10)
  -     at Module.load (module.js 355:32)
  -     at Function.Module._load (module.js 310:12)
  -     at Module.require (module.js 365:17)
  -     at require (module.js 384:17)
  -     at Object.list (~/.npm-packages/lib/node_modules/fly/dist/cli/list.js 28:14)
  -     at callee$0$0$ (~/.npm-packages/lib/node_modules/fly/dist/index.js 81:13)
  -     at tryCatch (~/.npm-packages/lib/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 67:40)
message: 
  """
    ~/.dev/flytest/Flyfile.babel.js:1
    (function (exports, require, module, __filename, __dirname) { export default f
                                                                  ^^^^^^
    Unexpected token export
  """

This did not occur prior to 0.3.4 as far as I tested, and I am able to reproduce with a clean install of fly on my machine. This also does not occur when using ES5 syntax.

how does fly.babel.js

dove into fly source code and cannot get who fly can use babel for Flyfile.babel.js. can you help me?

NPM Link support

link allows you to symlink directories into your node_modules folder. You type npm link inside your plugin's directory and it creates a symlink into your global node packages directory. Then type npm link fly-pluginName inside a test app directory and npm will symlink your plugin into your test app's node_modules.

Due to fly checking package.json and that npm link does not add anything to package.json, fly does not work with symlinked packages.

Currently, a workaround is npm install --save path/to/plugin or just to add your symlinked package manually with

"fly-pluginName": "file:./node_modules/fly-pluginName"

I think that fs.readdir might be a solution to searching the node_modules directory but I am not sure how it handles directories or how it handles symlinks.

Can't run Fly with Babel

Hey there, wanted to check Fly out but have had no luck so far.

I have a file in my root called Flyfile.babel.js with the following task in it:

export async function log() {
    this.log("Yesssss");
}

My package.json has the following packages in it:

{
// ...
  "devDependencies": {
    "babel-eslint": "^3.1.1",
    "babel-plugin-rewire": "^0.1.5",
    "babelify": "^6.1.1",
    "better-console": "^0.2.4",
    "brfs": "^1.4.0",
    "browser-sync": "^2.7.1",
    "browserify": "^9.0.8",
    "browserify-shim": "^3.8.7",
    "chai": "^2.3.0",
    "chai-as-promised": "^5.0.0",
    "connect-history-api-fallback": "^1.1.0",
    "envify": "^3.4.0",
    "eslint": "^0.21.0",
    "eslint-plugin-react": "^2.3.0",
    "fly": "^0.1.11",
    "fly-babel": "^0.1.1",
    "fly-eslint": "^0.1.0",
    "fly-mocha": "^0.1.3",
    "fly-uglify": "^0.1.0",
    "gulp": "^3.8.11",
    "gulp-autoprefixer": "^2.3.0",
    "gulp-if": "^1.2.5",
    "gulp-imagemin": "^2.2.1",
    "gulp-less": "^3.0.2",
    "gulp-minify-css": "^1.0.0",
    "gulp-mocha": "^2.0.1",
    "gulp-nodemon": "^2.0.3",
    "gulp-notify": "^2.2.0",
    "gulp-plumber": "^1.0.0",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^1.5.2",
    "gulp-uglify": "^1.2.0",
    "gulp-util": "^3.0.4",
    "jsdom": "^5.4.1",
    "mocha-jsdom": "^0.3.0",
    "mocha-notifier-reporter": "^0.1.1",
    "mocha-sinon": "^1.1.4",
    "react-iscroll": "0.0.4",
    "react-test-tree": "^0.1.6",
    "reactify": "^1.1.1",
    "sinon": "^1.14.1",
    "sinon-as-promised": "^4.0.0",
    "strictify": "^0.2.0",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "vinyl-transform": "^1.0.0",
    "watchify": "^3.1.1",
    "yargs": "^3.9.1"
  },
  "dependencies": {
    "axios": "^0.5.4",
    "babel": "^5.1.13",
    "babel-core": "^5.3.1",
    "body-parser": "^1.13.2",
    "cheerio": "^0.19.0",
    "child-process-promise": "^1.1.0",
    "classnames": "^2.1.1",
    "common-history": "0.0.1",
    "deep-diff": "^0.3.2",
    "eventwheel": "^0.3.1",
    "express": "^4.12.4",
    "flummox": "^4.0.0-alpha",
    "html-entities": "^1.1.2",
    "isomorphic-fetch": "^2.0.2",
    "jquery": "^2.1.4",
    "konami-keyboard": "0.0.1",
    "lodash": "^3.8.0",
    "node-jsx": "^0.13.3",
    "promisify-node": "^0.1.5",
    "query-string": "^2.1.0",
    "quinn": "^3.2.1",
    "react": "0.13.2",
    "react-google-maps": "1.3.1",
    "react-router-component": "^0.24.4",
    "scroll": "git+https://github.com/studionone/scroll.git",
    "serve-favicon": "^2.2.1",
    "swig": "^1.4.2",
    "verge": "^1.9.1"
  },
  "jshintConfig": {
    "esnext": true
  },
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },
  "browserify-shim": {
    "google": "global:google"
  }
}

I have also installed Fly (and fly-babel, and babel itself) globally, but it simply won't work. The error I receive is:

โœ— fly -f Flyfile7.babel.js
stack:
  - ~/Work/Projects/viewfinder-1.3/code/Flyfile7.babel.js:1
  - (function (exports, require, module, __filename, __dirname) { export async fun
  -                                                               ^^^^^^
  - SyntaxError: Unexpected reserved word
  -     at exports.runInThisContext (vm.js 53:16)
  -     at Module._compile (module.js 414:25)
  -     at Object.Module._extensions..js (module.js 449:10)
  -     at Module.load (module.js 356:32)
  -     at Function.Module._load (module.js 311:12)
  -     at Module.require (module.js 366:17)
  -     at require (module.js 385:17)
  -     at Object.callee$0$0$ (/usr/local/Cellar/nvm/0.25.1/versions/io.js/v2.0.2/lib/node_modules/fly/dist/cli/spawn.js 30:16)
  -     at tryCatch (/usr/local/Cellar/nvm/0.25.1/versions/io.js/v2.0.2/lib/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 67:40)
  -     at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/Cellar/nvm/0.25.1/versions/io.js/v2.0.2/lib/node_modules/fly/node_modules/babel-runtime/regenerator/runtime.js 315:22)
message:
  """
    ~/Work/Projects/viewfinder-1.3/code/Flyfile7.babel.js:1
    (function (exports, require, module, __filename, __dirname) { export async fun
                                                                  ^^^^^^
    Unexpected reserved word
  """

This is being run on iojs -- would that be causing the issue? What's the go here?

Support tasks running in parallel

Say you have 10 functions that implement an asynchronous transformation on a data source, each taking about 1 minute to complete. Assume these functions are truly async by relying on native extensions or Node's IO API.

Assign each transform to a different task. If you run all tasks sequentially you will have to wait at least 10 minutes. If you run all tasks in parallel you will have to wait at least 1 minute.

Support this.

Feedback / Suggestions

Thanks for participating in this project. Please leave your comments, feedbacks and/or suggestions below. ๐Ÿ‘

compatibility with async/await syntax

Hello,

Is it possible to use the ES7 async/await syntax with fly ? I have seen it is already available for node with https://github.com/yortus/asyncawait , without any major gotchas. I really like this syntax compared to yield/askterisks, and I think it would ease the transition when ES7 specifications will come to Node.js (presumably end 2016 ?). What do you think ?

fly-plugin keyword

This is good catch: wendux/fly#47

How about to add the following sentence to the guideline for creating fly-plugin? This make things possible to search awesome plugins easily.

Set fly-plugin to the keyword field in your package.json.

Roadmap to v0.1.0

  • Remove gaze from deps.
  • Add add and unlink to the watcher.
  • Support Flyfiles written in ES6-7, CoffeeScript, etc.
  • Add CHANGELOG
  • Improve plugin and watch API
  • Fly.prototype.reset should be private.
  • Add CLI documentation.
  • Change main example using coffee to babel (makes sense considering the project is written in Babel).

Compatibility with gulp

Just stumbled on this project. I was wondering if compatibility with gulp-plugins is something that is feasible to achieve.

Please also support iojs

The same code pass on node but error in iojs:

[SyntaxError:node_modules/fly-babel/index.js:2
return this.filter("babel", (src, opts) => {
^^
Unexpected token =>]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.