2013-05-28 70 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