summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-02-13 21:52:30 +0530
committerGitHub <noreply@github.com>2024-02-13 21:52:30 +0530
commita68eb3fcc3997fce8680f87edce46f6450e79635 (patch)
tree6839607033226fdfb2ce1be3187ef93791096507 /cli/factory.rs
parent492a9fbb9194a24a1f9223f797b4f4df9efde2bd (diff)
feat: denort binary for `deno compile` (#22205)
This introduces the `denort` binary - a slim version of deno without tooling. The binary is used as the default for `deno compile`. Improves `deno compile` final size by ~2.5x (141 MB -> 61 MB) on Linux x86_64.
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs32
1 files changed, 31 insertions, 1 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index 32cb256a3..0b24350ed 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -42,6 +42,8 @@ use crate::resolver::NpmModuleLoader;
use crate::resolver::SloppyImportsResolver;
use crate::standalone::DenoCompileBinaryWriter;
use crate::tools::check::TypeChecker;
+use crate::tools::coverage::CoverageCollector;
+use crate::tools::run::hmr::HmrRunner;
use crate::util::file_watcher::WatcherCommunicator;
use crate::util::fs::canonicalize_path_maybe_not_exists;
use crate::util::import_map::deno_json_deps;
@@ -50,6 +52,7 @@ use crate::util::progress_bar::ProgressBar;
use crate::util::progress_bar::ProgressBarStyle;
use crate::worker::CliMainWorkerFactory;
use crate::worker::CliMainWorkerOptions;
+use std::path::PathBuf;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
@@ -766,7 +769,6 @@ impl CliFactory {
)),
self.root_cert_store_provider().clone(),
self.fs().clone(),
- Some(self.emitter()?.clone()),
maybe_file_watcher_communicator,
self.maybe_inspector_server().clone(),
self.maybe_lockfile().clone(),
@@ -783,6 +785,32 @@ impl CliFactory {
fn create_cli_main_worker_options(
&self,
) -> Result<CliMainWorkerOptions, AnyError> {
+ let create_hmr_runner = if self.options.has_hmr() {
+ let watcher_communicator = self.watcher_communicator.clone().unwrap();
+ let emitter = self.emitter()?.clone();
+ let fn_: crate::worker::CreateHmrRunnerCb = Box::new(move |session| {
+ Box::new(HmrRunner::new(
+ emitter.clone(),
+ session,
+ watcher_communicator.clone(),
+ ))
+ });
+ Some(fn_)
+ } else {
+ None
+ };
+ let create_coverage_collector =
+ if let Some(coverage_dir) = self.options.coverage_dir() {
+ let coverage_dir = PathBuf::from(coverage_dir);
+ let fn_: crate::worker::CreateCoverageCollectorCb =
+ Box::new(move |session| {
+ Box::new(CoverageCollector::new(coverage_dir.clone(), session))
+ });
+ Some(fn_)
+ } else {
+ None
+ };
+
Ok(CliMainWorkerOptions {
argv: self.options.argv().clone(),
// This optimization is only available for "run" subcommand
@@ -814,6 +842,8 @@ impl CliFactory {
.clone(),
unstable: self.options.legacy_unstable_flag(),
maybe_root_package_json_deps: self.options.maybe_package_json_deps(),
+ create_hmr_runner,
+ create_coverage_collector,
})
}
}