有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何告诉gradle在构建的项目中安装npm?

我的java web应用程序的angular 4 UI仅依赖于以下几个捆绑包。我从webapps root运行了以下命令。应用程序运行良好。我想知道最佳实践,因为我是新手

npm install rxjs
npm install @angular/core@4.4.6 @angular/common@4.4.6 @angular/compiler@4.4.6 @angular/platform-browser@4.4.6 @angular/platform-browser-dynamic@4.4.6 @angular/router@4.4.6 @angular/forms@4.4.6 --save
npm install typescript@2.4.2 --save
npm install plugin-typescript@5.2.7 --save

我指的是systemjs.config.js中安装的捆绑包,如下所示:

paths: {
       'npm:' : 'node_modules/'
},
map: {
       '@angular/core' : 'npm:@angular/core/bundles/core.umd.js'
       .
       .
}

查询:

  1. 应用程序不应该太重,不能在war中包含整个node_modules
  2. 如果我将node_modules保存在project root而不是webapps中,我如何从systemjs.config.js引用它
  3. 我只想要那些包,而不是运行npm install @angular/cli时下载的巨大文件堆栈
  4. 如果我们可以使用全局node_modules,那么如何从systemjs.config.js引用它(我更喜欢将其保存在project中,以免干扰服务器中使用不同版本的其他应用程序)
  5. 最后,在gradle构建时,我应该在build.gradle中包含什么来下载所需的捆绑包

共 (1) 个答案

  1. # 1 楼答案

    正如@Oliver Charlesworth所说,Gradle有他的局限性,但是你可以创建一个定制的Gradle任务

    例如:

    task npmInstall(type: Exec) {
        workingDir 'src/main/webapp'
        commandLine 'npm', 'install'
    }
    

    将构建依赖项添加到war构建步骤中

    war {
        dependsOn npmBuild
    }