【问题标题】:ES6 or uglify minify maven plugin without node js没有节点 js 的 ES6 或 uglify minify maven 插件
【发布时间】:2018-09-18 18:25:51
【问题描述】:

我尝试寻找 maven 插件来使用 ES6 代码缩小 Javascript 文件。我尝试了 minify-maven-plugin 1.7.6,但我认为它不支持 ES6(函数中默认参数的错误语法)。我还尝试了一些将 ES6 丑化为 es5 的插件,但它也不起作用,所以也许 sb 有同样的问题。最后请一些关于fronted-maven-plugin的简短说明如何通过webpack或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) {

【问题讨论】:

  • 这与 Java 有什么关系?
  • 一些 maven 插件需要在 Java 8 中编译,整个项目都是在 Java 中。某事喜欢额外的信息
  • 如果您担心 Java 开发人员没有这些工具,frontend-maven-plugin 将自动下载并使用 node 和 npm 作为构建的一部分。 Google 搜索“uglify maven java”或类似内容,以查找使用 Java SE 8 附带的 Nashorn 脚本引擎的 Maven 插件(因此不需要 Node,但可能会更慢)

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


【解决方案1】:

这个 Maven 插件非常适合我:https://github.com/SpyrosPac/frontend-files-uglifier

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

性能相当不错,尤其是当您启用仅压缩已修改资源的选项时。

【讨论】:

    【解决方案2】:

    在您的插件配置下添加&lt;jsEngine&gt;CLOSURE&lt;/jsEngine&gt;。默认情况下,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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2018-06-20
      • 2013-11-10
      • 2017-02-25
      • 2014-02-09
      相关资源
      最近更新 更多