【问题标题】:GruntJS + contrib-coffee : compiling but keeping the folder structureGruntJS + contrib-coffee:编译但保持文件夹结构
【发布时间】:2013-10-15 18:35:44
【问题描述】:

我正在使用 GruntJSgrunt-contrib-coffee。效果很好!在Watch 插件的帮助下,它会更好。但这是我的疑问:

我有两个文件夹,一个是我的咖啡脚本文件,另一个是我的(编译的)js 文件。看起来像这样

root_folder
|--- public
     |--- libs
     |--- ppalmeida <= here are my .js compiled files from src_client coffeescripts
          |--- controllers
          |--- core
               |--- Main.js
          |--- models

|--- src_client <= here are my .coffee files
        |--- controllers
        |--- core
             |--- Main.coffee
        |--- models

当我使用coffee --output --compile 命令构建时,文件夹结构被保留:Coffeescript cli 编译“core”文件夹并在 Main.js 中。

但是当我运行 GruntJS 时,它会将所有文件放在同一个文件夹 (ppalmeida) 中。所以控制器,核心,模型文件都放在同一个文件夹中,我不想要。

这是我的glob_to_multiple 配置:

coffee:
        glob_to_multiple:
            expand: true,
            flatten: true,
            cwd: 'src_client/',
            src: ['**/*.coffee'],
            dest: 'public/ppalmeida/',
            ext: '.js'

所以,最后我得到了这样的东西:

root_folder
|--- public
     |--- libs
     |--- ppalmeida <= here are my .js compiled files from src_client coffeescripts
          |--- controllers (empty)
          |--- core (empty)
          |--- models (empty)
          |--- Main.js
          |--- ControllerA.js
          |--- ControllerB.js
          |--- ModelA.js
          |--- all_other_js_files_here.js


|--- src_client <= here are my .coffee files
        |--- controllers
             |--- ControllerA.coffee
             |--- ControllerB.coffee
        |--- core
             |--- Main.coffee
        |--- models
             |--- ModelA.coffee
             |--- ModelA.coffee

所以。有没有办法用contrib-coffee编译,避免所有js文件放在同一个文件夹里?

谢谢大家。

PS:我不知道它是否有帮助,但这是我完整的 Gruntfile.coffee:

module.exports = (grunt) ->

# Grunt config object
config =
    pkg: grunt.file.readJSON("package.json")

    # Grunt must watch the src_client folder for modifications in its files and run coffee task when some file is changed/created
    watch:
        coffee:
            files: 'src_client/**/*.coffee',
            tasks: ['coffee']

    # Create the 'coffee' task, to compile all *.coffee files to *.js
    coffee:
        glob_to_multiple:
            expand: true,
            flatten: true,
            cwd: 'src_client/',
            src: ['**/*.coffee'],
            dest: 'public/ppalmeida/',
            ext: '.js'

# Init grunt with config object
grunt.initConfig config

# Load grunt plugins
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'

# Register coffee as a default task:
grunt.registerTask 'default', ['coffee']

【问题讨论】:

    标签: node.js coffeescript gruntjs grunt-contrib-watch


    【解决方案1】:

    哦,现在我明白了。答案就在我面前:只需将“flatten”属性更改为“false”,这样它将保留文件的路径,因此coffeescript将使用它进行编译并保留文件夹结构:

    # Create the 'coffee' task, to compile all *.coffee files to *.js
    coffee:
        glob_to_multiple:
            expand: true,
            flatten: false, #here, it must be false to keep folder structure when compiling
            cwd: 'src_client/',
            src: ['**/*.coffee'],
            dest: 'public/ppalmeida/',
            ext: '.js'
    

    希望它可以帮助某人。 谢谢。

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 2013-03-30
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多