mirror of
https://github.com/swc-project/swc.git
synced 2024-10-04 20:28:43 +03:00
feat(es/config): Add isModule
to .swcrc
(#4993)
This commit is contained in:
parent
4da4d4dd01
commit
e85c0db926
@ -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()
|
||||
},
|
||||
)
|
||||
|
@ -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()
|
||||
},
|
||||
);
|
||||
|
@ -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>,
|
||||
}
|
||||
|
@ -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()
|
||||
},
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
};
|
||||
|
||||
|
@ -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()
|
||||
},
|
||||
);
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user