Skip to content

Commit 5c04e00

Browse files
Generating main field in package.json
1 parent a37decb commit 5c04e00

File tree

5 files changed

+36
-2
lines changed

5 files changed

+36
-2
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/TypeScriptGenerator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cz.habarta.typescript.generator.compiler.*;
55
import cz.habarta.typescript.generator.emitter.*;
66
import cz.habarta.typescript.generator.parser.*;
7+
import cz.habarta.typescript.generator.util.Utils;
78
import java.io.*;
89
import java.util.*;
910

@@ -58,11 +59,15 @@ private void generateNpmPackageJson(Output output) {
5859
if (output.getName() == null) {
5960
throw new RuntimeException("Generating NPM package.json can only be used when output is specified using file name");
6061
}
61-
final Output npmOutput = Output.to(new File(new File(output.getName()).getParent(), "package.json"));
62+
final File outputFile = new File(output.getName());
63+
final Output npmOutput = Output.to(new File(outputFile.getParent(), "package.json"));
6264
final NpmPackageJson npmPackageJson = new NpmPackageJson();
6365
npmPackageJson.name = settings.npmName;
6466
npmPackageJson.version = settings.npmVersion;
65-
npmPackageJson.types = new File(output.getName()).getName();
67+
npmPackageJson.types = outputFile.getName();
68+
npmPackageJson.main = settings.outputFileType == TypeScriptFileType.implementationFile
69+
? Utils.replaceExtension(outputFile, ".js").getName()
70+
: null;
6671
getNpmPackageJsonEmitter().emit(npmPackageJson, npmOutput.getWriter(), npmOutput.getName(), npmOutput.shouldCloseWriter());
6772
}
6873
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/NpmPackageJson.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ public class NpmPackageJson {
77
public String name;
88
public String version;
99
public String types;
10+
public String main;
1011

1112
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/NpmPackageJsonEmitter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
package cz.habarta.typescript.generator.emitter;
33

4+
import com.fasterxml.jackson.annotation.JsonInclude;
45
import com.fasterxml.jackson.databind.ObjectMapper;
56
import com.fasterxml.jackson.databind.SerializationFeature;
67
import cz.habarta.typescript.generator.util.StandardJsonPrettyPrinter;
@@ -26,6 +27,7 @@ private void emitPackageJson(NpmPackageJson npmPackageJson) {
2627
try {
2728
final ObjectMapper objectMapper = new ObjectMapper();
2829
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
30+
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
2931
objectMapper.setDefaultPrettyPrinter(new StandardJsonPrettyPrinter(" ", "\n"));
3032
objectMapper.writeValue(writer, npmPackageJson);
3133
} catch (IOException e) {

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/util/Utils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
package cz.habarta.typescript.generator.util;
33

4+
import java.io.File;
45
import java.io.InputStream;
56
import java.lang.reflect.ParameterizedType;
67
import java.lang.reflect.Type;
@@ -88,4 +89,11 @@ private static String normalizeLineEndings(String text, String lineEndings) {
8889
return text.replaceAll("\\r\\n|\\n|\\r", lineEndings);
8990
}
9091

92+
public static File replaceExtension(File file, String newExtension) {
93+
final String name = file.getName();
94+
final int dotIndex = name.lastIndexOf(".");
95+
final int index = dotIndex != -1 ? dotIndex : name.length();
96+
return new File(file.getParent(), name.substring(0, index) + newExtension);
97+
}
98+
9199
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
package cz.habarta.typescript.generator;
3+
4+
import cz.habarta.typescript.generator.util.Utils;
5+
import java.io.File;
6+
import org.junit.Assert;
7+
import org.junit.Test;
8+
9+
10+
public class UtilsTest {
11+
12+
@Test
13+
public void testReplaceExtension() {
14+
Assert.assertEquals(new File("test.dir/test.js"), Utils.replaceExtension(new File("test.dir/test"), ".js"));
15+
Assert.assertEquals(new File("test.dir/test.1.js"), Utils.replaceExtension(new File("test.dir/test.1.ts"), ".js"));
16+
}
17+
18+
}

0 commit comments

Comments
 (0)