I've written before about how to use ESLint with Gulp. I'm using Gulp less and webpack and npm scripts more these days. Here's how I use ESLint with webpack:

module.exports = env => {
    …
    module: {
        rules: [
            {
                enforce: "pre",
                test: /\.js$/,
                exclude: /(node_modules)/,
                loader: "eslint-loader",
                options: {
                    cache: false,
                    fix: false,
                    emitWarning: true,
                    emitError: true,
                    failOnWarning: true,
                    failOnError: true
                }
            },
    …

Here, I'm using the eslint-loader to run ESLint rules. I'm using enforce: "pre" to force running ESLint before other rules.

Inside the options setting, you can pass in standard ESLint options combined with eslint-loader options, like emitError and failOnError, which will fail the build if there are any linting errors.