首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何告诉gradle在构建项目中安装npm?

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

Stack Overflow用户
提问于 2017-12-06 13:06:29
回答 2查看 19.7K关注 0票数 2

java应用程序的角4 UI只依赖于下面的几个包。我从webapps运行了以下命令。应用程序很好。我想知道最好的做法,因为我是新手。

代码语言:javascript
复制
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的已安装的包,如下所示:

代码语言:javascript
复制
paths: {
       'npm:' : 'node_modules/'
},
map: {
       '@angular/core' : 'npm:@angular/core/bundles/core.umd.js'
       .
       .
}

查询:

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-06 13:22:32

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

示例:

代码语言:javascript
复制
task npmInstall(type: Exec) {
    workingDir 'src/main/webapp'
    commandLine 'npm', 'install'
}

将生成依赖项添加到war生成步骤中

代码语言:javascript
复制
war {
    dependsOn npmBuild
}
票数 3
EN

Stack Overflow用户

发布于 2019-01-03 12:00:56

正如所说:你可以创建自己的任务。

如果不希望它一直执行,可以添加OnlyIf子句。

(来自正式文档:https://docs.gradle.org/current/dsl/org.gradle.api.Task.html#org.gradle.api.Task:onlyIf(groovy.lang.Closure) )

代码语言:javascript
复制
myTask.onlyIf(new Spec<Task>() {
    boolean isSatisfiedBy(Task task) {
        return isProductionEnvironment();
    }
});

您可以使用标准Groovy更智能地编写任务。例如:

代码语言:javascript
复制
task doSomething {
    doLast {
        def file = new File("dummy.txt")

        if (file.exists()) {
            project.exec {
                commandLine 'someCommand', 'parameter'
            }
        }
    }
}

例如,在您的build.gradle中

代码语言:javascript
复制
task doSomething {
   doLast {
        ...
   }
}

doSomething.enabled = (some condition goes here)    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47675044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档