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

标签 java angular gradle npm-install

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

npm install rxjs
npm install @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5a3935283f1a6e746e746c" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="05666a68686a6b45312b312b33" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="55363a38253c39302715617b617b63" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07776b66736168756a2a65756870746275473329332931" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="80f0ece1f4e6eff2edade2f2eff7f3e5f2ade4f9eee1ede9e3c0b4aeb4aeb6" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="61130e1415041321554f554f57" rel="noreferrer noopener nofollow">[email protected]</a> @angular/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7a1a8b5aab487f3e9f3e9f1" rel="noreferrer noopener nofollow">[email protected]</a> --save
npm install <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c2b6bbb2a7b1a1b0abb2b682f0ecf6ecf0" rel="noreferrer noopener nofollow">[email protected]</a> --save
npm install <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="05756970626c6b28717c75607666776c757145302b372b32" rel="noreferrer noopener nofollow">[email protected]</a> --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 保留在项目根目录而不是 webapps 中,我如何从 systemjs.config.js 引用它
  3. 我只想要这些 bundle ,而不是运行时下载的巨大文件堆栈 npm install @angular/cli
  4. 如果我们可以使用全局node_modules,如何从systemjs.config.js引用它(我更喜欢将其保留在项目中,以免干扰服务器中的其他应用程序)使用不同的版本)
  5. 最后,我应该在 build.gradle 中包含哪些内容,以便在 gradle 构建时下载所需的包

最佳答案

正如 @Oliver Charlesworth 所说,Gradle 有其局限性,但您可以创建自定义 gradle 任务。

示例:

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

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

war {
    dependsOn npmBuild
}

关于java - 如何告诉 gradle 在构建时在项目中安装 npm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47675044/

相关文章:

java - 没有任何构造函数的 JVM 字节码类是否有效?

java - 在我制作的 Java 程序中创建文件之前如何创建/修改文件的内容?

javascript - 无法将 razorpay 集成到 angular 4 中

Gradle - 从命令行运行时,Corda 流测试失败

java - 将纯 java 项目作为依赖项包含在 gradle 项目中

gradle - 如何编写gradle脚本,其中两个任务具有相同的依赖关系但配置不同

java - ActionListener - 单选按钮

Angular 2 首选语言?

angular - Microsoft 使用 Angular 登录

java - Dagger-2:如何根据其范围为同一对象类型创建不同的实例化?