我有一个充满胡子模板的src/templates/
目录。我如何组合和缩小这些内容,以便它们可以在我的CoffeeScript应用程序中使用?
我已经按照https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的说明将我的CoffeeScript src组合并缩小为js。
答案 0 :(得分:7)
首先,我假设您的模板正在导出到全局对象(例如,每个模板都window.userpane =
而不仅仅是userpane =
)。这是最重要的事情。如果您正在这样做,并且您正在连接并成功编译,那么唯一剩下的就是在每次连接后自动缩小。
简短的回答:目前还没有好的工具。您最好的选择是使用类似
的行来扩展现有的Cakefilefs.watchFile 'concatenated.js', ->
exec 'uglifyjs concatenated.js'
(要安装UglifyJS,请运行npm install uglify-js
。)
现在,这无法解决确保脚本以合理顺序连接的问题。 (例如,如果文件A中有window.templates = {}
而文件B中有templates.userpane =
,那么在文件B之前连接文件A非常重要。)为此,你应该留意{{ 3}},它允许您在每个JS文件的顶部指出它的依赖关系,然后按照尊重这些依赖关系的顺序组合它们。 Sprockets的创建者Sam Stephenson是CoffeeScript社区的活跃成员,Sprockets中对CoffeeScript的一流支持来自Sprockets 2(repo Sprockets)。
更新:这是一个Cake任务,用于实际读取和连接template
目录中的所有内容:
templateJs = ''
files = fs.readdirSync 'template'
for file in files
contents = fs.readFileSync file, 'utf8'
name = file.replace /\..*/, '' # remove extension
templateJs += "window.#{name} = '#{contents}';"
然后使用templateJs
添加连接的JS。请注意,这假定模板中没有单引号('
)。要么在它们前面加上反斜杠,要么一直使用双引号。