2016-02-18 62 views
1

我正在嘗試用grunt使用sass,而且我有一個奇怪的行爲。 如果我使用下劃線創建任何文件,它不再起作用,它也不會導入。Grunt sass @import不製作css

這是我Gruntfile,很簡單:

module.exports = function(grunt) { 
    'use strict'; 

    require('load-grunt-tasks')(grunt); 

    grunt.initConfig({ 
     watch: { 
      sass: { 
       files: 'scss/**/*.{scss,sass}', 
       tasks: ['sass'] 
      } 
     }, 
     sass: { 
      example: { 
       options: { 
        outputStyle: 'expanded' 
       }, 
       files: { 
        'public/css/app.css': 'scss/**/*.{scss,sass}' 
       } 
      } 
     } 
    }); 

    grunt.registerTask('default', ['watch']); 
}; 

如果我創建一個文件,例如,application.scssscss/,它的工作原理和public/css創建文件app.css,但如果我創建下劃線的任何文件,例如:_variablesscss/它不起作用了,它不會創建文件或更改任何內容,也不會導入。

application.scss:

@import "variables"; 

body { 
    background-color: $bg-color; 
} 

_variables.scss:

$bg-color: red; 

回答

1

文件與開始用下劃線名被認爲是部分在SASS的眼睛。這意味着SASS不會將一個實際的css文件移出它們。爲了防止這種情況發生,可以創建一個index.scss文件並將其中的部分導入其中或從其名稱中刪除下劃線。

Official DOcs

+0

我沒有和我試圖導入,不反正工作。而'application.scss'是主文件,問題是如果我在該文件夾中使用下劃線創建任何文件,它不再起作用,即使它只是被導入。 – gouwrioc

+0

你如何導入?給我看一個代碼片 –

+0

我編輯了這個問題。你會看到我如何導入。 – gouwrioc

0

我解決它使用:

files: [{ 
    expand: true, 
    cwd: 'scss', 
    src: '**/*.{scss,sass}', 
    dest: 'public/css', 
    ext: '.css' 
}]