36
36
- uses : actions/setup-node@v4
37
37
with :
38
38
node-version-file : ' .nvmrc'
39
- cache : ' pnpm'
40
- cache-dependency-path : |
41
- package.json
42
- src/**/package.json
43
- test_apps/encore-app/pnpm-lock.yaml
44
- test_apps/encore-app/package.json
45
39
46
40
- uses : shivammathur/setup-php@v2
47
41
@@ -60,35 +54,56 @@ jobs:
60
54
working-directory : test_apps/encore-app
61
55
dependency-versions : highest
62
56
57
+ - name : Manually replacing "workspace:*" references
58
+ run : |
59
+ # npm does not support "workspace:*" references, so we need to replace them with the actual package path
60
+ for PACKAGE_DATA in $(pnpm ls -r --json --depth -1 | jq 'map(select(.private != true))' | jq -c '.[]'); do
61
+ PACKAGE=$(echo $PACKAGE_DATA | jq -r '.name')
62
+ PACKAGE_PATH=$(echo $PACKAGE_DATA | jq -r '.path')
63
+
64
+ echo "🔍 Searching for \"workspace:*\" references in $PACKAGE_PATH/package.json"
65
+
66
+ # Manually replace "workspace:" constraints with the actual package version, it ensure packages can be installed with npm
67
+ jq -rc '[(.dependencies // {}) + (.devDependencies // {}) | to_entries[] | select(.value == "workspace:*") | .key][]' "$PACKAGE_PATH/package.json" | while read -r PACKAGE_FROM_WORKSPACE ; do
68
+ echo "ℹ️ Found \"$PACKAGE_FROM_WORKSPACE\" with \"workspace:*\""
69
+
70
+ PACKAGE_FROM_WORKSPACE_PATH=$(pnpm ls --filter $PACKAGE_FROM_WORKSPACE --json --depth -1 | jq -r '.[].path')
71
+ echo "ℹ️ The package \"$PACKAGE_FROM_WORKSPACE\" is located in \"$PACKAGE_FROM_WORKSPACE_PATH\" directory"
72
+
73
+ echo "⚒️ Replacing \"$PACKAGE_FROM_WORKSPACE\" with \"file:$PACKAGE_FROM_WORKSPACE_PATH\" in $PACKAGE_PATH/package.json"
74
+ sed -i "s|\"$PACKAGE_FROM_WORKSPACE\": \"workspace:\*\"|\"$PACKAGE_FROM_WORKSPACE\": \"file:$PACKAGE_FROM_WORKSPACE_PATH\"|g" "$PACKAGE_PATH/package.json"
75
+ done;
76
+ done
77
+
63
78
- working-directory : test_apps/encore-app
64
- run : pnpm install --ignore-workspace
79
+ run : npm install --install-links
65
80
66
81
- if : matrix.ux-packages-source == 'js-packages'
67
82
name : Install UX JS packages with a JS package manager
68
83
working-directory : test_apps/encore-app
69
84
run : |
70
85
PACKAGES_TO_INSTALL=''
71
- for PACKAGE in $(cd ../..; pnpm ls -r --json --depth -1 | jq 'map(select(.private != true))' | jq -c '.[]'); do
72
- PACKAGE_ABSOLUTE_PATH=$(echo $PACKAGE | jq -r '.path')
73
- PACKAGE_RELATIVE_PATH=$(realpath --relative-to=. "$PACKAGE_ABSOLUTE_PATH")
74
- PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL file:$PACKAGE_RELATIVE_PATH"
86
+ for PACKAGE_DATA in $(pnpm ls -r --json --depth -1 | jq 'map(select(.private != true))' | jq -c '.[]'); do
87
+ PACKAGE_PATH=$(echo $PACKAGE_DATA | jq -r '.path')
88
+ PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL file:$(realpath --relative-to=. "$PACKAGE_PATH")"
75
89
done
90
+
76
91
echo "Installing packages: $PACKAGES_TO_INSTALL"
77
- pnpm add --save-dev $PACKAGES_TO_INSTALL
92
+ npm add --save-dev --install-links $PACKAGES_TO_INSTALL
78
93
79
94
- name : Ensure UX packages are installed from "${{ env.EXPECTED_PATTERN }}"
80
95
working-directory : test_apps/encore-app
81
96
run : |
82
- for PACKAGE in $(cat package.json | jq -c '(.dependencies // {}) + (.devDependencies // {}) | to_entries[] | select(.key | startswith("@symfony/ux-")) | {name: .key, version: .value}'); do
83
- PACKAGE_NAME =$(echo $PACKAGE | jq -r '.name')
84
- PACKAGE_VERSION=$(echo $PACKAGE | jq -r '.version')
97
+ for PACKAGE_DATA in $(cat package.json | jq -c '(.dependencies // {}) + (.devDependencies // {}) | to_entries[] | select(.key | startswith("@symfony/ux-")) | {name: .key, version: .value}'); do
98
+ PACKAGE =$(echo $PACKAGE_DATA | jq -r '.name')
99
+ PACKAGE_VERSION=$(echo $PACKAGE_DATA | jq -r '.version')
85
100
86
- echo -n "Checking $PACKAGE_NAME @$PACKAGE_VERSION..."
101
+ echo -n "Checking $PACKAGE @$PACKAGE_VERSION..."
87
102
if [[ $PACKAGE_VERSION == $EXPECTED_PATTERN* ]]; then
88
- echo " OK"
103
+ echo "✅ OK"
89
104
else
90
- echo " KO"
91
- echo "The package version of $PACKAGE_NAME must starts with the pattern (e.g.: $EXPECTED_PATTERN), got $PACKAGE_VERSION instead."
105
+ echo "❌ KO"
106
+ echo "ℹ️ The package version of $PACKAGE must starts with the pattern (e.g.: $EXPECTED_PATTERN), got $PACKAGE_VERSION instead."
92
107
exit 1
93
108
fi
94
109
done;
97
112
98
113
- name : Ensure project can be built in dev mode
99
114
working-directory : test_apps/encore-app
100
- run : pnpm run dev
115
+ run : npm run dev
101
116
102
117
- name : Ensure project can be built in prod mode
103
118
working-directory : test_apps/encore-app
104
- run : pnpm run build
119
+ run : npm run build
0 commit comments