我正在寻找用于构建JS文件的非常简单的模板脚本。它应该只做一件事:将一个文件包含在另一个文件中。
/*> script.js */
var style = "/*> style.css */";
var my_script;
html, body {margin:0; padding:0}
.my-style {background: #fffacc}
var my_script;
var style = "html, body {margin:0; padding:0}\
.my-style {background: #fffacc}";
我做了cat main.js | sed -e 's!/\*> \(.*\) \*/!cat \1!g'
。它的输出:
cat script.js
var style = "cat style.css";
make cat \1
如何实际运作?
我将用它来构建UserJS(Greasemonkey脚本)。我的存储库中的JS和CSS文件很少。我想让它们彼此分开。但结果脚本必须只有一个,所以我需要将所有JS和CSS文件合并到它。
我可以使用sed,awk,perl或ruby。
最后,我做了js-preprocessor。谢谢你们!
答案 0 :(得分:4)
有三个明显的解决方案:
cat file1 file2 file3 > output
语句来获得最终结果。cpp
),但要小心它可能与JS交互的方式。但是,您也可以通过在“标题”中定义宏来使用它,就像已经为C创建的那样,创建自己的库。非显而易见的解决方案可能会使用某些特定的JavaScript引擎,它允许您添加挂钩或插件以支持文件包含,输出生成的代码,或者完全不同的其他内容。
答案 1 :(得分:1)
这个用途是什么? JavaScript不支持多行字符串,因此在模板扩展后,style
变量定义将导致语法错误。
编辑:我的错误 - 我错过了您的示例扩展包含\
延续。这使扩展过程变得复杂;如果你能详细了解你计划在哪里使用它,你有哪些工具等,那将是一件好事。
Ruby中的一个例子:
ruby <main.js -pe'$_.gsub!(%r{/\*>\s*(.+?)\s*\*/}) { File.read($1) }'
答案 2 :(得分:0)
我也会使用ruby,但我建议依赖ruby stdlib中包含的erb。如果要添加更复杂的功能,它允许扩展。
在您的情况下,您可以编写以下方法:
def include_file(filename)
File.open( filename, "r" ) { |f| f.read }
end
然后从你的模板中使用它:
<% include_file "script.js" %>
var style = "<% include_file "style.css" %>";
它只是有效......