首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grunt.js任务开发生产coffeescript

Grunt.js任务开发生产coffeescript
EN

Stack Overflow用户
提问于 2014-02-03 23:30:59
回答 2查看 674关注 0票数 0

编辑2:如果使用以下配置(这似乎是正常的设置),grunt不会编译任何咖啡文件

代码语言:javascript
复制
coffee:
  development:
    compile:
      expand: true
      cwd: "<%= srcDirCoffee %>"
      src: ["**/*.coffee"]
      dest: "<%= jsOutput %>"
      ext: ".js"
    options:
      sourceMap:true

在使用-v标志https://gist.github.com/mdedetrich/0ecccb50ddb2fd56dc35运行时,Grunt输出以下内容

编辑:相关部分现在看起来如下所示,它似乎正在工作

代码语言:javascript
复制
coffee:
  development:
    expand: true
    cwd: "<%= srcDirCoffee %>"
    src: ["**/*.coffee"]
    dest: "<%= jsOutput %>"
    ext: ".js"
    options:
      sourceMap:true
  production:
    expand:true
    cwd: "<%= srcDirCoffee %>"
    src: ["**/*.coffee"]
    dest: "<%= jsOutput %>"
    ext: ".js"

然而,对于它为什么只以这种方式工作(以及为什么需要删除编译部分以使其工作),这有点令人困惑。

原始问题

我目前正在设置一个Gruntjs任务,如下所示

代码语言:javascript
复制
module.exports = (grunt) ->
  grunt.initConfig(
    pkg: grunt.file.readJSON("package.json")
    srcDir: "./src/main"
    srcDirLess: "<%= srcDir %>/less"
    srcDirCoffee: "<%= srcDir %>/coffee"
    scalaVersion: "scala-2.10" #This is the scala version we are using
    resourceManaged: "./target/<%= scalaVersion %>/resource_managed/main"
    cssOutput: "<%= resourceManaged %>/css"
    jsOutput: "<%= resourceManaged %>/js"
    cssRequestPath: "/css"
    jsRequestPath: "/js"

    less:
      development:
        options:
          paths: ["<%= srcDirLess %>"]
#          sourceMap:true
#          sourceMapFilename: "<%= cssOutput %>/index.css.map"
#          sourceMapRootpath: "<%= srcDirLess %>"
#          sourceMapURL:  "<%= cssRequestPath %>/index.css.map"
        files:
          "<%= cssOutput %>/index.css" : "<%= srcDirLess %>/index.less"
      production:
        options:
          paths: ['<%= srcDirLess %>']
          cleancss:true
        files:
          "<%= cssOutput %>/index.css" : "<%= srcDirLess %>/index.less"

    coffee:
      development:
        compile:
          files: [
            expand: true
            cwd: "<%= srcDirCoffee %>"
            src: ["**/*.coffee"]
            dest: "<%= jsOutput %>"
            ext: ".js"
          ]
#        options:
#          sourceMap:true
      production:
        compile:
          files: [
            expand:true
            cwd: "<%= srcDirCoffee %>"
            src: ["**/*.coffee"]
            dest: "<%= jsOutput %>"
            ext: ".js"
          ]

    requirejs:
      production:
        compile:
          options:
            baseUrl: "<%= jsOutput %>"
            mainConfigFile: "<%= jsOutput %>/main"

    watch:
      coffee:
        files: "<%= srcDirCoffee %>/**/*.coffee"
        tasks: ["coffee:development"]
      less:
        files: "<%= srcDirLess %>/**/*.less"
        tasks: ["less:development"]

    clean: ["<%= cssOutput %>","<%= jsOutput %>"]
  )

  grunt.loadNpmTasks('grunt-contrib-less')
  grunt.loadNpmTasks('grunt-contrib-coffee')
  grunt.loadNpmTasks('grunt-contrib-requirejs')
  grunt.loadNpmTasks('grunt-contrib-clean')

  grunt.registerTask('default', ['coffee:development','less:development'])
  grunt.registerTask('production',['less:production','coffee:production','requirejs:production'])

不幸的是,由于某种原因,default coffee任务不能正常工作(也就是说,它实际上没有运行该任务)。如果我拿出咖啡任务中的开发/生产部分,即

代码语言:javascript
复制
    coffee:
#      development:
      compile:
        files: [
          expand: true
          cwd: "<%= srcDirCoffee %>"
          src: ["**/*.coffee"]
          dest: "<%= jsOutput %>"
          ext: ".js"
        ]

并将默认任务更改为

代码语言:javascript
复制
  grunt.registerTask('default', ['coffee','less:development'])

最后起作用了,有人知道为什么会发生这种事吗?它适用于less,但由于某些原因,它不适用于coffee

这是我的Grunt任务的package.json

代码语言:javascript
复制
{
  "name": "test",
  "version": "0.0.1",
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-less": "~0.9.0",
    "grunt-contrib-coffee": "~0.9.0",
    "grunt-contrib-cssmin": "~0.7.0",
    "grunt-contrib-requirejs": "~0.4.1",
    "grunt-contrib-clean": "~0.5.0"
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-03 23:55:58

file:[...]中包装任务选项会扰乱您的任务。

取而代之的是这样做:

代码语言:javascript
复制
      compile:
        options:
          sourceMap: true,
          sourceMapDir: 'path/to/maps/' # source map files will be created here

        files:
          "<%= jsOutput %>": ["**/*.coffee"]

git 解释如何在compileWithMapsDir示例中使用这些选项进行编译。

代码语言:javascript
复制
compileWithMapsDir: {
    options: {
      sourceMap: true,
      sourceMapDir: 'path/to/maps/' // source map files will be created here
    },
    files: {
      'path/to/result.js': 'path/to/source.coffee'
    }
  }
票数 0
EN

Stack Overflow用户

发布于 2014-02-05 01:21:20

结果,我对compile选项的含义感到困惑。在grunt.js中,compile只是一个占位符,它实际上并不意味着什么,只是用于文档/演示的原因

以下版本运行良好,没有任何麻烦。

代码语言:javascript
复制
coffee:
  development:
    expand: true
    cwd: "<%= srcDirCoffee %>"
    src: ["**/*.coffee"]
    dest: "<%= jsOutput %>"
    ext: ".js"
    options:
      sourceMap:true
  production:
    expand:true
    cwd: "<%= srcDirCoffee %>"
    src: ["**/*.coffee"]
    dest: "<%= jsOutput %>"
    ext: ".js"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21540032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档