Skip to content

Commit 0537887

Browse files
authored
Add preversion/postversion script for propagating versions in npm workspaces (#5303)
* Add postversion script * Rename postversion to propagate-version * Remove cldr-data * Add preversion/postversion * Fix postversion * Typo * Move to localDependencies * Fix postversion * Fix postversion should write * Fix postversion again
1 parent 9ba786e commit 0537887

File tree

19 files changed

+138
-87
lines changed

19 files changed

+138
-87
lines changed

.github/workflows/daily-release.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- run: npm clean-install --no-production
3737

3838
- name: Propagate versions
39-
run: npm version --no-git-tag-version --workspaces `cat package.json | jq -r .version`
39+
run: npm version --no-git-tag-version --no-workspaces-update --workspaces `cat package.json | jq -r .version`
4040

4141
- env:
4242
NODE_ENV: production

package-lock.json

+15-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/api/package.json

+8-7
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,23 @@
6262
"build:tsup": "tsup --config ./tsup.config.ts",
6363
"build:typescript": "tsc --project src/tsconfig.json",
6464
"bump": "npm run bump:prod && npm run bump:dev && (npm audit fix || exit 0)",
65-
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
66-
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
65+
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
66+
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
6767
"eslint": "npm run precommit",
68+
"postversion": "cat package.json | jq '.version as $V | (.localDependencies // {} | with_entries(select(.value == \"production\") | { key: .key, value: $V })) as $L1 | (.localDependencies // {} | with_entries(select(.value == \"development\") | { key: .key, value: $V })) as $L2 | ((.dependencies // {}) + $L1 | to_entries | sort_by(.key) | from_entries) as $D1 | ((.devDependencies // {}) + $L2 | to_entries | sort_by(.key) | from_entries) as $D2 | . + { dependencies: $D1, devDependencies: $D2 }' > package-temp.json && mv package-temp.json package.json",
6869
"precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
6970
"precommit:eslint": "../../node_modules/.bin/eslint --report-unused-disable-directives --max-warnings 0",
7071
"precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
72+
"preversion": "cat package.json | jq '(.localDependencies // {} | to_entries | map([if .value == \"production\" then \"dependencies\" else \"devDependencies\" end, .key])) as $P | delpaths($P)' > package-temp.json && mv package-temp.json package.json",
7173
"start": "concurrently --kill-others --prefix-colors \"auto\" \"npm:start:*\"",
7274
"start:babel": "npm run build:babel -- --skip-initial-build --watch",
7375
"start:tsup": "npm run build:tsup -- --watch",
7476
"start:typescript": "npm run build:typescript -- --watch"
7577
},
76-
"localPeerDependencies": [
77-
"botframework-webchat-cldr-data",
78-
"botframework-webchat-core"
79-
],
78+
"localDependencies": {
79+
"botframework-webchat-cldr-data": "development",
80+
"botframework-webchat-core": "production"
81+
},
8082
"pinDependencies": {
8183
"@babel/cli": [
8284
"7.18.10",
@@ -118,7 +120,6 @@
118120
"babel-plugin-istanbul": "^6.1.1",
119121
"babel-plugin-transform-inline-environment-variables": "^0.4.4",
120122
"botframework-webchat-cldr-data": "36.0.0-0",
121-
"cldr-data": "^36.0.2",
122123
"concurrently": "^8.2.2",
123124
"core-js": "^3.37.0",
124125
"cross-env": "^7.0.3",

packages/bundle/package.json

+12-10
Original file line numberDiff line numberDiff line change
@@ -52,26 +52,28 @@
5252
"build:typescript": "tsc --project src/tsconfig.json",
5353
"build:webpack": "webpack-cli",
5454
"bump": "npm run bump:prod && npm run bump:dev && (npm audit fix || exit 0)",
55-
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
56-
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
55+
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
56+
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
5757
"eslint": "npm run precommit",
58+
"postversion": "cat package.json | jq '.version as $V | (.localDependencies // {} | with_entries(select(.value == \"production\") | { key: .key, value: $V })) as $L1 | (.localDependencies // {} | with_entries(select(.value == \"development\") | { key: .key, value: $V })) as $L2 | ((.dependencies // {}) + $L1 | to_entries | sort_by(.key) | from_entries) as $D1 | ((.devDependencies // {}) + $L2 | to_entries | sort_by(.key) | from_entries) as $D2 | . + { dependencies: $D1, devDependencies: $D2 }' > package-temp.json && mv package-temp.json package.json",
5859
"precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
5960
"precommit:eslint": "../../node_modules/.bin/eslint --report-unused-disable-directives --max-warnings 0",
6061
"precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
62+
"preversion": "cat package.json | jq '(.localDependencies // {} | to_entries | map([if .value == \"production\" then \"dependencies\" else \"devDependencies\" end, .key])) as $P | delpaths($P)' > package-temp.json && mv package-temp.json package.json",
6163
"start": "concurrently --kill-others --prefix-colors \"auto\" \"npm:start:*\"",
6264
"start:babel": "npm run build:babel -- --skip-initial-build --watch",
6365
"start:devserver": "node ./scripts/devServer.mjs",
6466
"start:tsup": "npm run build:tsup -- --watch",
6567
"start:typescript": "npm run build:typescript -- --watch"
6668
},
67-
"localPeerDependencies": [
68-
"botframework-directlinespeech-sdk",
69-
"botframework-webchat-api",
70-
"botframework-webchat-component",
71-
"botframework-webchat-core",
72-
"isomorphic-react",
73-
"isomorphic-react-dom"
74-
],
69+
"localDependencies": {
70+
"botframework-directlinespeech-sdk": "production",
71+
"botframework-webchat-api": "production",
72+
"botframework-webchat-component": "production",
73+
"botframework-webchat-core": "production",
74+
"isomorphic-react": "development",
75+
"isomorphic-react-dom": "development"
76+
},
7577
"pinDependencies": {
7678
"@babel/cli": [
7779
"7.18.10",

packages/component/package.json

+8-6
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,23 @@
5151
"build:tsup": "tsup --config ./tsup.config.ts",
5252
"build:typescript": "tsc --project src/tsconfig.json",
5353
"bump": "npm run bump:prod && npm run bump:dev && (npm audit fix || exit 0)",
54-
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
55-
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
54+
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
55+
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
5656
"eslint": "npm run precommit",
57+
"postversion": "cat package.json | jq '.version as $V | (.localDependencies // {} | with_entries(select(.value == \"production\") | { key: .key, value: $V })) as $L1 | (.localDependencies // {} | with_entries(select(.value == \"development\") | { key: .key, value: $V })) as $L2 | ((.dependencies // {}) + $L1 | to_entries | sort_by(.key) | from_entries) as $D1 | ((.devDependencies // {}) + $L2 | to_entries | sort_by(.key) | from_entries) as $D2 | . + { dependencies: $D1, devDependencies: $D2 }' > package-temp.json && mv package-temp.json package.json",
5758
"precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
5859
"precommit:eslint": "../../node_modules/.bin/eslint --report-unused-disable-directives --max-warnings 0",
5960
"precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
61+
"preversion": "cat package.json | jq '(.localDependencies // {} | to_entries | map([if .value == \"production\" then \"dependencies\" else \"devDependencies\" end, .key])) as $P | delpaths($P)' > package-temp.json && mv package-temp.json package.json",
6062
"start": "concurrently --kill-others --prefix-colors \"auto\" \"npm:start:*\"",
6163
"start:babel": "npm run build:babel -- --skip-initial-build --watch",
6264
"start:tsup": "npm run build:tsup -- --watch",
6365
"start:typescript": "npm run build:typescript -- --watch"
6466
},
65-
"localPeerDependencies": [
66-
"botframework-webchat-api",
67-
"botframework-webchat-core"
68-
],
67+
"localDependencies": {
68+
"botframework-webchat-api": "production",
69+
"botframework-webchat-core": "production"
70+
},
6971
"pinDependencies": {
7072
"@babel/cli": [
7173
"7.18.10",

packages/core/package.json

+5-3
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@
5151
"build:tsup": "tsup --config ./tsup.config.ts",
5252
"build:typescript": "tsc --project src/tsconfig.json",
5353
"bump": "npm run bump:prod && npm run bump:dev && (npm audit fix || exit 0)",
54-
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
55-
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // []) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
54+
"bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true",
55+
"bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localDependencies // {} | keys) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | contains([$K]) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install --save-exact $PACKAGES_TO_BUMP || true",
5656
"eslint": "npm run precommit",
57+
"postversion": "cat package.json | jq '.version as $V | (.localDependencies // {} | with_entries(select(.value == \"production\") | { key: .key, value: $V })) as $L1 | (.localDependencies // {} | with_entries(select(.value == \"development\") | { key: .key, value: $V })) as $L2 | ((.dependencies // {}) + $L1 | to_entries | sort_by(.key) | from_entries) as $D1 | ((.devDependencies // {}) + $L2 | to_entries | sort_by(.key) | from_entries) as $D2 | . + { dependencies: $D1, devDependencies: $D2 }' > package-temp.json && mv package-temp.json package.json",
5758
"precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
5859
"precommit:eslint": "../../node_modules/.bin/eslint --report-unused-disable-directives --max-warnings 0",
5960
"precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
61+
"preversion": "cat package.json | jq '(.localDependencies // {} | to_entries | map([if .value == \"production\" then \"dependencies\" else \"devDependencies\" end, .key])) as $P | delpaths($P)' > package-temp.json && mv package-temp.json package.json",
6062
"start": "concurrently --kill-others --prefix-colors \"auto\" \"npm:start:*\"",
6163
"start:babel": "npm run build:babel -- --skip-initial-build --watch",
6264
"start:tsup": "npm run build:tsup -- --watch",
@@ -65,7 +67,7 @@
6567
"engines": {
6668
"node": ">=12.0.0"
6769
},
68-
"localPeerDependences": [],
70+
"localDependences": {},
6971
"pinDependencies": {
7072
"@babel/cli": [
7173
"7.18.10",

0 commit comments

Comments
 (0)