ES6或uglify缩小了Maven插件而没有节点js

时间:2018-09-18 18:25:52

标签: javascript java maven ecmascript-6 maven-plugin

我尝试找到Maven插件以使用ES6代码最小化Javascript文件。我尝试了minify-maven-plugin 1.7.6,但我认为它不支持ES6(函数中默认参数的错误语法)。我也尝试了一些插件来将ES6丑化为es5,但是它也不起作用,所以也许sb遇到了同样的问题。最终,请为fronted-maven-plugin提供一些简短说明,说明如何通过Web Pack或babel进行此操作,但是我不确定我可以使用node js。

配置minify-maven-plugin:

<executions>
                            <execution>
                                <id>default-minify</id>
                                <goals>
                                    <goal>minify</goal>
                                </goals>
                                <configuration>
                                    <cssSourceDir>static/css</cssSourceDir>
                                    <cssSourceIncludes>
                                        <cssSourceInclude>**/*.css</cssSourceInclude>
                                    </cssSourceIncludes>
                                    <jsSourceDir>static/js</jsSourceDir>
                                    <jsSourceIncludes>
                                        <jsSourceInclude>*.js</jsSourceInclude>
                                        <jsSourceInclude>legacy/**/*.js</jsSourceInclude>
                                    </jsSourceIncludes>
                                </configuration>
                            </execution>
                        </executions>

minfiy-maven-plugin错误:

[ERROR] missing ) after formal parameters at lazy-module-test.js line 1572:29
                function mojaFunkcja(x = 1, y, z) {
                                         ^

[ERROR] missing } after function body at lazy-module-test.js line 1572:29
                function mojaFunkcja(x = 1, y, z) {
                                     ^

配置frontend-maven-plugin

<executions>
                            <execution>
                                <id>install node and npm</id>
                                <goals>
                                    <goal>install-node-and-npm</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>npm install</id>
                                <goals>
                                    <goal>npm</goal>
                                </goals>
                                <configuration>
                                    <arguments>install grunt grunt-cli grunt-contrib-uglify</arguments>
                                </configuration>
                            </execution>
                            <execution>
                                <id>grunt build</id>
                                <goals>
                                    <goal>grunt</goal>
                                </goals>
                            </execution>
                        </executions>

                        <configuration>
                            <nodeVersion>v6.9.1</nodeVersion>
                        </configuration>

frontend-maven-plugin中的错误

[INFO]   message: 'Unexpected token operator «=», expected punc «,»',
[INFO]   filename: '../../../../../../../src/main/webapp/static/js/lazy/module-test/controllers/testCtrl.js',
[INFO]   line: 150,
[INFO]   col: 27,
[INFO]   pos: 4283 }

第150行:

function mojaFunkcja(x = 1, y, z) {

2 个答案:

答案 0 :(得分:0)

此Maven插件对我来说效果很好:https://github.com/SpyrosPac/frontend-files-uglifier

它可以分别使用Uglify.js和CSSO缩小JS和CSS文件。两者都是通过Rhino执行的,因此不需要Node。

性能很好,尤其是当您启用仅压缩修改后的资源的选项时。

答案 1 :(得分:0)

在您的插件配置下添加 <jsEngine>CLOSURE</jsEngine>。默认情况下,minify-maven-plugin 使用不符合 ES6 的 YUI compressor。但是,另一个受支持的 Javascript 引擎,即 Google Closure 符合 ES6。下面给出了来自 pom.xml 的工作示例条目:

<plugin>
    <groupId>com.samaxes.maven</groupId>
    <artifactId>minify-maven-plugin</artifactId>
    <version>1.7.6</version>
    <executions>
        <execution>
            <id>minify-resources-exec</id>
            <phase>generate-resources</phase>
            <configuration>
            <charset>UTF-8</charset>
            <jsSourceDir>app/${minifyJsSrcDir}</jsSourceDir>
            <jsSourceIncludes>**/*.js</jsSourceIncludes>
            <jsEngine>CLOSURE</jsEngine>
            <verbose>true</verbose>
            <jsTargetDir>${minifyJsSrcDir}</jsTargetDir>
            <jsFinalFile>${minifyJsFinalFile}</jsFinalFile>
            </configuration>
            <goals>
            <goal>minify</goal>
            </goals>
        </execution>              
    </executions>
</plugin>   

更多信息,请参考:https://samaxes.github.io/minify-maven-plugin/minify-mojo.html