feat(es/config): Add isModule to .swcrc (#4993)

This commit is contained in:
Donny/강동윤 2022-06-18 13:24:08 +09:00 committed by GitHub
parent 4da4d4dd01
commit e85c0db926
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 81 additions and 39 deletions

View File

@ -3,7 +3,7 @@ extern crate swc_node_base;
use std::{io::stderr, path::Path};
use criterion::{criterion_group, criterion_main, Bencher, Criterion};
use swc::config::{IsModule, Options};
use swc::config::{Config, IsModule, Options};
use swc_common::{errors::Handler, sync::Lrc, FilePathMapping, SourceMap};
fn mk() -> swc::Compiler {
@ -25,7 +25,10 @@ fn bench_file(b: &mut Bencher, path: &Path) {
fm,
&handler,
&Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
..Default::default()
},
)

View File

@ -175,10 +175,10 @@ fn full_group(c: &mut Criterion) {
..Default::default()
},
module: None,
is_module: IsModule::Bool(true),
..Default::default()
},
swcrc: false,
is_module: IsModule::Bool(true),
..Default::default()
},
);

View File

@ -76,7 +76,7 @@ use crate::{
#[cfg(test)]
mod tests;
#[derive(Clone, Debug, Copy)]
#[derive(Clone, Debug, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum IsModule {
Bool(bool),
Unknown,
@ -88,6 +88,14 @@ impl Default for IsModule {
}
}
impl Merge for IsModule {
fn merge(&mut self, other: Self) {
if *self == Default::default() {
*self = other;
}
}
}
impl Serialize for IsModule {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@ -207,9 +215,6 @@ pub struct Options {
#[serde(default)]
pub source_root: Option<String>,
#[serde(default)]
pub is_module: IsModule,
#[serde(default)]
pub output_path: Option<PathBuf>,
@ -297,7 +302,7 @@ impl Options {
cfg.adjust(base);
}
let is_module = self.is_module;
let is_module = self.config.is_module;
let mut source_maps = self.source_maps.clone();
source_maps.merge(cfg.source_maps.clone());
@ -821,6 +826,9 @@ pub struct Config {
#[serde(default)]
pub error: ErrorConfig,
#[serde(default)]
pub is_module: IsModule,
#[serde(rename = "$schema")]
pub schema: Option<String>,
}

View File

@ -1,7 +1,7 @@
use std::path::{Path, PathBuf};
use swc::{
config::{IsModule, Options},
config::{Config, IsModule, Options},
try_with_handler, Compiler, HandlerOpts,
};
use swc_common::{errors::ColorConfig, sync::Lrc, FilePathMapping, SourceMap};
@ -17,8 +17,11 @@ fn file(f: impl AsRef<Path>) -> NormalizedOutput {
fm,
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
swcrc: true,
is_module: IsModule::Bool(true),
..Default::default()
},
);
@ -67,8 +70,11 @@ fn fixture(input: PathBuf) {
fm,
handler,
&Options {
config: Config {
is_module: IsModule::Unknown,
..Default::default()
},
swcrc: true,
is_module: IsModule::Unknown,
..Default::default()
},

View File

@ -48,7 +48,10 @@ fn file_with_opt(filename: &str, options: Options) -> Result<NormalizedOutput, S
fm,
&handler,
&Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..options.config
},
..options
},
);
@ -83,7 +86,10 @@ fn compile_str(
fm,
&handler,
&Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..options.config
},
..options
},
);
@ -125,7 +131,10 @@ fn project(dir: &str) {
if c.read_config(
&Options {
swcrc: true,
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
..Default::default()
},
@ -142,8 +151,10 @@ fn project(dir: &str) {
&handler,
&Options {
swcrc: true,
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
..Default::default()
},
) {
@ -192,8 +203,11 @@ fn par_project(dir: &str) {
fm,
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
swcrc: true,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Bool(true)),
..Default::default()
},
@ -544,8 +558,8 @@ fn issue_879() {
let f = file_with_opt(
"tests/projects/issue-879/input.ts",
Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
env: Some(Default::default()),
module: Some(ModuleConfig::CommonJs(Default::default())),
jsc: JscConfig {
@ -619,8 +633,8 @@ fn issue_1549() {
let output = str_with_opt(
"const a = `\r\n`;",
Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
target: Some(EsVersion::Es5),
..Default::default()
@ -641,8 +655,8 @@ fn deno_10282_1() {
let output = str_with_opt(
"const a = `\r\n`;",
Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
target: Some(EsVersion::Es3),
..Default::default()
@ -663,8 +677,8 @@ fn deno_10282_2() {
let output = str_with_opt(
"const a = `\r\n`;",
Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
target: Some(EsVersion::Es2020),
..Default::default()
@ -717,8 +731,8 @@ fn should_visit() {
None,
&handler,
&swc::config::Options {
is_module: IsModule::Bool(true),
config: swc::config::Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
syntax: Some(Syntax::Es(EsConfig {
jsx: true,
@ -830,9 +844,9 @@ fn tests(input_dir: PathBuf) {
&handler,
&Options {
swcrc: true,
is_module: IsModule::Bool(true),
output_path: Some(output.join(entry.file_name())),
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
external_helpers: true.into(),
..Default::default()
@ -930,8 +944,8 @@ fn issue_2224() {
private readonly property = TestClass.name;
}"#,
Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
syntax: Some(Syntax::Typescript(TsConfig {
decorators: true,

View File

@ -86,6 +86,7 @@ fn shopify_1_check_filename() {
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
syntax: Some(Syntax::Es(EsConfig {
jsx: true,
@ -98,7 +99,6 @@ fn shopify_1_check_filename() {
})),
..Default::default()
},
is_module: IsModule::Bool(true),
..Default::default()
},
|_, _: &SingleThreadedComments| {
@ -128,6 +128,7 @@ fn shopify_2_same_opt() {
let opts = Options {
config: Config {
is_module: IsModule::Bool(true),
env: None,
test: None,
exclude: None,
@ -163,7 +164,6 @@ fn shopify_2_same_opt() {
env_name: "development".into(),
source_maps: Some(SourceMapsConfig::Bool(false)),
source_file_name: Some("/Users/kdy1/projects/example-swcify/src/App/App.tsx".into()),
is_module: IsModule::Bool(true),
..Default::default()
};
@ -206,6 +206,7 @@ fn shopify_3_reduce_defaults() {
let opts = Options {
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
syntax: Some(Syntax::Typescript(TsConfig {
tsx: true,
@ -225,7 +226,6 @@ fn shopify_3_reduce_defaults() {
env_name: "development".into(),
source_maps: Some(SourceMapsConfig::Bool(false)),
source_file_name: Some("/Users/kdy1/projects/example-swcify/src/App/App.tsx".into()),
is_module: IsModule::Bool(true),
..Default::default()
};
@ -268,6 +268,7 @@ fn shopify_4_reduce_more() {
let opts = Options {
config: Config {
is_module: IsModule::Bool(true),
jsc: JscConfig {
syntax: Some(Syntax::Es(EsConfig {
jsx: true,
@ -282,7 +283,6 @@ fn shopify_4_reduce_more() {
env_name: "development".into(),
source_maps: Some(SourceMapsConfig::Bool(false)),
source_file_name: Some("/Users/kdy1/projects/example-swcify/src/App/App.tsx".into()),
is_module: IsModule::Bool(true),
..Default::default()
};

View File

@ -17,7 +17,10 @@ fn compile(src: &str, options: Options) -> String {
fm,
&handler,
&Options {
is_module: IsModule::Bool(true),
config: Config {
is_module: IsModule::Bool(true),
..options.config
},
..options
},
);
@ -154,7 +157,10 @@ fn is_module_unknown_script() {
source,
Options {
swcrc: false,
is_module: IsModule::Unknown,
config: Config {
is_module: IsModule::Unknown,
..Default::default()
},
..Default::default()
},
);
@ -171,7 +177,10 @@ fn is_module_unknown_module() {
source,
Options {
swcrc: false,
is_module: IsModule::Unknown,
config: Config {
is_module: IsModule::Unknown,
..Default::default()
},
..Default::default()
},
);

View File

@ -30,11 +30,11 @@ fn file(f: &str) -> Result<(), StdErr> {
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
inline_sources_content: true.into(),
..Default::default()
},
swcrc: true,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Bool(true)),
..Default::default()
},
@ -85,11 +85,11 @@ fn inline(f: &str) -> Result<(), StdErr> {
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
inline_sources_content: true.into(),
..Default::default()
},
swcrc: true,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Str(String::from("inline"))),
..Default::default()
},
@ -162,8 +162,11 @@ fn stacktrace(input_dir: PathBuf) {
fm,
&handler,
&Options {
config: Config {
is_module: IsModule::Bool(true),
..Default::default()
},
swcrc: true,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Str("inline".to_string())),
..Default::default()
},
@ -317,9 +320,9 @@ fn should_work_with_emit_source_map_columns() {
&handler,
&Options {
swcrc: false,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Bool(true)),
config: Config {
is_module: IsModule::Bool(true),
inline_sources_content: true.into(),
emit_source_map_columns: true.into(),
..Default::default()
@ -352,9 +355,9 @@ fn should_work_with_emit_source_map_columns() {
&handler,
&Options {
swcrc: false,
is_module: IsModule::Bool(true),
source_maps: Some(SourceMapsConfig::Bool(true)),
config: Config {
is_module: IsModule::Bool(true),
inline_sources_content: true.into(),
emit_source_map_columns: false.into(),
..Default::default()

View File

@ -129,8 +129,6 @@ fn compile(input: &Path, output: &Path, opts: Options) {
fm,
&handler,
&Options {
is_module: IsModule::Bool(true),
config: Config {
jsc: JscConfig {
syntax: Some(Syntax::Typescript(TsConfig {
@ -145,6 +143,7 @@ fn compile(input: &Path, output: &Path, opts: Options) {
source_maps: Some(SourceMapsConfig::Bool(
!input.to_string_lossy().contains("Unicode"),
)),
is_module: IsModule::Bool(true),
..opts.config
},
..opts

View File

@ -212,6 +212,7 @@ impl SwcLoader {
module: None,
minify: false.into(),
input_source_map: InputSourceMap::Bool(false).into(),
is_module: IsModule::Bool(true),
..c.clone()
}
},
@ -226,7 +227,6 @@ impl SwcLoader {
root: None,
swcrc: true,
env_name: { env::var("NODE_ENV").unwrap_or_else(|_| "development".into()) },
is_module: IsModule::Bool(true),
..Default::default()
},
&fm.name,