Example #1
0
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);
});
Example #2
0
});

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;
				}
			});