2013-05-28 71 views
2

我使用Yeoman,並試圖設置requirejs來優化我的CSS文件。grunt-requirejs - 如何優化CSS?

我有這個在我的Gruntfile.js:

requirejs: { 
    css: { 
    options: { 
     optimizeCss: 'standard', 
     cssIn: 'app/styles/main.css', 
     out: 'app/styles/main.min.css' 
    } 
    } 
} 

當我運行此命令,我得到一個錯誤:

grunt build 

Running "requirejs:css" (requirejs) task 
>> Error: TypeError: new path must be a string 
>>  at Object.fs.renameSync (fs.js:439:18) 
Warning: Task "requirejs:css" failed 

我真的不知道發生了什麼那裏,或者如何調試。

有誰知道這個問題可能是什麼?

回答

3

沒關係,我解決了它。

隨Yeoman附帶的愚蠢useminPrepare任務塞滿了grunt-requirejs配置。有點討厭,尤其是。因爲我想要使用grunt-requirejs的觀點是因爲我不喜歡usemin如何開始工作。

UPDATE:

這是我的配置的作品:

//index.html: 

<!-- build:js scripts/scripts.js --> 
<script data-main="scripts/main" src="components/requirejs/require.js"></script> 
<!-- endbuild --> 


//Gruntfile.js: 

requirejs: { 
    js: { 
    options: { 
     baseUrl: '<%= yeoman.tmp %>/scripts', 
     out: '<%= yeoman.dist %>/scripts/scripts.js', 
     name: 'main', 
     optimize: 'none', 
     mainConfigFile: '<%= yeoman.app %>/scripts/main.js', 
     useStrict: true, 
     wrap: true 
    } 
    }, 
    css: { 
    options: { 
     optimizeCss: 'standard', 
     cssIn: '<%= yeoman.app %>/styles/main.css', 
     out: '<%= yeoman.dist %>/styles/main.css' 
    } 
    } 
}, 
useminPrepare: { 
    html: '<%= yeoman.app %>/index.html', 
    options: { 
    dest: '<%= yeoman.dist %>' 
    } 
}, 
usemin: { 
    html: '<%= yeoman.dist %>/index.html', 
    options: { 
    dirs: ['<%= yeoman.dist %>'] 
    } 
} 

grunt.registerTask('build', [ 
    'requirejs:js', 
    'requirejs:css', 
    'useminPrepare', //must be after requirejs:css as it breaks its config params 
    'usemin' 
]); 

注:仍然有咕嚕-usemin潛在的錯誤,這錯誤(錯誤地)試圖改變爲requirejs配置requirejs:css配置。我已經reported that here

+0

如果你不需要它,你可以自由移除usemin。 –

+0

的確如此,但我認爲我確實需要它。但僅僅是因爲我仍然需要一種在index.html中爲服務器/構建模式創建正確鏈接到require.js的方法。查看上面更新的答案。 – asgeo1