2015-08-17 2 views
1

Это моя структура папок:Yeoman/Grunt - Компиляция SASS файлы в подпапках

enter image description here

Все sass файлы, которые находятся в папке styles (например newStyles.sass) компилируются, но sass файлы папка myUi (например, nuclearMed.sass) - нет.

Я изменил на {,*/}* с /**/* в моем Gruntfile.js, но он все еще только смотрит на один уровень вниз. Кто-нибудь знает, что я делаю неправильно?

Это мой Gruntfile.js

// Generated on 2013-08-28 using generator-webapp 0.4.1 
'use strict'; 
var LIVERELOAD_PORT = 35729; 
var lrSnippet = require('connect-livereload')({port: LIVERELOAD_PORT}); 
var mountFolder = function (connect, dir) { 
    return connect.static(require('path').resolve(dir)); 
}; 

// # Globbing 
// for performance reasons we're only matching one level down: 
// 'test/spec/**/*.js' 
// use this if you want to recursively match all subfolders: 
// 'test/spec/**/*.js' 

module.exports = function (grunt) { 
    // show elapsed time at the end 
    require('time-grunt')(grunt); 
    // load all grunt tasks 
    require('load-grunt-tasks')(grunt); 

    // configurable paths 
    var yeomanConfig = { 
    app: 'app', 
    dist: 'dist' 
    }; 

    grunt.initConfig({ 
    yeoman: yeomanConfig, 
    watch: { 
     coffee: { 
     files: ['<%= yeoman.app %>/scripts/**/*.coffee'], 
     tasks: ['coffee:dist'] 
     }, 
     coffeeTest: { 
     files: ['test/spec/**/*.coffee'], 
     tasks: ['coffee:test'] 
     }, 
     compass: { 
     files: ['<%= yeoman.app %>/styles/**/*.{scss,sass}'], 
     tasks: ['compass:server', 'autoprefixer'] 
     }, 
     styles: { 
     files: ['<%= yeoman.app %>/styles/**/*.css'], 
     tasks: ['copy:styles', 'autoprefixer'] 
     }, 
     jade: { 
     files: ['<%= yeoman.app %>/**/*.jade'], 
     tasks: ['jade'] 
     }, 
     livereload: { 
     options: { 
      livereload: LIVERELOAD_PORT 
     }, 
     files: [ 
      '.tmp/**/*.html', 
      '<%= yeoman.app %>/**/*.sass', 
      '.tmp/styles/**/*.css', 
      '{.tmp,<%= yeoman.app %>}/scripts/**/*.js', 
      '<%= yeoman.app %>/images/**/*.{png,jpg,jpeg,gif,webp,svg}' 
     ] 
     } 
    }, 
    connect: { 
     options: { 
     port: 9000, 
     // change this to '0.0.0.0' to access the server from outside 
     hostname: 'localhost' 
     }, 
     livereload: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       lrSnippet, 
       mountFolder(connect, '.tmp'), 
       mountFolder(connect, yeomanConfig.app) 
      ]; 
      } 
     } 
     }, 
     test: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       mountFolder(connect, '.tmp'), 
       mountFolder(connect, 'test'), 
       mountFolder(connect, yeomanConfig.app) 
      ]; 
      } 
     } 
     }, 
     dist: { 
     options: { 
      middleware: function (connect) { 
      return [ 
       mountFolder(connect, yeomanConfig.dist) 
      ]; 
      } 
     } 
     } 
    }, 
    open: { 
     server: { 
     path: 'http://localhost:<%= connect.options.port %>' 
     } 
    }, 
    jade: { 
     dist: { 
     options: { 
      pretty: true 
     }, 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>', 
      dest: '.tmp', 
      src: '*.jade', 
      ext: '.html' 
     }] 
     } 
    }, 
    clean: { 
     dist: { 
     files: [{ 
      dot: true, 
      src: [ 
      '.tmp', 
      '<%= yeoman.dist %>/*', 
      '!<%= yeoman.dist %>/.git*' 
      ] 
     }] 
     }, 
     server: '.tmp' 
    }, 
    jshint: { 
     options: { 
     jshintrc: '.jshintrc' 
     }, 
     all: [ 
     'Gruntfile.js', 
     '<%= yeoman.app %>/scripts/**/*.js', 
     '!<%= yeoman.app %>/scripts/vendor/*', 
     'test/spec/**/*.js' 
     ] 
    }, 
    mocha: { 
     all: { 
     options: { 
      run: true, 
      urls: ['http://localhost:<%= connect.options.port %>/index.html'] 
     } 
     } 
    }, 
    coffee: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/scripts', 
      src: '**/*.coffee', 
      dest: '.tmp/scripts', 
      ext: '.js' 
     }] 
     }, 
     test: { 
     files: [{ 
      expand: true, 
      cwd: 'test/spec', 
      src: '**/*.coffee', 
      dest: '.tmp/spec', 
      ext: '.js' 
     }] 
     } 
    }, 
    compass: { 
     options: { 
     sassDir: '<%= yeoman.app %>/styles/**/*.js', 
     cssDir: '.tmp/styles', 
     generatedImagesDir: '.tmp/images/generated', 
     imagesDir: '<%= yeoman.app %>/images', 
     javascriptsDir: '<%= yeoman.app %>/scripts', 
     fontsDir: '<%= yeoman.app %>/styles/fonts', 
     importPath: '<%= yeoman.app %>/bower_components', 
     httpImagesPath: '/images', 
     httpGeneratedImagesPath: '/images/generated', 
     httpFontsPath: '/styles/fonts', 
     relativeAssets: false 
     }, 
     dist: { 
     options: { 
      generatedImagesDir: '<%= yeoman.dist %>/images/generated' 
     } 
     }, 
     server: { 
     options: { 
      debugInfo: true 
     } 
     } 
    }, 
    autoprefixer: { 
     options: { 
     browsers: ['last 1 version'] 
     }, 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '.tmp/styles/', 
      src: '**/*.css', 
      dest: '.tmp/styles/' 
     }] 
     } 
    }, 
    // not used since Uglify task does concat, 
    // but still available if needed 
    /*concat: { 
     dist: {} 
    },*/ 
    'bower-install': { 
     app: { 
     html: '<%= yeoman.app %>/index.html', 
     ignorePath: '<%= yeoman.app %>/' 
     } 
    }, 
    // not enabled since usemin task does concat and uglify 
    // check index.html to edit your build targets 
    // enable this task if you prefer defining your build targets here 
    /*uglify: { 
     dist: {} 
    },*/ 
    rev: { 
     dist: { 
     files: { 
      src: [ 
      '<%= yeoman.dist %>/scripts/**/*.js', 
      '<%= yeoman.dist %>/styles/**/*.css', 
      '<%= yeoman.dist %>/images/**/*.{png,jpg,jpeg,gif,webp}', 
      '<%= yeoman.dist %>/styles/fonts/**/*.*' 
      ] 
     } 
     } 
    }, 
    useminPrepare: { 
     options: { 
     dest: '<%= yeoman.dist %>' 
     }, 
     html: '.tmp/index.html' 
    }, 
    usemin: { 
     options: { 
     dirs: ['<%= yeoman.dist %>'] 
     }, 
     html: ['<%= yeoman.dist %>/**/*.html'], 
     css: ['<%= yeoman.dist %>/styles/**/*.css'] 
    }, 
    imagemin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/images', 
      src: '**/*.{png,jpg,jpeg}', 
      dest: '<%= yeoman.dist %>/images' 
     }] 
     } 
    }, 
    svgmin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '<%= yeoman.app %>/images', 
      src: '**/*.svg', 
      dest: '<%= yeoman.dist %>/images' 
     }] 
     } 
    }, 
    htmlmin: { 
     dist: { 
     files: [{ 
      expand: true, 
      cwd: '.tmp', 
      src: '*.html', 
      dest: '<%= yeoman.dist %>' 
     }] 
     } 
    }, 
    // Put files not handled in other tasks here 
    copy: { 
     dist: { 
     files: [{ 
      expand: true, 
      dot: true, 
      cwd: '<%= yeoman.app %>', 
      dest: '<%= yeoman.dist %>', 
      src: [ 
      '*.{ico,png,txt}', 
      '.htaccess', 
      'images/**/*.{webp,gif}', 
      'styles/fonts/**/*.*' 
      ] 
     }] 
     }, 
     styles: { 
     expand: true, 
     dot: true, 
     cwd: '<%= yeoman.app %>/styles', 
     dest: '.tmp/styles/', 
     src: '**/*.css' 
     } 
    }, 
    concurrent: { 
     server: [ 
     'compass', 
     'jade', 
     'coffee:dist', 
     'copy:styles' 
     ], 
     test: [ 
     'coffee', 
     'copy:styles' 
     ], 
     dist: [ 
     'coffee', 
     'compass', 
     'copy:styles', 
     'imagemin', 
     'svgmin', 
     'htmlmin' 
     ] 
    } 
    }); 

    grunt.registerTask('server', function (target) { 
    if (target === 'dist') { 
     return grunt.task.run(['build', 'open', 'connect:dist:keepalive']); 
    } 

    grunt.task.run([ 
     'clean:server', 
     'concurrent:server', 
     'autoprefixer', 
     'connect:livereload', 
     'open', 
     'watch' 
    ]); 
    }); 

    grunt.registerTask('test', [ 
    'clean:server', 
    'concurrent:test', 
    'autoprefixer', 
    'connect:test', 
    'mocha' 
    ]); 

    grunt.registerTask('build', [ 
    'clean:dist', 
    'jade', 
    'useminPrepare', 
    'concurrent:dist', 
    'autoprefixer', 
    'concat', 
    'cssmin', 
    'uglify', 
    'copy:dist', 
    'rev', 
    'usemin' 
    ]); 

    grunt.registerTask('default', [ 
    'jshint', 
    'test', 
    'build' 
    ]); 
}; 

ответ

0

Я думаю, что я вижу вашу проблему

«Компас работает на уровне папок. Из-за этого вы не укажете SRC/Dest, но вместо того, чтобы определить sassDir и cssDir. "

compass: { 
    options: { 
    sassDir: '<%= yeoman.app %>/styles/**/*.js', 
    cssDir: '.tmp/styles', 

Глобус не поддерживается конфигурацией sassDir var. Тем не менее, вы можете использовать globbing в заданной конфигурации: https://github.com/gruntjs/grunt-contrib-compass#specify

+0

Я попытался добавить следующее в 'compass options' 1)' define: '<% = yeoman.app%>/styles/myUi/*. Sass ', '2)' define:' nuclearMed/app/styles/myUi/*. Sass ', '3)' define:' <% = yeoman.app%>/styles/myUi/**/*. Sass ', '4)' define: 'nuclearMed/app/styles/myUi/**/*. Sass', '. Ничего из этого не сработало. –

+0

Я не ссылаюсь на пути правильно? –

+0

Вы не забыли изменить sassDir, чтобы просто указать папку верхнего уровня, и перезапустить следы компаса после редактирования файла конфигурации? Я не думаю, что вам нужно указать правило конфигурации, если вы просто хотите обрабатывать все файлы и файлы подпапок. Возможно, это тоже может быть что-то с компасом, и это может помочь «npm uninstall grunt-contrib-compass», а затем снова установить его. – wesww

Смежные вопросы