next-swc-napi: Enable "plugin" feature by default (#66006)
As noted in (https://github.com/vercel/nextpack/pull/103), by not having this as a default feature, when running the `build-native` script it's not able to re-use any cargo caches that might already exist from a default build. Because this feature impacts the swc crate, everything dependent on it can be forced to rebuild. By making this a default feature, the hope/theory is that the number of different ways we potentially build our dependency graph reduces, and cargo cache hits will improve. ## Changes - Add `plugin` to the default set of features for `next-swc-napi`. - Consolidate `build-native-no-plugin-woa` with `build-native-no-plugin`. Given the lack of any other default features, these are equivalent. - `i686-pc-windows-msvc`: Switch to `build-native-no-plugin-release` in CI instead of just supplying the `--release` flag. This has the benefit of also enabling `tracing/release_max_level_info`, which might reduce the size of or speed up these builds. - `x86_64-apple-darwin`: Remove a redundant `--release` flag in the CI config (no expected changes). ## Testing I've tested this locally on Linux (`pnpm run build-native`) and Windows-on-ARM (`pnpm run build-native-no-plugin`) by making sure things still build. I'll also make sure CI passes.
This commit is contained in:
parent
c3d93b126c
commit
4ead5fc00d
4 changed files with 16 additions and 25 deletions
6
.github/workflows/build_and_deploy.yml
vendored
6
.github/workflows/build_and_deploy.yml
vendored
|
@ -86,7 +86,7 @@ jobs:
|
|||
target: 'x86_64-apple-darwin'
|
||||
build: |
|
||||
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && corepack enable
|
||||
turbo run build-native-release -vvv --remote-cache-timeout 90 --summarize -- --target x86_64-apple-darwin --release
|
||||
turbo run build-native-release -vvv --remote-cache-timeout 90 --summarize -- --target x86_64-apple-darwin
|
||||
strip -x packages/next-swc/native/next-swc.*.node
|
||||
|
||||
- host:
|
||||
|
@ -123,7 +123,7 @@ jobs:
|
|||
build: |
|
||||
corepack enable
|
||||
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}"
|
||||
turbo run build-native-no-plugin -vvv --remote-cache-timeout 90 --summarize -- --release --target i686-pc-windows-msvc
|
||||
turbo run build-native-no-plugin-release -vvv --remote-cache-timeout 90 --summarize -- --target i686-pc-windows-msvc
|
||||
target: 'i686-pc-windows-msvc'
|
||||
|
||||
- host:
|
||||
|
@ -135,7 +135,7 @@ jobs:
|
|||
build: |
|
||||
corepack enable
|
||||
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}"
|
||||
turbo run build-native-no-plugin-woa-release -vvv --remote-cache-timeout 90 --summarize -- --target aarch64-pc-windows-msvc
|
||||
turbo run build-native-no-plugin-release -vvv --remote-cache-timeout 90 --summarize -- --target aarch64-pc-windows-msvc
|
||||
|
||||
- host:
|
||||
- 'self-hosted'
|
||||
|
|
|
@ -8,10 +8,13 @@ publish = false
|
|||
crate-type = ["cdylib", "rlib"]
|
||||
|
||||
[features]
|
||||
# Instead of enabling all the plugin-related features by default, make it explicitly specified
|
||||
# when build (i.e napi --build --features plugin), same for the wasm as well.
|
||||
# this is due to some of transitive dependencies have features cannot be enabled at the same time
|
||||
# (i.e wasmer/default vs wasmer/js-default) while cargo merges all the features at once.
|
||||
default = ["plugin"]
|
||||
|
||||
# Instead of unconditionally enabling all the plugin-related features, make it
|
||||
# default, but overridable when built (i.e napi --build --no-default-features).
|
||||
# This is due to some of transitive dependencies have features cannot be enabled
|
||||
# at the same time (i.e wasmer/default vs wasmer/js-default) while cargo merges
|
||||
# all the features at once.
|
||||
plugin = [
|
||||
"turbopack-binding/__swc_core_binding_napi_plugin",
|
||||
"turbopack-binding/__swc_core_binding_napi_plugin_filesystem_cache",
|
||||
|
|
|
@ -4,12 +4,11 @@
|
|||
"private": true,
|
||||
"scripts": {
|
||||
"clean": "node ../../scripts/rm.mjs native",
|
||||
"build-native": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --features plugin,image-extended --js false native",
|
||||
"build-native-release": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --release --features plugin,image-extended,tracing/release_max_level_info --js false native",
|
||||
"build-native-no-plugin": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --features image-webp --js false native",
|
||||
"build-native-no-plugin-woa": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --cargo-flags=--no-default-features --features image-webp --js false native",
|
||||
"build-native-no-plugin-woa-release": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --release --cargo-flags=--no-default-features --features image-webp,tracing/release_max_level_info --js false native",
|
||||
"build-native-wasi": "npx --package=@napi-rs/cli@3.0.0-alpha.45 napi build --platform --target wasm32-wasip1-threads -p next-swc-napi --cwd ../../ --output-dir packages/next-swc/native",
|
||||
"build-native": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --features image-extended --js false native",
|
||||
"build-native-release": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --release --features image-extended,tracing/release_max_level_info --js false native",
|
||||
"build-native-no-plugin": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --cargo-flags=--no-default-features --features image-webp --js false native",
|
||||
"build-native-no-plugin-release": "napi build --platform -p next-swc-napi --cargo-cwd ../../ --cargo-name next_swc_napi --release --cargo-flags=--no-default-features --features image-webp,tracing/release_max_level_info --js false native",
|
||||
"build-native-wasi": "npx --package=@napi-rs/cli@3.0.0-alpha.45 napi build --platform --target wasm32-wasip1-threads -p next-swc-napi --cwd ../../ --output-dir packages/next-swc/native --no-default-features",
|
||||
"build-wasm": "wasm-pack build crates/wasm --scope=next",
|
||||
"cache-build-native": "[ -d native ] && echo $(ls native)",
|
||||
"rust-check-fmt": "cd ../..; cargo fmt -- --check",
|
||||
|
|
|
@ -34,18 +34,7 @@
|
|||
],
|
||||
"outputs": ["native/*.node"]
|
||||
},
|
||||
"build-native-no-plugin-woa": {
|
||||
"inputs": [
|
||||
"../../.cargo/**",
|
||||
"crates/**",
|
||||
"../../**/Cargo.toml",
|
||||
"../../**/Cargo.lock",
|
||||
"../../.github/workflows/build_and_deploy.yml",
|
||||
"../../rust-toolchain"
|
||||
],
|
||||
"outputs": ["native/*.node"]
|
||||
},
|
||||
"build-native-no-plugin-woa-release": {
|
||||
"build-native-no-plugin-release": {
|
||||
"inputs": [
|
||||
"../../.cargo/**",
|
||||
"crates/**",
|
||||
|
|
Loading…
Reference in a new issue