Компиляция файлов coffeescript с ворчанием

Я пытаюсь написать задачу grunt для компиляции многочисленных файлов. Coffee в соответствующие файлы.js и.map с использованием grunt. У меня есть ворчащий плагин для кофе, но есть некоторые проблемы:

  1. Он объединяет все файлы в одну общую папку назначения, а не сохраняет файлы.js в той же папке, что и файл.coffee.
  2. Он объединяет два файла. Coffee с тем же именем в разных каталогах в один файл в целевом каталоге.

Пожалуйста, помогите решить их:

Плагин Grunt: https://www.npmjs.org/package/grunt-contrib-coffee

Gruntfile.coffee:

module.exports = (grunt) ->
  grunt.initConfig(
    pkg: grunt.file.readJSON 'package.json'
    coffee:
      coffee_to_js:
        options:
          bare: true
          sourceMap: true
        expand: true
        flatten: true
        cwd: "client"
        src: ["**/*.coffee"]
        dest: 'client'
        ext: ".js"
  )

  #Load Tasks
  grunt.loadNpmTasks 'grunt-contrib-coffee'
  grunt.registerTask('compile', ['coffee']);

  null

Скомпилированный Gruntfile.js

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    coffee: {
      coffee_to_js: {
        options: {
          bare: true,
          sourceMap: true
        },
        expand: true,
        flatten: true,
        cwd: "client",
        src: ["**/*.coffee"],
        dest: 'client',
        ext: ".js"
      }
    }
  });
  grunt.loadNpmTasks('grunt-contrib-coffee');
  grunt.registerTask('compile', ['coffee']);
  return null;
};

Структура файла перед компиляцией:

enter image description here

Структура файла после компиляции:

enter image description here

Сообщение компиляции:

enter image description here

+2
источник поделиться
1 ответ

Если вы хотите сохранить структуру, в которой скомпилирован ваш JS, вы должны установить флаг flatten в false. См. Grunt. Настройка задач. Динамическое создание объектов файлов.

module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON 'package.json'
    coffee:
      coffee_to_js:
        options:
          bare: true
          sourceMap: true
        expand: true
        flatten: false
        cwd: "client"
        src: ["**/*.coffee"]
        dest: 'client'
        ext: ".js"

  #Load Tasks
  grunt.loadNpmTasks 'grunt-contrib-coffee'
  grunt.registerTask 'compile', ['coffee']

Это результат, когда вы не сглаживаете, что я считаю тем, что вам нужно:

$ grunt compile
Running "coffee:coffee_to_js" (coffee) task
File client/main.js created.
File client/main.js.map created (source map).
File client/models/question.js created.
File client/models/question.js.map created (source map).
File client/views/question.js created.
File client/views/question.js.map created (source map).
+6
источник

Посмотрите другие вопросы по меткам или Задайте вопрос