Skip to content

Commit 205cefb

Browse files
authored
feat: recursively merge package.json scripts field from build configuration (#1372)
1 parent 84bec05 commit 205cefb

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

private/smithy-rpcv2-cbor/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"build:types": "tsc -p tsconfig.types.json",
1010
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1111
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0",
12-
"prepack": "yarn run clean && yarn run build"
12+
"prepack": "yarn run clean && yarn run build",
13+
"merged": "echo \"this is merged from user configuration.\""
1314
},
1415
"main": "./dist-cjs/index.js",
1516
"types": "./dist-types/index.d.ts",

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PackageJsonGenerator.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,19 @@ static void writePackageJson(
4343
) {
4444
// Write the package.json file.
4545
InputStream resource = PackageJsonGenerator.class.getResourceAsStream("base-package.json");
46-
ObjectNode node = Node.parse(IoUtils.toUtf8String(resource))
47-
.expectObjectNode()
48-
.merge(settings.getPackageJson());
46+
47+
ObjectNode userSuppliedPackageJson = settings.getPackageJson();
48+
ObjectNode defaultPackageJson = Node.parse(IoUtils.toUtf8String(resource))
49+
.expectObjectNode();
50+
51+
ObjectNode mergedScripts = defaultPackageJson.expectObjectMember("scripts")
52+
.merge(
53+
userSuppliedPackageJson.getObjectMember("scripts")
54+
.orElse(ObjectNode.builder().build())
55+
);
56+
57+
ObjectNode node = defaultPackageJson.merge(userSuppliedPackageJson)
58+
.withMember("scripts", mergedScripts);
4959

5060
// Merge TypeScript dependencies into the package.json file.
5161
for (Map.Entry<String, Map<String, SymbolDependency>> depEntry : dependencies.entrySet()) {

smithy-typescript-protocol-test-codegen/smithy-build.json

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
"name": "Smithy team",
2020
"url": "https://smithy.io/"
2121
},
22+
"scripts": {
23+
"merged": "echo \"this is merged from user configuration.\""
24+
},
2225
"license": "Apache-2.0"
2326
},
2427
"private": true,

0 commit comments

Comments
 (0)