feat(cli): add ignore directives to bundled code (#13309)

This commit adds lint and fmt ignore directives to bundled
code as well as a comment stating that the code was bundled
and shouldn't be edited manually.
This commit is contained in:
juju 2022-01-12 20:05:06 +08:00 committed by GitHub
parent 62291e9b0e
commit 50e8ab8a86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 3 deletions

View file

@ -42,6 +42,13 @@ use std::result;
use std::sync::Arc;
use std::time::Instant;
const IGNORE_DIRECTIVES: &[&str] = &[
"// deno-fmt-ignore-file",
"// deno-lint-ignore-file",
"// This code was bundled using `deno bundle` and it's not recommended to edit it manually",
""
];
/// Represents the "default" type library that should be used when type
/// checking the code in the module graph. Note that a user provided config
/// of `"lib"` would override this value.
@ -503,6 +510,7 @@ impl From<BundleType> for swc::bundler::ModuleType {
pub(crate) struct BundleOptions {
pub bundle_type: BundleType,
pub ts_config: TsConfig,
pub emit_ignore_directives: bool,
}
/// A module loader for swc which does the appropriate retrieval and transpiling
@ -630,12 +638,21 @@ pub(crate) fn bundle(
let mut srcmap = Vec::new();
{
let cfg = swc::codegen::Config { minify: false };
let wr = Box::new(swc::codegen::text_writer::JsWriter::new(
let mut wr = Box::new(swc::codegen::text_writer::JsWriter::new(
cm.clone(),
"\n",
&mut buf,
Some(&mut srcmap),
));
if options.emit_ignore_directives {
// write leading comments in bundled file
use swc::codegen::text_writer::WriteJs;
use swc::common::source_map::DUMMY_SP;
let cmt = IGNORE_DIRECTIVES.join("\n") + "\n";
wr.write_comment(DUMMY_SP, &cmt)?;
}
let mut emitter = swc::codegen::Emitter {
cfg,
cm: cm.clone(),