如何使用Grunt.js和Compass使用Bootstrap for Sass?

时间:2014-02-04 20:23:58

标签: twitter-bootstrap sass gruntjs compass-sass

我想使用Bootstrap的官方Sass端口以及任务运行器Grunt.js和框架Compass但是根据手册(https://github.com/twbs/bootstrap-sass#bootstrap-for-sass)我没有成功。

成功安装了这些宝石:

bootstrap-sass (3.1.0.1, 3.1.0.0)
compass (0.12.2)
sass (3.2.14, 3.2.13, 3.2.12)

我的Gruntfile.js:

'use strict';

module.exports = function (grunt) {

grunt.initConfig({

  pkg: grunt.file.readJSON('package.json'),

  compass: {
      options: {
        httpPath: './',
        sassDir: '<%= pkg.css.src %>',
        cssDir: '<%= pkg.css.dest %>',
        imagesDir: '<%= pkg.graphics.cssPath %>'
      },
      dev: {
        options: {
          environment: 'development',
          outputStyle: 'expanded',
          force: true
        }
      },
      prod: {
        options: {
          environment: 'production',
          outputStyle: 'compressed',
          force: true
        }
      }
    },

});

grunt.loadNpmTasks('grunt-contrib-compass');

grunt.registerTask('default', ['compass:dev']);
};

在我的custom.scss开头,我有:

@import "compass";
@import "boostrap";

当我输入

  

咕噜

在命令行中我收到以下错误:

Syntax error: File to import not found or unreadable: boostrap.
   Load paths:
     c:/Users/Radek/WWW/svobodanabytek/src/sass
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/blueprint/stylesheets
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets
     Compass::SpriteImporter
        on line 2 of c:/Users/Radek/WWW/svobodanabytek/src/sass/custom.scss

没有第2行( @import“boostrap”; )一切正常。

如何在Grunt中开始使用bootstrap-sass gem?安装一些新的Grunt插件? 谢谢你的回答。

5 个答案:

答案 0 :(得分:5)

在使用bootstrap-contrib-sass长时间遇到同样的问题后,我能够正常工作。

在您的Gruntfile中,在includePaths配置变量中指定指南针和bootstrap-sass gems的位置:

options: {
    compass: true,
    includePaths: [
        '/var/www/.rvm/gems/ruby-2.1.1/gems/bootstrap-sass-3.1.1.0/vendor/assets/stylesheets',
        '/var/www/.rvm/gems/ruby-2.1.1/gems/compass-0.12.4/frameworks/compass/stylesheets'
    ],
    ...
}

附注:您可以使用grunt --verbose标志运行grunt以转储有助于调试的额外信息。

答案 1 :(得分:2)

看起来你拼错了bootstrap:

@import "boostrap";  应为@import "bootstrap";

答案 2 :(得分:1)

你正在使用grunt来提供它所提供的所有美感,但你正在使用引导宝石。

Grunt使用npm repo。

要进行简单修复,请使用bootstrap-sass

为了更好的整体工作,将上面的包与grunt-bootstrap合并替换较少的sass文件以及任何其他引用,然后将其重新打包为您自己的版本。这将提供完整的grunt自动化好处。

答案 3 :(得分:0)

在GruntFile&#34;罗盘选项&#34;你也可以添加:

raw: 'require "bootstrap-sass"'

所以选项看起来应该是这样的:

compass: {
    options: {
        sassDir: '<%= yeoman.app %>/sass',
        cssDir: '.tmp/styles',
        generatedImagesDir: '.tmp/images/generated',
        imagesDir: '<%= yeoman.app %>/images',
        javascriptsDir: '<%= yeoman.app %>/scripts',
        fontsDir: '<%= yeoman.app %>/fonts',
        importPath: './bower_components',
        httpImagesPath: '/images',
        httpGeneratedImagesPath: '/images/generated',
        httpFontsPath: '/fonts',
        relativeAssets: false,
        assetCacheBuster: false,
        raw: 'require "bootstrap-sass"\nSass::Script::Number.precision = 10\n'
    }
}

答案 4 :(得分:0)

你可以使用:

require: 'bootstrap-sass'
罗盘选项文件中的

,如下所示:

compass: {
  options: {
    sassDir: 'src/sass',
    cssDir: 'dist/css',
    environment: 'production',
    require: 'bootstrap-sass'
  }
}

这样可以避免在gruntfile中硬编码路径。