12

我使用 codekit 来编写 less,然后它会自动转换为 css。

我不希望 rails 将我的 less 文件转换为 css,我宁愿使用 codekit 来做。

如果我通过预编译资产

rake assets:precompile

我明白了

rake aborted!
cannot load such file -- less

如何从预编译中排除特定的文件夹/文件类型?(我所有的 less 文件都在 app/assets/stylesheets/less 中,而 css(我确实希望被预编译)在 app/assets/stylesheets/css

更新

删除application.less解决了这个问题,但我如何首先将其排除在处理之外?

4

2 回答 2

20

来自资产管道指南:

编译文件的默认匹配器包括 application.js、application.css 和所有非 JS/CSS 文件(即 .coffee 和 .scss 文件在编译为 JS/CSS 时不会自动包含在内):

[ Proc.new{ |path| !File.extname(path).in?(['.js', '.css']) }, /application.(css|js)$/ ]

如果您有其他清单或单独的样式表和 JavaScript 文件要包含,您可以将它们添加到预编译数组中:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

所以,我会说你的解决方案是修改config.assets.precompile以排除.less文件。也许是这样的(在合适的环境文件中,比如config/environments/production.rb):

config.assets.precompile = [ Proc.new{ |path| !File.extname(path).in?(['.js', '.css', '.less']) }, /application.(css|js)$/ ]
于 2012-10-17T17:15:40.450 回答
1

如果你的 app/assets 文件夹下的目录结构是这样的:

application.css
/css
 (generated by code kit)
 |...home.css
 |...index.css
/less
 |...home.less (assuming this is the extension)
 |...index.less

然后,在您的 application.css 文件中,必须有一个指令,*= require_tree .它告诉 rails 扫描所有文件/目录并尝试将所有文​​件编译成一个 css 文件。

将此更改为*= require_directory ./css,它将加载目录下的css文件进行编译。

于 2012-10-23T12:47:39.477 回答