closurebuilder的zc.buildout配方
pwt.recipe.closurebuilder的Python项目详细描述
这是closurebuilder工具的一个简单包装 谷歌关闭项目。
依赖关系
设置一些javascript文件。
>>> import os.path>>> os.mkdir(os.path.join(sample_buildout, 'js')) >>> write('js/a.js', ''' ... goog.provide('pwt.provideA'); ... ... goog.require('pwt.provideB'); ... ''')>>> write('js/b.js', ''' ... goog.provide('pwt.provideB'); ... ''')>>> mkdir('js/goog') >>> write('js/goog/base.js', open(os.path.join(os.path.dirname(__file__), "goog/base.js")).read())
根
生成一个依赖文件,指定所有javascript文件的位置 位于您的项目中。
>>> write('buildout.cfg', ''' ... [buildout] ... parts = deps.js ... ... [deps.js] ... recipe = pwt.recipe.closurebuilder:dependency ... output = %(dir)s/deps.js ... roots = %(dir)s/js ... ''' %{'dir': sample_buildout})>>> print system(buildout) Installing deps.js. <BLANKLINE>>>> cat('deps.js') // This file was autogenerated by buildout[deps.js]. // Please do not edit. goog.addDependency('a.js', ['pwt.provideA'], ['pwt.provideB']); goog.addDependency('b.js', ['pwt.provideB'], []); goog.addDependency('goog/base.js', ['goog'], []);
前缀为
的根生成一个依赖文件,指定所有javascript文件的位置 位于您的项目中。有时文件在不同的 名称空间,然后使用带前缀的根目录选项。
>>> write('buildout.cfg', ''' ... [buildout] ... parts = deps.js ... ... [deps.js] ... recipe = pwt.recipe.closurebuilder:dependency ... output = %(dir)s/deps.js ... root_with_prefix = %(dir)s/js /media ... ''' %{'dir': sample_buildout})>>> print system(buildout) Uninstalling deps.js. Installing deps.js. <BLANKLINE>>>> cat('deps.js') // This file was autogenerated by buildout[deps.js]. // Please do not edit. goog.addDependency('/media/a.js', ['pwt.provideA'], ['pwt.provideB']); goog.addDependency('/media/b.js', ['pwt.provideB'], []); goog.addDependency('/media/goog/base.js', ['goog'], []);
编译
使用上面的信息,生成 javascript应用程序。
>>> write('buildout.cfg', ''' ... [buildout] ... parts = deps.js compiled.js ... ... [deps.js] ... recipe = pwt.recipe.closurebuilder:dependency ... output = %(dir)s/d1.js ... roots = %(dir)s/js ... ... [compiled.js] ... recipe = pwt.recipe.closurebuilder:compile ... dependency = deps.js ... output = %(dir)s ... inputs = %(dir)s/js/a.js ... ''' %{'dir': sample_buildout})>>> output = system(buildout) >>> output == '''root: Compiling with the following command: java -jar %(jar)s --js %(dir)s/js/goog/base.js --js %(dir)s/js/b.js --js %(dir)s/js/a.js ... Uninstalling deps.js. ... Installing deps.js. ... Installing compiled.js. ... ''' %{'jar': os.path.join(os.path.dirname(__file__), 'compiler-1111.jar'), ... 'dir': sample_buildout} True>>> ls(sample_buildout) - .installed.cfg - 0fb0e24aea59f6281f3c615ffe650823.js d bin - buildout.cfg - d1.js d develop-eggs d eggs d js d parts
我们还可以指定可能没有goog.provide声明的额外文件。 这样就不会被德斯威特的配方所接受了。
>>> write('js/c.js', ''' ... alert('c'); ... ''')>>> write('buildout.cfg', ''' ... [buildout] ... parts = deps.js compiled.js ... ... [deps.js] ... recipe = pwt.recipe.closurebuilder:dependency ... output = %(dir)s/d1.js ... roots = %(dir)s/js ... ... [compiled.js] ... recipe = pwt.recipe.closurebuilder:compile ... dependency = deps.js ... output = %(dir)s ... inputs = %(dir)s/js/a.js ... extra_js = js/c.js ... ''' %{'dir': sample_buildout})>>> output = system(buildout) >>> output == '''root: Compiling with the following command: java -jar %(jar)s --js js/c.js --js %(dir)s/js/goog/base.js --js %(dir)s/js/b.js --js %(dir)s/js/a.js ... Uninstalling compiled.js. ... Updating deps.js. ... Installing compiled.js. ... ''' %{'jar': os.path.join(os.path.dirname(__file__), 'compiler-1111.jar'), ... 'dir': sample_buildout} True>>> ls(sample_buildout) - .installed.cfg - b68ab8e7a5aa2b2787d35e9b762fb191.js d bin - buildout.cfg - d1.js d develop-eggs d eggs d js d parts