从战争中排除不必要的节点模块

时间:2017-06-08 11:09:03

标签: angular npm maven-3 package.json

我正在创建一个Web应用程序,我在其中使用Maven,Spring,Hibernate,Angular。 war文件的大小如果非常大(151 MB),其中107 MB用于节点模块,请告诉我如何从war文件中删除不必要的节点模块以保持其大小合理。 这是我的npm依赖项:

"dependencies": {
    "@angular/common": "~2.4.0",
    "@angular/compiler": "~2.4.0",
    "@angular/core": "~2.4.0",
    "@angular/forms": "~2.4.0",
    "@angular/http": "~2.4.0",
    "@angular/platform-browser": "~2.4.0",
    "@angular/platform-browser-dynamic": "~2.4.0",
    "@angular/router": "~3.4.0",
    "angular-in-memory-web-api": "~0.2.4",
    "angular2-datatable": "^0.6.0",
    "core-js": "^2.4.1",
    "lodash": "^4.17.4",
    "mydatepicker": "^1.6.1",
    "ng2-pdf-viewer": "^1.1.0",
    "rxjs": "5.0.1",
    "systemjs": "0.19.40",
    "zone.js": "^0.7.4",
    "ng2-auto-complete": "^0.10.9"


  }

1 个答案:

答案 0 :(得分:0)

我不知道你的目录结构是怎样的,但一般来说它应该可以通过添加这样的东西来实现你的.pom:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <packagingExcludes>node_modules/**</packagingExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

(见WAR Plugin Docs

除了node_modules / **,您还可以排除src / **。我检查.war文件,看看是否还有其他目录/文件也可以排除。

如果您的Angular应用程序打包在.war中包含的单独的.jar中,这看起来略有不同,例如:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src/main/webapp</directory>
            <targetPath>META-INF/resources</targetPath>
            <excludes>
                <exclude>node_modules/**</exclude>
                <exclude>src/**</exclude>
            </excludes>
        </resource>
    </resources>
</build>