修复 SyntasticCheck bootstrap 错误。 Vim 语法插件
Fixing SyntasticCheck bootstrap error. Vim Syntastic plugin
我正在使用 Syntastic VIM 插件
我所有的 bootstrap 东西都已设置好并可以正常工作,只是我一直收到此错误
在 app/assets/stylesheets/application.css.scss
|| File to import not found or unreadable: bootstrap-sprockets. Load path: ... on line 17
第 17 行是@import "bootstrap-sprockets";
我的 Gemfile 有
gem 'rails', '4.2.0'
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.3.3'
我的 app/assets/stylesheets/application.css.scss 刚刚
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
* compiled file so the styles you add here take precedence over styles defined in any styles
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
* file per style scope.
*
*= require_tree .
*= require_self
*/
@import "bootstrap-sprockets";
@import "bootstrap";
为什么 Syntastic 仍然给我这个错误?
Why does Syntastic still give me this error?
Syntastic 给你这个错误,因为它不知道 sprockets
设置的额外导入路径。但幸运的是,您可以使用变量 g:syntastic_<filetype>_<checker>_args
来配置它。所以在你的情况下你可能应该设置类似
let g:syntastic_scss_sass_args="--load-path path/to/bootstrap-gem/vendor/assets"
或类似的东西。
额外的糖分:您可以使用https://github.com/embear/vim-localvimrc自动为这个项目自动设置这个变量
@jan 回答是最正确的答案,也是正确的方法!
但是,为当前项目实际创建一个本地 .vimrc,然后在 gem 的文件层次结构中挖掘并找到它的资产可能有点麻烦。
就我个人而言,我认为这只是为了解决 Syntastic 的 scss 检查器的简单加载混乱而付出的努力太多,而且 - 顺便说一句 - 对 Bootstrap 的实际加载没有任何影响。
我想我们大多数人都会同意 scss 具有简单的规则和结构,并且非常容易调试和维护,因此我发现完全禁用 Syntastics 的 scss 检查器更容易。
let g:syntastic_scss_checkers=['']
另一种选择是让 Syntastic 忽略此错误消息。在 ~/.vimrc:
let g:syntastic_scss_sass_quiet_messages = {
\ "regex": 'File to import not found or unreadable', }
有关详细信息,请参阅:help syntastic-checker-options。
如果您使用的是 RVM,则可以通过执行以下步骤解决此问题
rvm gemdir
这将为您提供应用程序当前使用的 ruby 版本的目录。
然后你需要找到你的 bootstrap gem 版本
括号 { } 不需要。
cd {copy and paste rvm gemdir here}/gems/
转到您的 Gemfile 或 Gemfile.lock 文件,查看您使用的 bootstrap 版本。
cd {copy and paste rvm gemdir here}/gems/{bootstrap version}
现在,根据版本的不同,您将拥有 vendor/assets 或 /assets 目录
在我的例子中,我只有 /assets
所以在我的情况下,我在 .vimrc
中使用了它
let g:syntastic_scss_sass_args="--load-path ~/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.6/assets"
这消除了错误。不要忘记重新加载你的 .vimrc
在之前的解决方案的基础上,我终于找到了解决这个问题的好方法。
第一个问题是获取 Sprokets 所见的 load_path
,因为搜索它并保持更新很烦人。
rails r "
puts Rails.configuration.assets.
paths.grep(/stylesheets/).join(':')
"
运行 该命令生成更新的加载路径,要让 sass 检查器使用它,唯一的要求是使用该值导出环境变量 SASS_PATH
。
export SASS_PATH="$(rails r "
puts Rails.configuration.assets.
paths.grep(/stylesheets/).join(':')
")
我发现的唯一问题是它不支持链轮索引文件。
我正在使用 Syntastic VIM 插件
我所有的 bootstrap 东西都已设置好并可以正常工作,只是我一直收到此错误 在 app/assets/stylesheets/application.css.scss
|| File to import not found or unreadable: bootstrap-sprockets. Load path: ... on line 17
第 17 行是@import "bootstrap-sprockets";
我的 Gemfile 有
gem 'rails', '4.2.0'
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.3.3'
我的 app/assets/stylesheets/application.css.scss 刚刚
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
* compiled file so the styles you add here take precedence over styles defined in any styles
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
* file per style scope.
*
*= require_tree .
*= require_self
*/
@import "bootstrap-sprockets";
@import "bootstrap";
为什么 Syntastic 仍然给我这个错误?
Why does Syntastic still give me this error?
Syntastic 给你这个错误,因为它不知道 sprockets
设置的额外导入路径。但幸运的是,您可以使用变量 g:syntastic_<filetype>_<checker>_args
来配置它。所以在你的情况下你可能应该设置类似
let g:syntastic_scss_sass_args="--load-path path/to/bootstrap-gem/vendor/assets"
或类似的东西。
额外的糖分:您可以使用https://github.com/embear/vim-localvimrc自动为这个项目自动设置这个变量
@jan 回答是最正确的答案,也是正确的方法!
但是,为当前项目实际创建一个本地 .vimrc,然后在 gem 的文件层次结构中挖掘并找到它的资产可能有点麻烦。
就我个人而言,我认为这只是为了解决 Syntastic 的 scss 检查器的简单加载混乱而付出的努力太多,而且 - 顺便说一句 - 对 Bootstrap 的实际加载没有任何影响。
我想我们大多数人都会同意 scss 具有简单的规则和结构,并且非常容易调试和维护,因此我发现完全禁用 Syntastics 的 scss 检查器更容易。
let g:syntastic_scss_checkers=['']
另一种选择是让 Syntastic 忽略此错误消息。在 ~/.vimrc:
let g:syntastic_scss_sass_quiet_messages = {
\ "regex": 'File to import not found or unreadable', }
有关详细信息,请参阅:help syntastic-checker-options。
如果您使用的是 RVM,则可以通过执行以下步骤解决此问题
rvm gemdir
这将为您提供应用程序当前使用的 ruby 版本的目录。
然后你需要找到你的 bootstrap gem 版本
括号 { } 不需要。
cd {copy and paste rvm gemdir here}/gems/
转到您的 Gemfile 或 Gemfile.lock 文件,查看您使用的 bootstrap 版本。
cd {copy and paste rvm gemdir here}/gems/{bootstrap version}
现在,根据版本的不同,您将拥有 vendor/assets 或 /assets 目录
在我的例子中,我只有 /assets
所以在我的情况下,我在 .vimrc
中使用了它 let g:syntastic_scss_sass_args="--load-path ~/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.6/assets"
这消除了错误。不要忘记重新加载你的 .vimrc
在之前的解决方案的基础上,我终于找到了解决这个问题的好方法。
第一个问题是获取 Sprokets 所见的 load_path
,因为搜索它并保持更新很烦人。
rails r "
puts Rails.configuration.assets.
paths.grep(/stylesheets/).join(':')
"
运行 该命令生成更新的加载路径,要让 sass 检查器使用它,唯一的要求是使用该值导出环境变量 SASS_PATH
。
export SASS_PATH="$(rails r "
puts Rails.configuration.assets.
paths.grep(/stylesheets/).join(':')
")
我发现的唯一问题是它不支持链轮索引文件。