Skip to content

Instantly share code, notes, and snippets.

@adambom
Created July 25, 2012 16:43
Show Gist options
  • Save adambom/3177149 to your computer and use it in GitHub Desktop.
Save adambom/3177149 to your computer and use it in GitHub Desktop.
console.log("Build started");
var now = new Date();
var _ = require("underscore");
var jsp = require("uglify-js").parser;
var pro = require("uglify-js").uglify;
var fs = require("fs");
var output = "js/compiled.js";
var src = [
"js/libs/F/utils.js",
"js/plugins/jquery.chosen.js",
"js/libs/localStoragePolyfill.js",
"js/plugins/jquery.dataTables.min.js",
"js/plugins/jquery.tablesorter.js",
"js/libs/highcharts.src.js",
"js/libs/Graphs.js",
"js/libs/foundation.js",
"js/libs/Formatter.js",
"js/libs/tabs.js",
"js/libs/underscore.js",
"js/libs/backbone.js",
"js/libs/backbone.view.close.js",
"js/libs/backbone.model.stackSave.js",
"js/libs/underscore.escape.js",
"js/libs/Reflow.js",
"js/libs/jscolor.js",
"js/libs/jquery-ui-custom.min.js",
"js/plugins/jquery.sparkline.js",
"js/plugins/jquery.colourPicker.js",
"js/plugins/jquery.ajaxFileUpload.js",
"js/libs/crypto.js",
"js/App.js",
"js/models/DataManager.js",
"js/models/CbreModel.js",
"js/models/Config.js",
"js/models/UserConfig.js",
"js/models/PropertyManager.js",
"js/models/SupplyCase.js",
"js/models/Property.js",
"js/models/Portfolio.js",
"js/models/DemandCase.js",
"js/models/Scenario.js",
"js/models/User.js",
"js/models/Alert.js",
"js/models/FileManager.js",
"js/models/Sim.js",
"js/collections/CbreCollection.js",
"js/collections/PropertiesManager.js",
"js/collections/SupplyCases.js",
"js/collections/Properties.js",
"js/collections/DemandCases.js",
"js/collections/Scenarios.js",
"js/collections/Users.js",
"js/collections/Coauthors.js",
"js/collections/Sims.js",
"js/views/CaseManagerView.js",
"js/views/EditableTableView.js",
"js/views/SelectChooserView.js",
"js/views/SupplySetupView.js",
"js/views/SupplySetupOverviewView.js",
"js/views/SupplySetupGeographyView.js",
"js/views/SupplySetupScoringView.js",
"js/views/ChooseSupplyCaseView.js",
"js/views/PortfolioSummaryView.js",
"js/views/SupplyCaseManagerView.js",
"js/views/DetailView.js",
"js/views/SupplyCaseSeatPlanDetailView.js",
"js/views/SupplyCaseCostDetailView.js",
"js/views/CostView.js",
"js/views/CostSummaryView.js",
"js/views/CostRecurringView.js",
"js/views/CostOneTimeView.js",
"js/views/CostAssetsView.js",
"js/views/ModalView.js",
"js/views/EditPropertyGeographyView.js",
"js/views/AddSupplyRecordView.js",
"js/views/EditSupplyRecordView.js",
"js/views/SupplyCaseSelectorView.js",
"js/views/DemandCasesSelectorView.js",
"js/views/StatisticsDetailView.js",
"js/views/AddSupplyCaseView.js",
"js/views/EditSupplyCaseView.js",
"js/views/DemandCaseManagerView.js",
"js/views/AddDemandCaseView.js",
"js/views/EditDemandCaseView.js",
"js/views/DemandSetupView.js",
"js/views/AddDemandRecordView.js",
"js/views/EditDemandRecordView.js",
"js/views/EditTimeDetailsView.js",
"js/views/EditStructuralVacancyTimeDetailsView.js",
"js/views/EditSeatGearingTimeDetailsView.js",
"js/views/EditAwsView.js",
"js/views/DemandCasesGraphSelectorView.js",
"js/views/ExistingCapacityChartView.js",
"js/views/LeaseChartView.js",
"js/views/ExpenseChartView.js",
"js/views/ColorPickerView.js",
"js/views/ShowHideFiltersView.js",
"js/views/FiltersView.js",
"js/views/GlobalAdjustmentsView.js",
"js/views/ChooseDemandCaseNameView.js",
"js/views/ProfitLossImpactView.js",
"js/views/CapitalImpactView.js",
"js/views/RateChooserView.js",
"js/views/DemandRateChooserView.js",
"js/views/CashVsBookSummaryView.js",
"js/views/HelpAndSupportView.js",
"js/views/AdminView.js",
"js/views/AdminGeneralView.js",
"js/views/AdminDemandView.js",
"js/views/AdminSupplyView.js",
"js/views/AdminScoringView.js",
"js/views/AdminUsersView.js",
"js/views/AdminColorsView.js",
"js/views/ChooseDemandTypeNameView.js",
"js/views/TacticalSummaryView.js",
"js/views/AddUserView.js",
"js/views/AlertView.js",
"js/views/SuccessView.js",
"js/views/ErrorView.js",
"js/views/InfoView.js",
"js/views/DemandSetupHeadcountView.js",
"js/views/DemandSetupVacancyView.js",
"js/views/DemandSetupGearingView.js",
"js/views/DemandSetupAwsView.js",
"js/views/DemandSetupSeatsRequiredView.js",
"js/views/UploadSupplyRecordView.js",
"js/views/UploadDemandRecordView.js",
"js/views/CaseScenarioPicker.js",
"js/views/ScenarioSelectorView.js",
"js/views/ScenarioSaverView.js",
"js/views/ChooseScenarioNameView.js",
"js/views/ScenarioComparisonView.js",
"js/views/ScenarioOperationsComparisonView.js",
"js/views/ScenarioFinancialComparisonView.js",
"js/views/ScenarioComparisonHelperView.js",
"js/views/ModelManagerView.js",
"js/views/AddModelView.js",
"js/views/EditModelView.js",
"js/views/DuplicateModelView.js",
"js/routers/CbreRouter.js",
"js/routers/Nav.js",
"js/routers/Home.js"
];
var operations = [pro.gen_code, pro.ast_squeeze, pro.ast_mangle, jsp.parse];
var file,
pretty = "",
ugly = "",
ast;
_.each(src, function (path) {
pretty += fs.readFileSync(path, "ascii");
console.log("File: " + path + " read succesfully");
});
var compile = _.compose.apply(this, operations);
console.log("Compilation started");
ugly = compile(pretty);
console.log("Compilation complete");
console.log("File write started");
fs.writeFile(output, ugly);
console.log("File write complete");
console.log("Build success: completed in (" + (new Date() - now) / 1000 + "s)");
console.log("Code compressed from " + pretty.length / 1024 + "KB to " + ugly.length / 1024 + "KB, (" + 100 * ugly.length / pretty.length + "%)");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment