【问题标题】:Setup Babel + Uglify + Karma using Grunt使用 Grunt 设置 Babel + Uglify + Karma
【发布时间】:2016-05-02 08:50:29
【问题描述】:

我正在尝试使用上述技术设置构建工作流程,但我收到以下错误,这在 karma 上运行测试时似乎非常普遍:

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

即使没有添加任何 ECMSA6 特定功能也会发生这种情况。相同的工作流程在工作流程中没有转译阶段也能正常工作。

我尝试的是在连接阶段之后和对其执行丑化之前设置 babeljs,如下面的 sn-p:

  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
    }

重要的定义如下:

   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"
                }]
            }
        },

我已经对 transpile 进行了一些测试,从 babel url 运行默认逻辑,它运行良好,可以转换基本的东西。

有没有更好的工作流程,我可以使用它来针对实际执行的相同代码运行测试?

谢谢

【问题讨论】:

  • 发现提到的错误是指Selectize.js,但我仍然不知道它与构建有什么关系。但是,选择包含在连接文件中。会继续挖掘

标签: karma-jasmine babeljs grunt-contrib-uglify


【解决方案1】:

最后,工作流程是正确的。

我只需要稍微修改文件集以避免转换 selectize.js 文件(这并不是真正需要的)。

但不知道为什么会坏

这对我来说解决了,所以我要结束这个问题,但也许对其他人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多