Grunt-Browserify Ignore Option

У меня есть приложение React, которое я трансформирую, выворачиваю и проверяю через Grunt. Мой хрюканый файл выглядит так...

module.exports = function(grunt) {
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    browserify: {
        dist: {
            files: {
                './Scripts/build/App.js': ['./Scripts/src/**/*.js']
            },
            options: {
                browserifyOptions: {
                    debug: true
                },
                transform: [ require('grunt-react').browserify ],
                ignore: './Scripts/src/**/*-test.js'
            }
        }
    },
    uglify: {
        my_target: {
            files: {
                './Scripts/build/App-min.js': ['./Scripts/build/App.js']
            }
        }
    },
    watch: {
        scripts: {
            files: ['./Scripts/src/**/*.js'],
            tasks: ['browserify', 'uglify'],
            options: {
                spawn: false
            },
        },
    },

})

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-watch');
}

Вы заметите, что свойство ignore задачи browserify указывает ей игнорировать любой файл с -test.js в имени файла, потому что мои тесты хранятся в папках непосредственно рядом с файлом, который я тестирую (как кажется, соглашение при рассмотрении примеров React Flux), и я не хочу, чтобы тестовые файлы были включены в мой файл app.js. Может кто-нибудь сказать мне, если я делаю это неправильно, потому что до сих пор, кажется, не работает вообще? Тестовые файлы объединяются в app.js, и затем я получаю консольные ошибки о том, что jest не определен.

1 ответ

Решение

Сделал немного бокового поиска в Google и нашел пост в стеке

Похоже, что вы можете добавлять файлы в массив src, и если вы добавите к ним префикс "!" он помечает их как игнорируемые файлы.

Мой сейчас рабочий хрюкающий файл....

module.exports = function(grunt) {
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    browserify: {
        dist: {
            files: {
                './Scripts/build/App.js': ['./Scripts/src/**/*.js', '!./Scripts/src/**/*-test.js']
            },
            options: {
                browserifyOptions: {
                    debug: true
                },
                transform: [ require('grunt-react').browserify ]
            }
        }
    },
    uglify: {
        my_target: {
            files: {
                './Scripts/build/App-min.js': ['./Scripts/build/App.js']
            }
        }
    },
    jest: {
        options: {
            coverage: true,
            testPathPattern: /.*-test.js/
        }
    },
    watch: {
        scripts: {
            files: ['./Scripts/src/**/*.js'],
            tasks: ['browserify', 'uglify'],
            options: {
                spawn: false
            },
        },
    },

})

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-jest');
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-watch');
}
Другие вопросы по тегам