From deafdcab22aab106e6b08f4b1349a78be5e4f055 Mon Sep 17 00:00:00 2001 From: Michael Ford Date: Fri, 5 Jun 2015 15:42:47 +0100 Subject: [PATCH] js compilation workflow --- gulpfile.js | 68 ++++++++++++++++++++++++++-------- js/summary/index.js | 2 + package.json | 10 ++++- silk/static/silk/js/summary.js | 59 +++++++++++++++++++++++++++++ 4 files changed, 122 insertions(+), 17 deletions(-) create mode 100644 js/summary/index.js create mode 100644 silk/static/silk/js/summary.js diff --git a/gulpfile.js b/gulpfile.js index edf4d44b..db36d7a5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,21 +1,57 @@ -/** - * Used for automating various tasks around testing & compilation. - */ -(function () { - "use strict"; +var gulp = require('gulp'), + async = require('async'), + _ = require('underscore'), + plugins = require('gulp-load-plugins')(); - var gulp = require('gulp'), - plugins = require('gulp-load-plugins')(); +var webpack = { + externals: { + 'react': 'React', + 'jQuery': '$', + 'underscore': '_', + 'moment': 'moment', + 'async': 'async' + }, + devtool: 'inline-source-map', + module: { + loaders: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader' + } + ] + } +}; - gulp.task('watch', function () { - gulp.watch('scss/**/*.scss', ['scss']); - }); - gulp.task('scss', function () { - gulp.src('scss/**/*.scss') - .pipe(plugins.scss()) - .pipe(gulp.dest('silk/static/silk/css')) - }); +gulp.task('watch', function () { + gulp.watch('scss/**/*.scss', ['scss']); +}); + +gulp.task('scss', function () { + gulp.src('scss/**/*.scss') + .pipe(plugins.scss()) + .pipe(gulp.dest('silk/static/silk/css')) +}); + +var apps = { + summary: 'js/summary/index.js' +}; + +gulp.task('js', function (done) { + var appNames = Object.keys(apps), + tasks = _.map(appNames, function (appName) { + return function (done) { + var path = apps[appName], + config = _.extend({}, webpack); + gulp.src(path) + .pipe(plugins.webpack(config)) + .pipe(plugins.rename(appName + '.js')) + .pipe(gulp.dest('silk/static/silk/js')) + .on('end', done); + } + }); + async.parallel(tasks, done); +}); -})(); \ No newline at end of file diff --git a/js/summary/index.js b/js/summary/index.js new file mode 100644 index 00000000..592d745e --- /dev/null +++ b/js/summary/index.js @@ -0,0 +1,2 @@ +var React = require('react'); + diff --git a/package.json b/package.json index 57e8768f..bb6d2671 100644 --- a/package.json +++ b/package.json @@ -21,10 +21,18 @@ }, "homepage": "https://github.com/mtford90/silk", "devDependencies": { + "async": "^1.2.0", + "babel-core": "^5.5.3", + "babel-loader": "^5.1.4", "gulp": "^3.8.10", + "gulp-rename": "^1.2.2", "gulp-scss": "^1.1.1", "gulp-shell": "^0.4.2", "gulp-util": "^3.0.5", - "q": "^1.4.1" + "gulp-webpack": "^1.4.0", + "node-libs-browser": "^0.5.2", + "q": "^1.4.1", + "underscore": "^1.8.3", + "webpack": "^1.9.10" } } diff --git a/silk/static/silk/js/summary.js b/silk/static/silk/js/summary.js new file mode 100644 index 00000000..563fb06f --- /dev/null +++ b/silk/static/silk/js/summary.js @@ -0,0 +1,59 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var React = __webpack_require__(1); + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = React; + +/***/ } +/******/ ]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNjkyMDE5OGMwODk5YWM3YmQzOWUiLCJ3ZWJwYWNrOi8vLy4vanMvc3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJSZWFjdFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7QUN0Q0EsS0FBSSxLQUFLLEdBQUcsbUJBQU8sQ0FBQyxDQUFPLENBQUMsQzs7Ozs7O0FDQTVCLHdCIiwiZmlsZSI6IjY5MjAxOThjMDg5OWFjN2JkMzllLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCA2OTIwMTk4YzA4OTlhYzdiZDM5ZVxuICoqLyIsInZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vanMvc3VtbWFyeS9pbmRleC5qc1xuICoqLyIsIm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBleHRlcm5hbCBcIlJlYWN0XCJcbiAqKiBtb2R1bGUgaWQgPSAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file