1.0.0 • Published 7 months ago

@ilabdev/scripts v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@ilabdev/scripts

Gulp tasks for linting & compiling scripts

Installation & set up

Install @ilabdev/scripts

npm install @ilabdev/scripts --save-dev

-- OR --

yarn add @ilabdev/scripts --dev

Include @ilabdev/scripts in your gulpfile.js

NOTE: Make sure you pass gulp through to the package as shown below. The package sets up gulp tasks and will need it passed through to work.

require( '@ilabdev/scripts' )( gulp )

Add the content from config.sample.js to your .gulpconfig.js and adjust as appropriate

module.exports = {
    // Other configs here...
    scripts: {
        process: true,
        watch: true,
        logColor: 'magenta',
        areas: [
            {
                paths: {
                    src: './src/js/scripts.js',
                    watch: './src/js/**/*',
                    dest: './dist/js',
                },
                minify: {
                    process: true,
                    separate: false,
                },
                pipes: {
                    // Put any pipe overrides here
                    src: {
                        allowEmpty: true,
                        base: './src/js',
                        sourcemaps: true,
                    },
                    dest: {
                        sourcemaps: '.',
                    },
                },
            },
        ],
        pipes: {
            filters: {
                lint: [
                    '**/*.js',
                ],
                build: [
                    '**/*.js',
                    '!**/libs/**/*.js',
                ],
            },
            watch: {
                events: 'all',
            },
            eslint: {
                // Overrides the version of eslint used
                eslint: null,
                formatter: 'stylish',
                options: {
                    fix: false,
                },
            },
            rollup: {
                // Overrides the version of rollup used.
                // Make sure to pass through the rollup function
                // e.g. require( 'rollup' ).rollup
                rollup: null,
                input: {
                    plugins: [
                        require( '@rollup/plugin-babel' ).babel( {
                            exclude: 'node_modules/**',
                            babelHelpers: 'bundled',
                        } ),
                        require( '@rollup/plugin-node-resolve' ).nodeResolve(),
                    ],
                    treeshake: false,
                    onwarn( e ) {
                        if ( e.code === 'THIS_IS_UNDEFINED' ) {
                            return
                        }

                        console.warn( e.message )
                    },
                },
                output: {
                    file: 'scripts.js',
                    name: 'Scripts',
                    format: 'umd',
                    generatedCode: 'es2015',
                    globals: {},
                },
            },
            uglify: {
                output: {
                    comments: '/^!|@preserve|@license|@cc_on/i',
                },
            },
        },
    },
    // Other configs here...
}

Run gulp scripts to run the linting & compiling tasks, gulp scripts:lint to run the linting task, gulp scripts:build to run the compiling task, gulp scripts:watch to run the watch task, or add the task as a script and run that with npm or yarn

Config

process

Type: boolean

Whether to lint & compile scripts or not

watch

Type: boolean

Whether to watch scripts for changes or not

loggerColor

Type: string

The logger color to use for any output text. See https://github.com/stgdp/fancy-logger#available-modifiers for colors that can be used

areas

Type: object[]

The areas to be linted & compiled. Each area has it's own, isolated settings to allow for separate configs

areas[].paths

Type: object

Path references for the linter & compiler

areas[].paths.src

Type: string[]|string

The paths to linted & compiled. Passed through to gulp.src, items can be globs

areas[].paths.watch

Type: string[]|string

The paths to watched. These are combined into a single array and passed through to gulp.watch

areas[].paths.dest

Type: string

The destination path of the compiled scripts. Passed through to gulp.dest, items can be globs

areas[].paths.minify

Type: object

The options for minifying scripts

areas[].paths.minify.process

Type: boolean

Whether to minify scripts or not

areas[].paths.minify.separate

Type: boolean

Whether minified scripts should be separate files or not

areas[].pipes

Type: object

Options to be passed through to the pipes.

areas[].pipes.src

Type: object

Options to be passed through to the gulp.src pipe. See https://gulpjs.com/docs/en/api/src/ for more information

areas[].pipes.dest

Type: object

Options to be passed through to the gulp.dest pipe. See https://gulpjs.com/docs/en/api/dest/ for more information

pipes

Type: object

Options to be passed through to the pipes.

pipes.filters

Type: object

Filters for each task

pipes.filters.lint

Type: string[]

Filters for the lint task

pipes.filters.build

Type: string[]

Filters for the build task

pipes.watch

Type: object

Options to be passed through to the gulp.watch pipe. See https://gulpjs.com/docs/en/api/watch/ for more information

pipes.eslint

Type: object

Options for eslint

pipes.eslint.eslint

Type: class|null

Overrides the version of eslint used. Must pass through the eslint class e.g. require( 'eslint' ).ESLint

pipes.eslint.formatter

Type: string

The formatter to be used to output errors & warnings. See https://eslint.org/docs/latest/use/formatters/ for more information

pipes.eslint.options

Type: object

Options to be passed through to the eslint class. See https://eslint.org/docs/latest/integrate/nodejs-api#parameters for more information

pipes.rollup

Type: object

Options for rollup

pipes.rollup.rollup

Type: function|null

Overrides the version of rollup used. Must pass through the actual rollup function e.g. require( 'rollup' ).rollup

pipes.rollup.input

Type: object

The input options to be passed through to rollup. See https://rollupjs.org/javascript-api/#inputoptions-object for more information

pipes.rollup.output

Type: object

The output options to be passed through to rollup. See https://rollupjs.org/javascript-api/#outputoptions-object for more information

pipes.uglify

Type: object

Options to be passed through to gulp-uglify. See https://www.npmjs.com/package/gulp-uglify for more information