Skip to content

Commit e4b6669

Browse files
authored
Move is_local_dep to Dependency struct (#7736)
* Move is_local_dep to Dependency struct * Add dep with devDeps * Update snapshots * Add changelog * Add lockfile
1 parent 7917ea3 commit e4b6669

13 files changed

+31
-17
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
- Fix error message that falsely suggested using coercion when it wouldn't work. https://github.com/rescript-lang/rescript/pull/7721
2626
- Fix formatter removes () from functor type. https://github.com/rescript-lang/rescript/pull/7735
27+
- Rewatch: don't compile dev-dependencies of non local dependencies with `--dev`. https://github.com/rescript-lang/rescript/pull/7736
2728

2829
# 12.0.0-beta.3
2930

rewatch/src/build/packages.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ struct Dependency {
4545
config: config::Config,
4646
path: PathBuf,
4747
dependencies: Vec<Dependency>,
48+
is_local_dep: bool,
4849
}
4950

5051
#[derive(Debug, Clone)]
@@ -359,6 +360,10 @@ fn read_dependencies(
359360
}
360361
};
361362

363+
let is_local_dep = {
364+
canonical_path.starts_with(project_root)
365+
&& !canonical_path.components().any(|c| c.as_os_str() == "node_modules")
366+
};
362367

363368
let dependencies = read_dependencies(
364369
&mut registered_dependencies_set.to_owned(),
@@ -367,14 +372,15 @@ fn read_dependencies(
367372
project_root,
368373
workspace_root,
369374
show_progress,
370-
build_dev_deps,
375+
is_local_dep && build_dev_deps,
371376
);
372377

373378
Dependency {
374379
name: package_name.to_owned(),
375380
config,
376381
path: canonical_path,
377382
dependencies,
383+
is_local_dep
378384
}
379385
})
380386
.collect()
@@ -405,7 +411,7 @@ pub fn read_package_name(package_dir: &Path) -> Result<String> {
405411
.ok_or_else(|| anyhow!("No name field found in package.json"))
406412
}
407413

408-
fn make_package(config: config::Config, package_path: &Path, is_root: bool, project_root: &Path) -> Package {
414+
fn make_package(config: config::Config, package_path: &Path, is_root: bool, is_local_dep: bool) -> Package {
409415
let source_folders = match config.sources.to_owned() {
410416
Some(config::OneOrMore::Single(source)) => get_source_dirs(source, None),
411417
Some(config::OneOrMore::Multiple(sources)) => {
@@ -444,11 +450,6 @@ This inconsistency will cause issues with package resolution.\n",
444450
);
445451
}
446452

447-
let is_local_dep = {
448-
package_path.starts_with(project_root)
449-
&& !package_path.components().any(|c| c.as_os_str() == "node_modules")
450-
};
451-
452453
Package {
453454
name: package_name,
454455
config: config.to_owned(),
@@ -477,7 +478,7 @@ fn read_packages(
477478

478479
// Store all packages and completely deduplicate them
479480
let mut map: AHashMap<String, Package> = AHashMap::new();
480-
let root_package = make_package(root_config.to_owned(), project_root, true, project_root);
481+
let root_package = make_package(root_config.to_owned(), project_root, true, true);
481482
map.insert(root_package.name.to_string(), root_package);
482483

483484
let mut registered_dependencies_set: AHashSet<String> = AHashSet::new();
@@ -492,7 +493,7 @@ fn read_packages(
492493
));
493494
dependencies.iter().for_each(|d| {
494495
if !map.contains_key(&d.name) {
495-
let package = make_package(d.config.to_owned(), &d.path, false, project_root);
496+
let package = make_package(d.config.to_owned(), &d.path, false, d.is_local_dep);
496497
map.insert(d.name.to_string(), package);
497498
}
498499
});

rewatch/testrepo/packages/with-dev-deps/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,8 @@
88
"license": "MIT",
99
"devDependencies": {
1010
"@rescript/webapi": "0.1.0-experimental-73e6a0d"
11+
},
12+
"dependencies": {
13+
"rescript-nodejs": "16.1.0"
1114
}
1215
}

rewatch/testrepo/packages/with-dev-deps/rescript.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"type": "dev"
1010
}
1111
],
12+
"dependencies": ["rescript-nodejs"],
1213
"dev-dependencies": ["@rescript/webapi"],
1314
"package-specs": {
1415
"module": "es6",

rewatch/testrepo/yarn.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,17 @@ __metadata:
107107
resolution: "@testrepo/with-dev-deps@workspace:packages/with-dev-deps"
108108
dependencies:
109109
"@rescript/webapi": "npm:0.1.0-experimental-73e6a0d"
110+
rescript-nodejs: "npm:16.1.0"
110111
languageName: unknown
111112
linkType: soft
112113

114+
"rescript-nodejs@npm:16.1.0":
115+
version: 16.1.0
116+
resolution: "rescript-nodejs@npm:16.1.0"
117+
checksum: 10c0/2ea271dbddebdceec79bf5ee6089c15474f2c014cb22c1cc39d43ef27fd363fcb1cd8e1244d0cb998cd6b426d7474e3055e41277951fb01ee1eeecf68bbe01ab
118+
languageName: node
119+
linkType: hard
120+
113121
"rescript@npm:12.0.0-beta.1, rescript@npm:^12.0.0-alpha.13":
114122
version: 12.0.0-beta.1
115123
resolution: "rescript@npm:12.0.0-beta.1"

rewatch/tests/snapshots/bs-dev-dependency-used-by-non-dev-source.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cleaned 0/16
1+
Cleaned 0/56
22
Parsed 2 source files
33
Compiled 2 modules
44

rewatch/tests/snapshots/dependency-cycle.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cleaned 0/16
1+
Cleaned 0/56
22
Parsed 1 source files
33
Compiled 0 modules
44

rewatch/tests/snapshots/remove-file.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cleaned 1/16
1+
Cleaned 1/56
22
Parsed 0 source files
33
Compiled 1 modules
44

rewatch/tests/snapshots/rename-file-internal-dep-namespace.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cleaned 2/16
1+
Cleaned 2/56
22
Parsed 2 source files
33
Compiled 3 modules
44

rewatch/tests/snapshots/rename-file-internal-dep.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cleaned 2/16
1+
Cleaned 2/56
22
Parsed 2 source files
33
Compiled 2 modules
44

0 commit comments

Comments
 (0)