Grunt / Bundler不会使用指定的sass版本

时间:2014-04-30 12:35:51

标签: ruby responsive-design sass bundler compass-sass

我们有一个Grunt和Bundler设置的项目。所有这些安装没有问题。生成Gemfile.lock,下拉正确的gem,以及使用npm创建的grunt文件。我们开始监视项目并且它在sass编译时爆炸,因为它使用的是错误版本的sass而不是gemfile中指定的版本。

顺便说一下,这是在Windows上......

的Gemfile

source 'https://rubygems.org'

gem 'sass', '~> 3.2'
gem 'compass', '~> 0.12'
gem 'susy', '~> 1.0'

Gemfile.lock的

GEM
  remote: https://rubygems.org/
  specs:
    chunky_png (1.3.1)
    compass (0.12.6)
      chunky_png (~> 1.2)
      fssm (>= 0.2.7)
      sass (~> 3.2.19)
    fssm (0.2.10)
    sass (3.2.19)
    susy (1.0.9)
      compass (>= 0.12.2)
      sass (>= 3.2.0)

PLATFORMS
  x86-mingw32

DEPENDENCIES
  compass (~> 0.12)
  sass (~> 3.2)
  susy (~> 1.0)

3 个答案:

答案 0 :(得分:6)

如果您想将您的宝石限制在捆绑包中的那些(在Gemfile中列出),那么在终端中运行命令时,您应该在命令前添加bundle exec

例如。如果您正在运行sass --watch,那么您将运行bundle exec sass --watch以确保使用捆绑中的版本。

bundle exec上的文档:http://bundler.io/man/bundle-exec.1.html

答案 1 :(得分:0)

基于非正式实验(在我的Gruntfile的同一级别向我的项目添加GEMFILE),如果您正在使用Compass任务并将任务选项“bundleExec”设置为true,则任务应依赖于bundler处理版本和依赖项。使用此设置,仅在运行“grunt server”(而不是“bundle exec grunt server”)时创建了一个lockfile。如果这是错误的或误导性的建议,请任何人纠正我。这两种方法似乎都适用于我的环境。

答案 2 :(得分:0)

在unix上,您可以使用以下命令进行检查:

which sass

应该返回类似的内容:

/Users/[username]/.rbenv/shims/sass

如果它类似于/usr/bin/sass,那么您需要在{@ 1}}前面添加@sevenseacat提及的命令。