|
16 | 16 | package com.diffplug.webtools.node;
|
17 | 17 |
|
18 | 18 | import com.github.eirslett.maven.plugins.frontend.lib.ProxyConfig;
|
| 19 | +import java.io.File; |
| 20 | +import java.io.IOException; |
| 21 | +import java.nio.charset.StandardCharsets; |
| 22 | +import java.nio.file.Files; |
19 | 23 | import java.util.Collections;
|
20 | 24 | import java.util.Objects;
|
21 | 25 | import org.gradle.api.Action;
|
@@ -46,12 +50,18 @@ public static class Extension {
|
46 | 50 |
|
47 | 51 | public Extension(Project project) {
|
48 | 52 | this.project = Objects.requireNonNull(project);
|
49 |
| - |
50 | 53 | }
|
51 | 54 |
|
52 | 55 | public TaskProvider<?> npm_run(String name, Action<Task> taskConfig) {
|
53 | 56 | return project.getTasks().register("npm_run_" + name, NpmRunTask.class, task -> {
|
54 | 57 | task.taskName = name;
|
| 58 | + try { |
| 59 | + setup.nodeVersion = nvmRc(findNvmRc(project.getProjectDir())); |
| 60 | + setup.npmVersion = "provided"; |
| 61 | + } catch (IOException e) { |
| 62 | + throw new RuntimeException(e); |
| 63 | + } |
| 64 | + |
55 | 65 | task.getSetup().set(setup);
|
56 | 66 | task.getProjectDir().set(project.getProjectDir());
|
57 | 67 | task.getInputs().file("package-lock.json").withPathSensitivity(PathSensitivity.RELATIVE);
|
@@ -91,8 +101,23 @@ public void npmCiRunTask() throws Exception {
|
91 | 101 |
|
92 | 102 | @Override
|
93 | 103 | public void apply(Project project) {
|
94 |
| - extension = project.getExtensions().create(EXTENSION_NAME, Extension.class, project); |
| 104 | + project.getExtensions().create(EXTENSION_NAME, Extension.class, project); |
| 105 | + } |
| 106 | + |
| 107 | + private static String nvmRc(File file) throws IOException { |
| 108 | + String str = new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8).trim(); |
| 109 | + return "v" + str; |
95 | 110 | }
|
96 | 111 |
|
97 |
| - private Extension extension; |
| 112 | + private static File findNvmRc(File projectDir) { |
| 113 | + File nvmRc = new File(projectDir, ".nvmrc"); |
| 114 | + if (nvmRc.exists()) { |
| 115 | + return nvmRc; |
| 116 | + } |
| 117 | + nvmRc = new File(projectDir.getParentFile(), ".nvmrc"); |
| 118 | + if (nvmRc.exists()) { |
| 119 | + return nvmRc; |
| 120 | + } |
| 121 | + throw new IllegalArgumentException("Could not find .nvmrc in " + projectDir + " or its parent."); |
| 122 | + } |
98 | 123 | }
|
0 commit comments