diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-02-13 21:52:30 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-13 21:52:30 +0530 |
commit | a68eb3fcc3997fce8680f87edce46f6450e79635 (patch) | |
tree | 6839607033226fdfb2ce1be3187ef93791096507 /cli/factory.rs | |
parent | 492a9fbb9194a24a1f9223f797b4f4df9efde2bd (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.rs | 32 |
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, }) } } |