mirror of
https://github.com/denoland/deno.git
synced 2025-08-31 15:57:53 +00:00
fix(publish): always include config file when publishing (#23797)
Closes https://github.com/denoland/deno/issues/23796
This commit is contained in:
parent
432792a46c
commit
c0e3b6ed9d
7 changed files with 83 additions and 38 deletions
|
@ -151,35 +151,40 @@ async fn prepare_publish(
|
|||
.map(|c| c.files)
|
||||
.unwrap_or_else(|| FilePatterns::new_with_base(root_dir.to_path_buf()));
|
||||
|
||||
let diagnostics_collector = diagnostics_collector.clone();
|
||||
let tarball = deno_core::unsync::spawn_blocking(move || {
|
||||
let bare_node_builtins = cli_options.unstable_bare_node_builtins();
|
||||
let unfurler = SpecifierUnfurler::new(
|
||||
&mapped_resolver,
|
||||
sloppy_imports_resolver.as_ref(),
|
||||
bare_node_builtins,
|
||||
);
|
||||
let root_specifier =
|
||||
ModuleSpecifier::from_directory_path(&root_dir).unwrap();
|
||||
let publish_paths = paths::collect_publish_paths(
|
||||
&root_dir,
|
||||
&cli_options,
|
||||
&diagnostics_collector,
|
||||
file_patterns,
|
||||
)?;
|
||||
collect_excluded_module_diagnostics(
|
||||
&root_specifier,
|
||||
&graph,
|
||||
&publish_paths,
|
||||
&diagnostics_collector,
|
||||
);
|
||||
tar::create_gzipped_tarball(
|
||||
&publish_paths,
|
||||
LazyGraphSourceParser::new(&source_cache, &graph),
|
||||
&diagnostics_collector,
|
||||
&unfurler,
|
||||
)
|
||||
.context("Failed to create a tarball")
|
||||
let tarball = deno_core::unsync::spawn_blocking({
|
||||
let diagnostics_collector = diagnostics_collector.clone();
|
||||
let config_path = config_path.clone();
|
||||
move || {
|
||||
let bare_node_builtins = cli_options.unstable_bare_node_builtins();
|
||||
let unfurler = SpecifierUnfurler::new(
|
||||
&mapped_resolver,
|
||||
sloppy_imports_resolver.as_ref(),
|
||||
bare_node_builtins,
|
||||
);
|
||||
let root_specifier =
|
||||
ModuleSpecifier::from_directory_path(&root_dir).unwrap();
|
||||
let publish_paths =
|
||||
paths::collect_publish_paths(paths::CollectPublishPathsOptions {
|
||||
root_dir: &root_dir,
|
||||
cli_options: &cli_options,
|
||||
diagnostics_collector: &diagnostics_collector,
|
||||
file_patterns,
|
||||
force_include_paths: vec![config_path],
|
||||
})?;
|
||||
collect_excluded_module_diagnostics(
|
||||
&root_specifier,
|
||||
&graph,
|
||||
&publish_paths,
|
||||
&diagnostics_collector,
|
||||
);
|
||||
tar::create_gzipped_tarball(
|
||||
&publish_paths,
|
||||
LazyGraphSourceParser::new(&source_cache, &graph),
|
||||
&diagnostics_collector,
|
||||
&unfurler,
|
||||
)
|
||||
.context("Failed to create a tarball")
|
||||
}
|
||||
})
|
||||
.await??;
|
||||
|
||||
|
|
|
@ -217,17 +217,29 @@ pub struct CollectedPublishPath {
|
|||
pub relative_path: String,
|
||||
}
|
||||
|
||||
pub struct CollectPublishPathsOptions<'a> {
|
||||
pub root_dir: &'a Path,
|
||||
pub cli_options: &'a CliOptions,
|
||||
pub file_patterns: FilePatterns,
|
||||
pub force_include_paths: Vec<PathBuf>,
|
||||
pub diagnostics_collector: &'a PublishDiagnosticsCollector,
|
||||
}
|
||||
|
||||
pub fn collect_publish_paths(
|
||||
root_dir: &Path,
|
||||
cli_options: &CliOptions,
|
||||
diagnostics_collector: &PublishDiagnosticsCollector,
|
||||
file_patterns: FilePatterns,
|
||||
opts: CollectPublishPathsOptions,
|
||||
) -> Result<Vec<CollectedPublishPath>, AnyError> {
|
||||
let diagnostics_collector = opts.diagnostics_collector;
|
||||
let publish_paths =
|
||||
collect_paths(cli_options, diagnostics_collector, file_patterns)?;
|
||||
let mut paths = HashSet::with_capacity(publish_paths.len());
|
||||
let mut result = Vec::with_capacity(publish_paths.len());
|
||||
for path in publish_paths {
|
||||
collect_paths(opts.cli_options, diagnostics_collector, opts.file_patterns)?;
|
||||
let publish_paths_set = publish_paths.iter().cloned().collect::<HashSet<_>>();
|
||||
let capacity = publish_paths.len() + opts.force_include_paths.len();
|
||||
let mut paths = HashSet::with_capacity(capacity);
|
||||
let mut result = Vec::with_capacity(capacity);
|
||||
let force_include_paths = opts
|
||||
.force_include_paths
|
||||
.into_iter()
|
||||
.filter(|path| !publish_paths_set.contains(path));
|
||||
for path in publish_paths.into_iter().chain(force_include_paths) {
|
||||
let Ok(specifier) = ModuleSpecifier::from_file_path(&path) else {
|
||||
diagnostics_collector
|
||||
.to_owned()
|
||||
|
@ -238,7 +250,7 @@ pub fn collect_publish_paths(
|
|||
continue;
|
||||
};
|
||||
|
||||
let Ok(relative_path) = path.strip_prefix(root_dir) else {
|
||||
let Ok(relative_path) = path.strip_prefix(opts.root_dir) else {
|
||||
diagnostics_collector
|
||||
.to_owned()
|
||||
.push(PublishDiagnostic::InvalidPath {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue