我已阅读grunt,sass和指南针文档,但找不到有关此错误的更多信息。我还看到另一个有类似错误的人,但这是由于他们的contrib.rb文件中的语法问题,我不相信我在contrib.rb文件中。
问题:我运行grunt watch任务并在我对sass(* .scss)文件进行更改时随时出错。 错误如下:
NoMethodError on line 264 of /Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/configuration/inheritance.rb: _
Run with --trace to see the full backtrace
因此,我的sass文件都没有处理到我的css文件夹。我是咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜。我喜欢任何关于我的文件可能配置不正确的建议,或者是否有一个版本的指南针或sass与grunt相关的错误(所有都是最新的非beta版本)。
这是我的contrib.rb文件的文本:
require "susy"
css_dir = _/css
sass_dir = _/components/sass
javascripts_dir = _/js
output_style = :compressed
我的gruntfile.js:
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.initConfig({
uglify: {
my_target: {
files: {
'_/js/script.js': ['_/components/js/*.js'] //tells grunt to track and compress any .js file found in components/js folder
} //files
} // my_target
}, // uglify
compass: {
dev: {
options: {
config: 'config.rb',
force: true // <-- ???
} //options
} //dev
}, //compass
watch: {
options: { livereload: true },
scripts: {
files: ['_/components/js/*.js'],
tasks: ['uglify']
}, //scripts
sass: {
files: ['_/components/sass/*.scss'],
tasks: ['compass:dev']
}, //sass
html: {
files: ['*.html']
}
} // watch
})// initConfig
grunt.registerTask('default', 'watch'); //makes 'grunt' command automaticaly execute the watch command to monitor JS files
} //exports
我的项目文件夹结构:
sass_first_proj
|
_(folder)
|
components
|
css
|
js
images
node_modules
|
grunt
|
grunt-contrib-compass
|
grunt-contrib-uglify
|
grunt-contrib-watch
|
matchdep
.gitignore
|
config.rb
|
gruntfile.js
|
index.html
|
package.json
答案 0 :(得分:1)
不确定您是否能够解决此问题,但我收到了同样的错误。
我必须在目录前包含一个正斜杠才能使Grunt进入正确的路径。我在使用Grunt和Compass进行项目时使用了类似的步骤,而且我在我的电脑上,所以我只是将路径放在单引号中。根据项目目录的结构,config.rb文件中的两行各样如下所示:
css_dir = '/_/css'
sass_dir = '/_/components/sass'
同样在你的问题中,我注意到你说它是&#34; contrib.rb&#34;文件,但在您的文件目录中,它名为config.rb。你也可以在你的gruntfile.js文件中以config.rb的形式引用它,但我只是想确保项目根目录中的这个文件被命名为#34; config.rb&#34;。
我知道这是很多设置,所以我希望这适合你。
答案 1 :(得分:0)
所以这就是问题,我在使用Grunt指南针时从未使用过contrib.rb文件。我知道你可以,如果你让它工作,那很好。但另一个选择是只指定grunt配置中的路径。当然,这一切都假设您能够实际编译sass文件。当谷歌搜索该错误时,似乎很多时候它是contrib.rb文件导致问题的问题。
所以说,也许你可以不用contrib.rb
文件而只使用Grunt?
compass: {
dev: {
options: {
sassDir: "_/components/sass",
specify: "_/components/sass/**/*.scss", // might not be necessary for you
cssDir: "_/css",
javascriptsPath: "_/js",
outputStyle: "compressed",
require: "susy"
}
}
}