Skip to content

Commit b33beb4

Browse files
committed
Rebuild all node_modules on npm install
Stuff like ripgrep needs to be refetched so we cannot bundle node_modules at all.
1 parent 5f94d5a commit b33beb4

File tree

5 files changed

+27
-45
lines changed

5 files changed

+27
-45
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ docker run -it -p 127.0.0.1:8080:8080 \
7373
### Static Releases
7474

7575
We publish self contained `.tar.gz` archives for every release on [github](https://github.com/cdr/code-server/releases).
76-
They bundle the node binary and compiled native modules.
76+
They bundle the node binary and node_modules.
7777

7878
1. Download the latest release archive for your system from [github](https://github.com/cdr/code-server/releases).
7979
2. Unpack the release.

ci/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Any file or directory in this subdirectory should be documented here.
1414

1515
Make sure you have `$GITHUB_TOKEN` set and [hub](https://github.com/github/hub) installed.
1616

17-
1. Update the version of code-server in `package.json` and README.md/guide.md install examples and push a commit.
17+
1. Update the version of code-server in `package.json` and README.md/guide.md install examples and make a PR.
1818
2. GitHub actions will generate the `npm-package`, `release-packages` and `release-images` artifacts.
1919
3. Run `yarn release:github-draft` to create a GitHub draft release from the template with
2020
the updated version.
@@ -24,7 +24,7 @@ Make sure you have `$GITHUB_TOKEN` set and [hub](https://github.com/github/hub)
2424
upload them to the draft release.
2525
6. Run some basic sanity tests on one of the released packages.
2626
7. Make sure the github release tag is the commit with the artifacts.
27-
8. Publish the release.
27+
8. Publish the release and merge the PR.
2828
1. CI will automatically grab the artifacts and then:
2929
1. Publish the NPM package from `npm-package`.
3030
2. Publish the Docker Hub image from `release-images`.
@@ -70,7 +70,7 @@ You can disable minification by setting `MINIFY=`.
7070
- Bundles the output of the above two scripts into a single node module at `./release`.
7171
- [./ci/build/build-static-release.sh](./build/build-static-release.sh) (`yarn release:static`)
7272
- Requires a node module already built into `./release` with the above script.
73-
- Will build a static release with node and native modules bundled into `./release-static`.
73+
- Will build a static release with node and node_modules bundled into `./release-static`.
7474
- [./ci/build/clean.sh](./build/clean.sh) (`yarn clean`)
7575
- Removes all build artifacts.
7676
- Will also `git reset --hard lib/vscode`.

ci/build/build-release.sh

+14-27
Original file line numberDiff line numberDiff line change
@@ -34,60 +34,47 @@ bundle_code_server() {
3434

3535
# Adds the commit to package.json
3636
jq --slurp '.[0] * .[1]' package.json <(
37-
cat << EOF
37+
cat <<EOF
3838
{
3939
"commit": "$(git rev-parse HEAD)",
4040
"scripts": {
4141
"postinstall": "./postinstall.sh"
4242
}
4343
}
4444
EOF
45-
) > "$RELEASE_PATH/package.json"
45+
) >"$RELEASE_PATH/package.json"
4646
rsync yarn.lock "$RELEASE_PATH"
4747
rsync ci/build/npm-postinstall.sh "$RELEASE_PATH/postinstall.sh"
4848
}
4949

5050
bundle_vscode() {
5151
mkdir -p "$VSCODE_OUT_PATH"
52-
rsync "$VSCODE_SRC_PATH/package.json" "$VSCODE_OUT_PATH"
5352
rsync "$VSCODE_SRC_PATH/yarn.lock" "$VSCODE_OUT_PATH"
54-
rsync "$VSCODE_SRC_PATH/node_modules" "$VSCODE_OUT_PATH"
5553
rsync "$VSCODE_SRC_PATH/out-vscode${MINIFY+-min}/" "$VSCODE_OUT_PATH/out"
54+
5655
rsync "$VSCODE_SRC_PATH/.build/extensions/" "$VSCODE_OUT_PATH/extensions"
56+
rm -Rf "$VSCODE_OUT_PATH/extensions/node_modules"
57+
rsync "$VSCODE_SRC_PATH/extensions/package.json" "$VSCODE_OUT_PATH/extensions"
58+
rsync "$VSCODE_SRC_PATH/extensions/yarn.lock" "$VSCODE_OUT_PATH/extensions"
59+
rsync "$VSCODE_SRC_PATH/extensions/postinstall.js" "$VSCODE_OUT_PATH/extensions"
5760

5861
mkdir -p "$VSCODE_OUT_PATH/resources/linux"
5962
rsync "$VSCODE_SRC_PATH/resources/linux/code.png" "$VSCODE_OUT_PATH/resources/linux/code.png"
6063

6164
# Adds the commit and date to product.json
6265
jq --slurp '.[0] * .[1]' "$VSCODE_SRC_PATH/product.json" <(
63-
cat << EOF
66+
cat <<EOF
6467
{
6568
"commit": "$(git rev-parse HEAD)",
6669
"date": $(jq -n 'now | todate')
6770
}
6871
EOF
69-
) > "$VSCODE_OUT_PATH/product.json"
70-
71-
pushd "$VSCODE_OUT_PATH"
72-
yarn --production --frozen-lockfile --ignore-scripts
73-
popd
74-
75-
# We clear any native module builds.
76-
local native_modules
77-
mapfile -t native_modules < <(find "$VSCODE_OUT_PATH/node_modules" -name "binding.gyp" -exec dirname {} \;)
78-
local nm
79-
for nm in "${native_modules[@]}"; do
80-
rm -R "$nm/build"
81-
done
82-
83-
# We have to rename node_modules to node_modules.bundled to avoid them being ignored by yarn.
84-
local node_modules
85-
mapfile -t node_modules < <(find "$VSCODE_OUT_PATH" -depth -name "node_modules")
86-
local nm
87-
for nm in "${node_modules[@]}"; do
88-
rm -Rf "$nm.bundled"
89-
mv "$nm" "$nm.bundled"
90-
done
72+
) >"$VSCODE_OUT_PATH/product.json"
73+
74+
# We remove the scripts field so that later on we can run
75+
# yarn to fetch node_modules if necessary without build scripts running.
76+
# We cannot use --no-scripts because we still want dependant package scripts to run.
77+
jq 'del(.scripts)' <"$VSCODE_SRC_PATH/package.json" >"$VSCODE_OUT_PATH/package.json"
9178
}
9279

9380
main "$@"

ci/build/npm-postinstall.sh

+8-14
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,18 @@ main() {
2424
;;
2525
esac
2626

27-
cd lib/vscode
28-
29-
# We have to rename node_modules.bundled to node_modules.
30-
# The bundled modules were renamed originally to avoid being ignored by yarn.
31-
node_modules="$(find . -depth -name "node_modules.bundled")"
32-
for nm in $node_modules; do
33-
rm -Rf "${nm%.bundled}"
34-
mv "$nm" "${nm%.bundled}"
35-
done
36-
37-
# $npm_config_global makes npm rebuild return without rebuilding.
38-
unset npm_config_global
39-
# Rebuilds native modules.
40-
if ! npm rebuild; then
27+
if ! vscode_yarn; then
4128
echo "You may not have the required dependencies to build the native modules."
4229
echo "Please see https://github.com/cdr/code-server/blob/master/doc/npm.md"
4330
exit 1
4431
fi
4532
}
4633

34+
vscode_yarn() {
35+
cd lib/vscode
36+
yarn --production --frozen-lockfile
37+
cd extensions
38+
yarn --production --frozen-lockfile
39+
}
40+
4741
main "$@"

ci/build/release-github-draft.sh

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ main() {
99

1010
hub release create \
1111
--file - \
12+
-t "$(git rev-parse HEAD)" \
1213
--draft "${assets[@]}" "v$VERSION" << EOF
1314
v$VERSION
1415

0 commit comments

Comments
 (0)