我在Visual Studio 2013中使用以下作为预构建事件来编译Bootstrap 3.0并根据this answer进行隐藏,并且它有效
recess "$(ProjectDir)Content\bootstrap\bootstrap.less" --compress > "$(ProjectDir)Content\bootstrap-compiled.css"
现在这对Bootstrap 3.1.1不起作用,他们说Grunt会这样做。我试过了:
grunt-contrib-less "$(ProjectDir)Content\bootstrap\bootstrap.less" --compress > "$(ProjectDir)Content\bootstrap-compiled.css"
但是无法让它发挥作用。任何想法如何让Grunt与VS 2013合作。
注意:我已安装Node.js并提前休息,然后> npm install grunt-contrib-less然后确保> npm update grunt-contrib-less。
答案 0 :(得分:5)
我的工作方式略有不同:
npm install -g grunt-cli
)call grunt less
添加到预构建事件中(如果未指定CALL,则该过程在grunt后不会返回)如果您愿意,可以向开发和生产构建过程添加不同的目标。您还可以为其他任务设置更多目标 - 我有一个目标,因此如果我编辑的文件较少,我可以运行grunt watch
自动重新编译我的CSS。
将VS2013示例项目转换为less和Grunt的分步指南:
删除bootstrap并安装bootstrap less:
Uninstall-Package bootstrap
Install-Package Twitter.Bootstrap.less
确保全局安装grunt-cli:
npm install -g grunt-cli
创建package.json文件:
npm init
在项目中创建一个名为Gruntfile.js
的文件,其中包含以下内容:
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
less: {
dev: {
options: {
sourceMap: true,
dumpLineNumbers: 'comments',
relativeUrls: true
},
files: {
'Content/bootstrap.debug.css': 'Content/bootstrap/bootstrap.less',
}
},
production: {
options: {
cleancss: true,
compress: true,
relativeUrls: true
},
files: {
'Content/bootstrap.css': 'Content/bootstrap/bootstrap.less',
}
}
},
});
grunt.loadNpmTasks('grunt-contrib-less');
// Default task(s).
grunt.registerTask('default', ['less']);
grunt.registerTask('production', ['less:production']);
grunt.registerTask('dev', ['less:dev']);
};
编辑Visual Studio预构建事件以包括:
cd $(ProjectDir)
call grunt --no-color
(--no-color
从Visual Studio构建输出中删除一些控制字符)