dev*_*vth 1 minify coffeescript
我有一个src/templates/充满胡子模板的目录.我如何组合和缩小这些内容,以便它们可以在我的CoffeeScript应用程序中使用?
我已经在之后的方向https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的组合和涅槃我CoffeeScript的SRC到JS.
首先,我假设您的模板正在导出到全局对象(例如,每个模板都是,window.userpane =而不仅仅是userpane =).这是最重要的事情.如果您正在这样做,并且您正在成功连接和编译,那么唯一剩下的就是在每次连接后自动缩小.
简短的回答:目前还没有好的工具.您最好的选择是使用类似的行扩展现有的Cakefile
fs.watchFile 'concatenated.js', ->
exec 'uglifyjs concatenated.js'
Run Code Online (Sandbox Code Playgroud)
(要安装UglifyJS,请运行npm install uglify-js.)
现在,这无法解决确保脚本以合理顺序连接的问题.(例如,如果你有window.templates = {}文件A和templates.userpane =文件B,那么文件A 在文件B之前连接是非常重要的.)为此,你应该留意链轮,它可以让你在每个JS的顶部指出提出它的依赖关系,然后按照尊重这些依赖关系的顺序组合它们.Sprockets的创建者Sam Stephenson是CoffeeScript社区的活跃成员,Sprockets中对CoffeeScript的一流支持来自Sprockets 2(这里是repo ).
更新:这是一个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}';"
Run Code Online (Sandbox Code Playgroud)
然后在你的连接JS前面添加templateJs.请注意,这假设'模板中没有单引号().要么在它们前面加上反斜杠,要么一直使用双引号.