task("dist", ["libjass.js", "libjass.min.js", "test", "test-browser", "demo", "doc"], function (callback) { var inputFiles = [ "./README.md", "./CHANGELOG.md", "./LICENSE", "./lib/libjass.js", "./lib/libjass.js.map", "./lib/libjass.min.js", "./lib/libjass.min.js.map", "./lib/libjass.css" ]; var files = Object.create(null); inputFiles.forEach(function (filename) { files["./dist/" + path.basename(filename)] = filename; }); async.series([ // Clean dist/ task.clean(Object.keys(files).concat(["./dist/package.json"])), // Create dist/ if necessary function (callback) { fs.mkdir("./dist", function (err) { if (err && err.code !== "EEXIST") { callback(err); return; } callback(); }); }, // Copy all files except package.json async.forEachOf.bind(async, files, function (inputFilename, outputFilename, callback) { async.waterfall([fs.readFile.bind(fs, inputFilename), fs.writeFile.bind(fs, outputFilename)], callback); }), // Copy package.json async.waterfall.bind(async, [ fs.readFile.bind(fs, "./package.json"), function (data, callback) { try { var packageJson = JSON.parse(data); packageJson.devDependencies = undefined; packageJson.private = undefined; packageJson.scripts = undefined; packageJson.main = "libjass.js"; } catch (ex) { callback(ex); return; } callback(null, new Buffer(JSON.stringify(packageJson, null, "\t"))); }, fs.writeFile.bind(fs, "./dist/package.json") ]) ], callback); });
}); task("libjass.min.js", ["libjass.js"], function (callback) { fs.exists("./lib/libjass.min.js", function (exists) { if (exists) { callback(); return; } callback(null, task.src(["./lib/libjass.js", "./lib/libjass.js.map"], { relativeTo: "./lib" }) .pipe(UglifyJS.minify()) .pipe(task.dest("./lib"))); }); }); task("clean", task.clean(["./src/version.ts", "./lib/libjass.js", "./lib/libjass.js.map", "./lib/libjass.min.js", "./lib/libjass.min.js.map"])); task("watch", ["build-tools", "version.ts"], function (callback) { npm.load(function () { var testRunning = false; var rerunTest = false; var startTest = function () { npm.commands["run-script"](["test-lib"], function () { testRunning = false; if (rerunTest) { startTest(); rerunTest = false; } });