Rebuild all node_modules on npm install
Stuff like ripgrep needs to be refetched so we cannot bundle node_modules at all.
This commit is contained in:
parent
5f94d5a687
commit
6f1309795e
|
@ -73,7 +73,7 @@ docker run -it -p 127.0.0.1:8080:8080 \
|
||||||
### Static Releases
|
### Static Releases
|
||||||
|
|
||||||
We publish self contained `.tar.gz` archives for every release on [github](https://github.com/cdr/code-server/releases).
|
We publish self contained `.tar.gz` archives for every release on [github](https://github.com/cdr/code-server/releases).
|
||||||
They bundle the node binary and compiled native modules.
|
They bundle the node binary and node_modules.
|
||||||
|
|
||||||
1. Download the latest release archive for your system from [github](https://github.com/cdr/code-server/releases).
|
1. Download the latest release archive for your system from [github](https://github.com/cdr/code-server/releases).
|
||||||
2. Unpack the release.
|
2. Unpack the release.
|
||||||
|
|
|
@ -14,7 +14,7 @@ Any file or directory in this subdirectory should be documented here.
|
||||||
|
|
||||||
Make sure you have `$GITHUB_TOKEN` set and [hub](https://github.com/github/hub) installed.
|
Make sure you have `$GITHUB_TOKEN` set and [hub](https://github.com/github/hub) installed.
|
||||||
|
|
||||||
1. Update the version of code-server in `package.json` and README.md/guide.md install examples and push a commit.
|
1. Update the version of code-server in `package.json` and README.md/guide.md install examples and make a PR.
|
||||||
2. GitHub actions will generate the `npm-package`, `release-packages` and `release-images` artifacts.
|
2. GitHub actions will generate the `npm-package`, `release-packages` and `release-images` artifacts.
|
||||||
3. Run `yarn release:github-draft` to create a GitHub draft release from the template with
|
3. Run `yarn release:github-draft` to create a GitHub draft release from the template with
|
||||||
the updated version.
|
the updated version.
|
||||||
|
@ -24,7 +24,7 @@ Make sure you have `$GITHUB_TOKEN` set and [hub](https://github.com/github/hub)
|
||||||
upload them to the draft release.
|
upload them to the draft release.
|
||||||
6. Run some basic sanity tests on one of the released packages.
|
6. Run some basic sanity tests on one of the released packages.
|
||||||
7. Make sure the github release tag is the commit with the artifacts.
|
7. Make sure the github release tag is the commit with the artifacts.
|
||||||
8. Publish the release.
|
8. Publish the release and merge the PR.
|
||||||
1. CI will automatically grab the artifacts and then:
|
1. CI will automatically grab the artifacts and then:
|
||||||
1. Publish the NPM package from `npm-package`.
|
1. Publish the NPM package from `npm-package`.
|
||||||
2. Publish the Docker Hub image from `release-images`.
|
2. Publish the Docker Hub image from `release-images`.
|
||||||
|
@ -70,7 +70,7 @@ You can disable minification by setting `MINIFY=`.
|
||||||
- Bundles the output of the above two scripts into a single node module at `./release`.
|
- Bundles the output of the above two scripts into a single node module at `./release`.
|
||||||
- [./ci/build/build-static-release.sh](./build/build-static-release.sh) (`yarn release:static`)
|
- [./ci/build/build-static-release.sh](./build/build-static-release.sh) (`yarn release:static`)
|
||||||
- Requires a node module already built into `./release` with the above script.
|
- Requires a node module already built into `./release` with the above script.
|
||||||
- Will build a static release with node and native modules bundled into `./release-static`.
|
- Will build a static release with node and node_modules bundled into `./release-static`.
|
||||||
- [./ci/build/clean.sh](./build/clean.sh) (`yarn clean`)
|
- [./ci/build/clean.sh](./build/clean.sh) (`yarn clean`)
|
||||||
- Removes all build artifacts.
|
- Removes all build artifacts.
|
||||||
- Will also `git reset --hard lib/vscode`.
|
- Will also `git reset --hard lib/vscode`.
|
||||||
|
|
|
@ -49,11 +49,14 @@ EOF
|
||||||
|
|
||||||
bundle_vscode() {
|
bundle_vscode() {
|
||||||
mkdir -p "$VSCODE_OUT_PATH"
|
mkdir -p "$VSCODE_OUT_PATH"
|
||||||
rsync "$VSCODE_SRC_PATH/package.json" "$VSCODE_OUT_PATH"
|
|
||||||
rsync "$VSCODE_SRC_PATH/yarn.lock" "$VSCODE_OUT_PATH"
|
rsync "$VSCODE_SRC_PATH/yarn.lock" "$VSCODE_OUT_PATH"
|
||||||
rsync "$VSCODE_SRC_PATH/node_modules" "$VSCODE_OUT_PATH"
|
|
||||||
rsync "$VSCODE_SRC_PATH/out-vscode${MINIFY+-min}/" "$VSCODE_OUT_PATH/out"
|
rsync "$VSCODE_SRC_PATH/out-vscode${MINIFY+-min}/" "$VSCODE_OUT_PATH/out"
|
||||||
|
|
||||||
rsync "$VSCODE_SRC_PATH/.build/extensions/" "$VSCODE_OUT_PATH/extensions"
|
rsync "$VSCODE_SRC_PATH/.build/extensions/" "$VSCODE_OUT_PATH/extensions"
|
||||||
|
rm -Rf "$VSCODE_OUT_PATH/extensions/node_modules"
|
||||||
|
rsync "$VSCODE_SRC_PATH/extensions/package.json" "$VSCODE_OUT_PATH/extensions"
|
||||||
|
rsync "$VSCODE_SRC_PATH/extensions/yarn.lock" "$VSCODE_OUT_PATH/extensions"
|
||||||
|
rsync "$VSCODE_SRC_PATH/extensions/postinstall.js" "$VSCODE_OUT_PATH/extensions"
|
||||||
|
|
||||||
mkdir -p "$VSCODE_OUT_PATH/resources/linux"
|
mkdir -p "$VSCODE_OUT_PATH/resources/linux"
|
||||||
rsync "$VSCODE_SRC_PATH/resources/linux/code.png" "$VSCODE_OUT_PATH/resources/linux/code.png"
|
rsync "$VSCODE_SRC_PATH/resources/linux/code.png" "$VSCODE_OUT_PATH/resources/linux/code.png"
|
||||||
|
@ -68,26 +71,10 @@ bundle_vscode() {
|
||||||
EOF
|
EOF
|
||||||
) > "$VSCODE_OUT_PATH/product.json"
|
) > "$VSCODE_OUT_PATH/product.json"
|
||||||
|
|
||||||
pushd "$VSCODE_OUT_PATH"
|
# We remove the scripts field so that later on we can run
|
||||||
yarn --production --frozen-lockfile --ignore-scripts
|
# yarn to fetch node_modules if necessary without build scripts running.
|
||||||
popd
|
# We cannot use --no-scripts because we still want dependant package scripts to run.
|
||||||
|
jq 'del(.scripts)' < "$VSCODE_SRC_PATH/package.json" > "$VSCODE_OUT_PATH/package.json"
|
||||||
# We clear any native module builds.
|
|
||||||
local native_modules
|
|
||||||
mapfile -t native_modules < <(find "$VSCODE_OUT_PATH/node_modules" -name "binding.gyp" -exec dirname {} \;)
|
|
||||||
local nm
|
|
||||||
for nm in "${native_modules[@]}"; do
|
|
||||||
rm -R "$nm/build"
|
|
||||||
done
|
|
||||||
|
|
||||||
# We have to rename node_modules to node_modules.bundled to avoid them being ignored by yarn.
|
|
||||||
local node_modules
|
|
||||||
mapfile -t node_modules < <(find "$VSCODE_OUT_PATH" -depth -name "node_modules")
|
|
||||||
local nm
|
|
||||||
for nm in "${node_modules[@]}"; do
|
|
||||||
rm -Rf "$nm.bundled"
|
|
||||||
mv "$nm" "$nm.bundled"
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
|
@ -24,24 +24,18 @@ main() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
cd lib/vscode
|
if ! vscode_yarn; then
|
||||||
|
|
||||||
# We have to rename node_modules.bundled to node_modules.
|
|
||||||
# The bundled modules were renamed originally to avoid being ignored by yarn.
|
|
||||||
node_modules="$(find . -depth -name "node_modules.bundled")"
|
|
||||||
for nm in $node_modules; do
|
|
||||||
rm -Rf "${nm%.bundled}"
|
|
||||||
mv "$nm" "${nm%.bundled}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# $npm_config_global makes npm rebuild return without rebuilding.
|
|
||||||
unset npm_config_global
|
|
||||||
# Rebuilds native modules.
|
|
||||||
if ! npm rebuild; then
|
|
||||||
echo "You may not have the required dependencies to build the native modules."
|
echo "You may not have the required dependencies to build the native modules."
|
||||||
echo "Please see https://github.com/cdr/code-server/blob/master/doc/npm.md"
|
echo "Please see https://github.com/cdr/code-server/blob/master/doc/npm.md"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vscode_yarn() {
|
||||||
|
cd lib/vscode
|
||||||
|
yarn --production --frozen-lockfile
|
||||||
|
cd extensions
|
||||||
|
yarn --production --frozen-lockfile
|
||||||
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
|
@ -9,6 +9,7 @@ main() {
|
||||||
|
|
||||||
hub release create \
|
hub release create \
|
||||||
--file - \
|
--file - \
|
||||||
|
-t "$(git rev-parse HEAD)" \
|
||||||
--draft "${assets[@]}" "v$VERSION" << EOF
|
--draft "${assets[@]}" "v$VERSION" << EOF
|
||||||
v$VERSION
|
v$VERSION
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue