Настройка Babel + Uglify + Karma с помощью Grunt

Im пытается настроить рабочий процесс сборки с использованием вышеупомянутых технологий, но Im получает следующую ошибку, которая кажется очень общей при выполнении тестов на karma:

TypeError: 'undefined' is not an object (evaluating 'a.Sifter=b()')

Это происходит даже без добавления какой-либо специфической функции ECMSA6. Один и тот же рабочий процесс прекрасно работает без фазы транспонирования в рабочем процессе.

Я попытался установить babeljs после фазы конкатенации и перед выполнением uglifying на нем, как следующий фрагмент:

  var defaultTasks = [
        "sass:prod", // compile scss sources
        "cleanAll", // clean folders: preparing for copy
        "copyAll", // copying bower files
        "cssmin:customVendor", // minify and concat 'customized from vendor' css
        "concat:vendorStyles", // concat vendors's css + minified 'customized from vendor' and distribute as 'css/vendor.css'
        "uglify:rawVendors", // minifies unminified vendors
        "concat:vendorScripts", // concat vendors's scripts and distribute as 'scripts/vendor.js'
        "ngAnnotate:app", // ng-annotates app's scripts
        "concat:appScripts", // concat app's (customized from vendor's + ng-annotated + customer's)
        "babel",// uses babeljs to convert brandnew ES6 javascript into ES5 allowing for old browsers
        "uglify:app" // minify app script and distribute as 'scripts/app.js'
    ];
    if (!skipTest) {
        defaultTasks.push("karma:target");  // run tests on minified scripts
    }

Показаны определения imporant:

   babel: {
            options: {
                "presets": ['es2015']
            },
            dist: {
                files: {
                    "<%= concat.appScripts.dest %>": "<%= concat.appScripts.dest %>"
                }
            }
        },

        uglify: {
            options: {
                mangle: {
                    except: [
                        "jQuery", "angular", "tableau", "LZString", "moment", "Moment", "Modernizr",
                        "app", "modules"
                    ]
                }
            },
            app: {
                files: [{
                    src: ["<%= concat.appScripts.dest %>"],
                    dest: "<%= app.dist %>/scripts/app.js"
                }]
            }
        },

Ive протестировал транспайл немного, запустив логику по умолчанию из babel url, и он хорошо работает, Преобразуя основные вещи.

Есть ли какой-то лучший рабочий процесс, который я мог бы использовать для выполнения тестов с тем же кодом, который был бы выполнен на самом деле?

Спасибо

1 ответ

  1. В конце концов, рабочий процесс был правильным.

    Мне просто нужно немного изменить наборы файлов, чтобы избежать транспонирования selectize.файл js (который не был действительно нужен).

    Однако, не уверен, почему он ломался

    Это решило для меня, поэтому я закрываю вопрос, но, возможно, может быть полезно для кого-то еще.