Skip to content

Commit 5fbb70a

Browse files
authored
feat: support prod and dev deps on npm_link_all_packages and npm_link_targets (#2298)
### Changes are visible to end-users: yes - Searched for relevant documentation and updated as needed: yes - Breaking change (forces users to change their own code or config): no - Suggested release notes appear below: yes Added prod only and dev only options for npm_link_all_packages and npm_link_targets rules ### Test plan - New test cases added Fixes: #1879
1 parent e7beb10 commit 5fbb70a

File tree

18 files changed

+1119
-711
lines changed

18 files changed

+1119
-711
lines changed

docs/npm_link_all_packages.md

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/npm_translate_lock/BUILD.bazel

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
11
load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files")
2+
load("@aspect_rules_js//js:defs.bzl", "js_test")
23
load("@bazel_skylib//rules:build_test.bzl", "build_test")
3-
load("@npm//:defs.bzl", "npm_link_all_packages")
4+
load("@npm//:defs.bzl", "npm_link_all_packages", "npm_link_targets")
45

56
npm_link_all_packages(name = "node_modules")
67

8+
PROD_TARGETS = npm_link_targets(
9+
dev = False,
10+
prod = True,
11+
)
12+
13+
DEV_TARGETS = npm_link_targets(
14+
dev = True,
15+
prod = False,
16+
)
17+
18+
js_test(
19+
name = "test_prod_filtering",
20+
data = PROD_TARGETS,
21+
entry_point = "test_prod_filtering.js",
22+
)
23+
24+
js_test(
25+
name = "test_dev_filtering",
26+
data = DEV_TARGETS,
27+
entry_point = "test_dev_filtering.js",
28+
)
29+
730
build_test(
831
name = "test",
932
targets = [
1033
":node_modules",
34+
":test_prod_filtering",
35+
":test_dev_filtering",
1136
],
1237
)
1338

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Crash if dev deps missing
2+
require('@rollup/plugin-commonjs');
3+
require('@rollup/plugin-json');
4+
require('@rollup/plugin-node-resolve');
5+
6+
// Crash if prod deps present (filtering failed)
7+
try {
8+
require('debug');
9+
throw new Error('PROD DEPENDENCY LEAKED INTO DEV BUILD');
10+
} catch (e) {
11+
if (e.code !== 'MODULE_NOT_FOUND') throw e;
12+
}
13+
14+
console.log('✅ Development filtering validated');
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Crash if prod deps missing
2+
require('debug');
3+
require('is-odd');
4+
require('semver');
5+
6+
// Crash if dev deps present (filtering failed)
7+
try {
8+
require('@rollup/plugin-commonjs');
9+
throw new Error('DEV DEPENDENCY LEAKED INTO PROD BUILD');
10+
} catch (e) {
11+
if (e.code !== 'MODULE_NOT_FOUND') throw e;
12+
}
13+
14+
console.log('✅ Production filtering validated');

e2e/npm_translate_lock_disable_hooks/snapshots/defs.bzl

Lines changed: 13 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/npm_translate_lock_replace_packages/snapshots/bzlmod/npm_defs.bzl

Lines changed: 13 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/npm_translate_lock_replace_packages/snapshots/wksp/npm_defs.bzl

Lines changed: 15 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)