如何对使用coffeebar编译的文件发出命令

时间:2015-06-24 17:38:07

标签: javascript coffeescript exec minify spawn

我希望能够在使用coffeebar将coffeescript个文件编译为js时将包含给定订单的文件包含在内。

我想首先包含 settings.coffee constants.coffee 文件

--
|-- settings.coffee
|-- constants.coffee
|-- page1.coffee
|-- page2.coffee

代码段

fs         = require 'fs'
{exec, spawn}     = require 'child_process'
util       = require 'util'

task 'watch', 'Coffee bar Combine and build', ->
    coffee = spawn 'coffeebar', ['-w','-o','./../js/main/kc.js', './']
    coffee.stdout.on 'data', (data) ->
      console.log data.toString().trim()
      invoke 'minify'

task 'minify', ' Minify JS File', ->
  file = "./../js/main/kc"
  util.log "Minifiying #{file}.js"
  exec "uglifyjs #{file}.js > #{file}.min.js", (err,stdout,stderr) ->
    if err
      util.log "Error minifiying file"
      util.log err
    else
      util.log "Minified to #{file}.min.js"
      util.log '----------------------------'

现在,脚本只是根据自己的逻辑将整个事物编译在一起。

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

看起来你有3个可能的解决方案,但它们都不那么优雅:

  • 我不确定,但尝试将coffeebar(inputPaths, [options])的inputPaths参数设置为带文件名的显式路径数组,您可以根据需要设置数组元素的顺序

  • 尝试重命名带有num前缀的文件,例如01_settiings.coffee等等,按照您的需要,咖啡吧将按此顺序处理

  • 您可以使用额外的插件,例如rigger,在一个根文件中按所需顺序包含所需的所有文件,并使用coffeebar处理此文件