turris-gulp-tasks

Turris.js common gulp tasks

Usage no npm install needed!

<script type="module">
  import turrisGulpTasks from 'https://cdn.skypack.dev/turris-gulp-tasks';
</script>

README

Turris.js common gulp tasks

Provides basic gulp tasks for all your ES6 React applications and component needs.

Included things

  • build - compiles optimized (minified, deduped) commonjs version of your component with Webpack. Uses config.webpackConfig.production as configuration.
  • debug - compiles debug version of your component with Webpack, watches for changes and re-compiles when needed (until interrupted). Uses config.webpackConfig.debug as configuration.
  • server - uses express.js to statically serve folder specified in config.path at localhost:8080. Serves index.html for all non-existent requests to allow client-side routing. Allows access to express.js and express app via config.serverOverrides(app, express) function.
  • test - runs mocha tests starting from file specified at config.testEntryPoint.
  • cover - runs istanbul to generate test coverage from file specified at config.testEntryPoint.
  • esdoc - generates jsdoc-based documentation with esdoc using config file specified at config.esdocConfig.

Installation

Package can be installed using NPM:
npm install turris-gulp-tasks

Usage

Install, create a gulpfile.js in your project folder with the following code:

var gulp = require('turris-gulp-tasks')(require('./buildConfig.js'));
// load your custom tasks here
require('./gulp/my-task.js')(gulp);

gulp.task('default', ['debug', 'serve']);
gulp.task('test', ['test', 'cover']);

Build config file should example can be found below:

var path = require('path');

module.exports = {
    path: path.resolve(__dirname),
    rootPath: path.resolve(__dirname),
    esdocConfig: path.join(__dirname, 'esdoc.js'),
    webpackConfig: {
        debug: require('./webpack.config.js'),
        production: require('./webpack.config.prod.js'),
    },
    serverOverrides: function(app, express) {
        app.use(express.static(path.join(__dirname, 'dist')));
    },
    serverStart: function(server) {
        injectMyCode(server); // add things on top of server, e.g. websockets server
    },
    devServer: {
        proxy: {
            '/api/': 'http://localhost:8081' // default value, always appended if not passed from outside
        },
        headers: {
            'X-Custom': 'val' // your custom headers here
        }
    }.
};

Note that esdoc.js should export structure similar to esdoc.json described in esdoc manual, but with absolute paths (use path.join() to generate them).

License

MIT