从Rake任务调用nodejs的正确方法是什么?我想将一些LESS文件编译成CSS。我在全球范围内安装了cssless编译器。
答案 0 :(得分:0)
命令行使用lessc命令调用的Less编译器应该可以工作。
您可以从安装Ruby版本的Less开始,这使得Less编译器可用于Ruby:sudo gem install less
请注意,如果您将使此编译器正常工作,您还必须安装therubyracer(sudo gem install therubyracer
)(当您使用节点版本替换编译器时不需要)。
现在您应该可以运行以下命令:lessc -v
。这应该输出类似lessc 1.7.0 (LESS Compiler) [Ruby] 2.6.0
的内容到控制台。
执行这些步骤后,您可以运行npm install -g less
,它将安装Node Less编译器(并替换Ruby编译器,两个命令都在同一位置安装可执行文件)。现在,lessc -v
命令应将以下内容输出到控制台lessc 1.7.5 (Less Compiler) [JavaScript]
最后,您可以创建一个Rake任务来编译Less。可在以下位置找到此类任务的示例:https://gist.github.com/pfig/1969062,如下所示:
require 'rubygems'
require 'less'
require 'rake'
SOURCE = "."
LESS = File.join( SOURCE, "path", "to", "less", "files" )
CONFIG = {
'less' => File.join( LESS, "less" ),
'css' => File.join( LESS, "css" ),
'input' => "style.less",
'output' => "style.css"
}
desc "Compile Less"
task :lessc do
less = CONFIG['less']
input = File.join( less, CONFIG['input'] )
output = File.join( CONFIG['css'], CONFIG['output'] )
source = File.open( input, "r" ).read
parser = Less::Parser.new( :paths => [less] )
tree = parser.parse( source )
File.open( output, "w+" ) do |f|
f.puts tree.to_css( :compress => true )
end
end # task :lessc