Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. var fs = require('fs'),
  2. sys = require('sys'),
  3. util = require('util'),
  4. uglify = require('uglify-js');
  5. function copyFile(src, dst, cb) {
  6. function copy(err) {
  7. var is, os;
  8. if (!err) {
  9. return cb(new Error("File " + dst + " exists."));
  10. }
  11. fs.stat(src, function (err) {
  12. if (err) {
  13. return cb(err);
  14. }
  15. is = fs.createReadStream(src);
  16. os = fs.createWriteStream(dst);
  17. util.pump(is, os, cb);
  18. });
  19. }
  20. fs.stat(dst, copy);
  21. }
  22. function makeDirectoryIfNotExists(path) {
  23. try {
  24. var stats = fs.statSync(path);
  25. if (!stats.isDirectory()) {
  26. fs.mkdirSync(path, 0);
  27. }
  28. } catch (e) {
  29. fs.mkdirSync(path, 0);
  30. }
  31. }
  32. desc('Obfuscation and Compression');
  33. task('minify', function() {
  34. var all = fs.readFileSync('mustache.js').toString(),
  35. out = fs.openSync('mustache.min.js', 'w+'),
  36. ast = uglify.parser.parse(all);
  37. ast = uglify.uglify.ast_mangle(ast);
  38. ast = uglify.uglify.ast_squeeze(ast);
  39. fs.writeSync(out, uglify.uglify.gen_code(ast));
  40. });
  41. task('package', function() {
  42. function package(id, location) {
  43. var files = [
  44. , 'mustache.js'
  45. ];
  46. files.unshift('mustache-' + id + '/mustache.js.tpl.pre');
  47. files.push('mustache-' + id + '/mustache.js.tpl.post');
  48. var all = '';
  49. files.forEach(function(file, i) {
  50. all += fs.readFileSync(file).toString();
  51. all += '\n';
  52. });
  53. var outPath;
  54. if (location) {
  55. makeDirectoryIfNotExists('packages/' + id);
  56. if (location === true) {
  57. outPath = 'packages/' + id + '/mustache.js';
  58. } else {
  59. outPath = 'packages/' + id + '/' + location + '/mustache.js';
  60. makeDirectoryIfNotExists('packages/' + id + '/' + location);
  61. }
  62. } else {
  63. outPath = 'packages/' + id + '.mustache.js';
  64. }
  65. var out = fs.openSync(outPath, 'w+');
  66. fs.writeSync(out, all);
  67. }
  68. var params = Array.prototype.slice.call(arguments);
  69. makeDirectoryIfNotExists('packages');
  70. for (var i = 0, n = params.length; i<n; ++i) {
  71. switch (params[i].toLowerCase()) {
  72. case 'jquery':
  73. package('jquery');
  74. break;
  75. case 'commonjs':
  76. package('commonjs', true);
  77. copyFile('mustache-commonjs/package.json', 'packages/commonjs/package.json');
  78. break;
  79. case 'dojox':
  80. package('dojox', 'string');
  81. break;
  82. case 'yui3':
  83. package('yui3', 'mustache');
  84. break;
  85. case 'requirejs':
  86. package('requirejs');
  87. break;
  88. default:
  89. break;
  90. }
  91. }
  92. });