Skip to content

Commit 4199727

Browse files
authored
Add usePeerDeps option to module dependency. (#829)
Normal dependencies can cause type mismatches if the dependency versions are different. This means that our dependency and every other library or application depending on the same dependency need to use compatible versions. This is where `peerDependencies` is better. The dependency is only managed once at the top-level.
1 parent f6aef5a commit 4199727

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@ public class ModuleDependency {
1515
public File infoJson;
1616
public String npmPackageName;
1717
public String npmVersionRange;
18+
public boolean usePeerDeps;
1819

1920
public ModuleDependency() {
2021
}
2122

22-
private ModuleDependency(boolean global, String importFrom, String importAs, File infoJson, String npmPackageName, String npmVersionRange) {
23+
private ModuleDependency(boolean global, String importFrom, String importAs, File infoJson, String npmPackageName, String npmVersionRange, boolean usePeerDeps) {
2324
this.global = global;
2425
this.importFrom = importFrom;
2526
this.importAs = importAs;
2627
this.infoJson = infoJson;
2728
this.npmPackageName = npmPackageName;
2829
this.npmVersionRange = npmVersionRange;
30+
this.usePeerDeps = usePeerDeps;
2931
}
3032

3133
public static ModuleDependency module(String importFrom, String importAs, File infoJson, String npmPackageName, String npmVersionRange) {
32-
return new ModuleDependency(false, importFrom, importAs, infoJson, npmPackageName, npmVersionRange);
34+
return new ModuleDependency(false, importFrom, importAs, infoJson, npmPackageName, npmVersionRange, false);
3335
}
3436

3537
public static ModuleDependency global(File infoJson) {
36-
return new ModuleDependency(true, null, null, infoJson, null, null);
38+
return new ModuleDependency(true, null, null, infoJson, null, null, false);
3739
}
3840

3941
@Override

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ private void generateNpmPackageJson(Output output) {
108108
npmPackageJson.peerDependencies = new LinkedHashMap<>();
109109
if (settings.moduleDependencies != null) {
110110
for (ModuleDependency dependency : settings.moduleDependencies) {
111-
npmPackageJson.dependencies.put(dependency.npmPackageName, dependency.npmVersionRange);
111+
if (dependency.usePeerDeps) {
112+
npmPackageJson.peerDependencies.put(dependency.npmPackageName, dependency.npmVersionRange);
113+
} else {
114+
npmPackageJson.dependencies.put(dependency.npmPackageName, dependency.npmVersionRange);
115+
}
112116
}
113117
}
114118
if (settings.outputFileType == TypeScriptFileType.implementationFile) {

0 commit comments

Comments
 (0)