Sapui5应用程序没有使用grunt进行uglified

时间:2018-02-15 16:30:49

标签: gruntjs sapui5

我正在尝试使用grunt和grunt-sapui5-bestpractice-build插件来uglify(mangle +删除评论)一个SapUI5应用程序。

根据这个link,使用此插件不应该有uglify任务,所以我将它与grunt-contrib-uglify插件结合在一起。

我遇到的问题是;在执行应用程序构建时,似乎忽略了我的uglify任务,因为grunt-sapui5-bestpractice-build有一个隐式uglify任务覆盖了我正在定义的任务。

为了更好地理解,这是代码:

的package.json

{
  "name": "grunt-build",
  "version": "0.0.1",
  "description": "Grunt build",
  "private": true,
  "devDependencies": {
      "@sap/grunt-sapui5-bestpractice-build": "1.3.33",
      "grunt-contrib-uglify": "3.3.0"
   }
}

Gruntfile.js

module.exports = function(grunt) {
  'use strict';
    // Project configuration.
    grunt.initConfig({
        uglify: {
            options: {
                mangle: true,
                compress: {
                    drop_console: true,
                    dead_code: false,
                    unused: false
                }
            },
            files: {
                expand: true,
                cwd: "<%= ref.staging%>",
                src: ["**/*.js", '!test/**', '!test_local.html'],
                dest: "<%= ref.process%>"
            }
        }
    }); 

    grunt.loadNpmTasks('@sap/grunt-sapui5-bestpractice-build');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.registerTask('default', [
        'lint',
        'clean',
        'build',
        'uglify'
    ]);
};

结果是应用程序正确构建&amp; minified,Component-preload.js是用来加载应用程序的广告,但是没有完成并且评论仍在那里。

你能在这里提出任何建议吗?你有没有办法用mangle选项输入grunt-sapui5-bestpractice-build,以便只使用一个插件来做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这更像是一个扩展的评论,而不是一个功能齐全的答案。我刚跑出太空。

Component-preload.js 错误的优点是你可以正常调试它,因为它包含空格,注释等。调试受损的代码更加困难。

您必须查看完成此修改所需的操作。完成'@sap/grunt-sapui5-bestpractice-build'后,您已缩小但未损坏Component.js,缩小但未损坏Comonponent-preload.js以及Component-dbg.js中的正常开发版本,是否正确?

您可能希望放弃最佳练习套餐并完全按照以下方式执行其他操作:https://www.npmjs.com/package/grunt-openui5。我无法看到'@sap/grunt-sapui5-bestpractice-build'中的步骤会发生什么,我甚至无法在任何地方找到该包。

Grunt只是连续执行一系列任务。我还没有尝试过这个版本的webIDE版本,但这是我作为离线openui5应用程序的一部分执行的任务列表:

'clean:build', // remove `build` folder
'clean:dist',  // remove `dist` folder
'copy:build',  // copy all my code to the `build` folder
'preload',     // mangle all my code in the `build` folder and create a preload
'copy:dist:minified', // copy the mangled code to `dist`
'copy:dist:dbg',      // copy and rename my original code as `-dbg.js` versions to `dist`
'clean:build' // remove the `build` folder

这是通过gulp完成的,使用gulp-openui5-preload和gulp-uglify等软件包。不确定gulp是否适用于web ide,但我认为你可以在Grunt中重新创建它。

你可以使用这样的东西来破坏默认过程的结果并创建一个新的预加载文件,或者你可以废弃默认值并尝试完全自己滚动。