Search code examples
javascriptcoffeescriptyieldecmascript-harmony

How to enable harmony syntax support in coffeescript?


I used node.js(0.11.13) with --harmony flag and used function *() and yield keywords.

I tried to simplify my development on node.js with help of coffeescript, so far it works great but I went into troubles with yield and declaring a generator - it complains about 'reserved keyword yield'.

Any ideas?


Solution

  • Another way to open the gate to the black dimension is:

    co = require 'co'
    sleep = require 'co-sleep'
    
    co(`function*(){1`
        console.log 'hi!'
        `yield sleep(1000)`
        console.log 'bye!'
    `1}`)()
    

    It's seems to be perfectly valid coffee-script, though, webstorm cofeescript plugin cries about errors, but it works.

    Also the following solution(vanilla coffeescript and gulp) is possible:

    co      = require 'co'
    sleep   = require 'co-sleep'
    $       = (cor) -> cor
    $yield  = (cor) -> cor
    
    do co $ ->
        console.log "hi!"
        $yield sleep(1000)
        console.log "bye!"
    
    gulp.task 'node-js', ->
        gulp.src config.srcServerJs, {base: config.srcServerJsBase}
        .pipe plumb()
        .pipe coffee()
        .pipe replace(/\$\(function\(/g, '\$(function*(')
        .pipe replace(/\$yield\(/g, 'yield (')
        .pipe gulp.dest(config.dstServerJs)
    

    magic: no errors in IDE :)

    Update After trying and reading a lot of stuff about coffee, ecma6 and its future I decided to give up on coffeescript and go with ECMA6 with support of traceur for both node.js and client-side