father icon indicating copy to clipboard operation
father copied to clipboard

feat: support to use swc as transformer

Open moecasts opened this issue 2 years ago • 12 comments

add swc transformer

moecasts avatar Oct 06 '22 11:10 moecasts

补一下 alias 的单元测试看看。

fz6m avatar Oct 06 '22 15:10 fz6m

补一下 alias 的单元测试看看。

已补。 顺便提个建议,能根据 transformer 的类型来划分测试用例,现在用

cjs -> esbuild
esm -> babel

的方式不太方便扩展,像这次要新增一个 swc transformer 的话,测试用例感觉放哪都不太合适。

moecasts avatar Oct 06 '22 16:10 moecasts

  1. alias 的逻辑还有些问题,尝试:

    // .fatherrc.ts
    
    export default {
      alias: {
        '@': path.join(__dirname, 'src/dir'),
        '@dir': path.join(__dirname, 'src/dir'),
      },
    };
    
    import '@/file'
    import '@dir'
    

    产物结果会达不到预期。

  2. swc 在 npm / yarn 安装下会将所有的平台版本都装一遍,至少也要几十 M ,这对于不使用 swc 作为 transform 的用户成本太高,可参考 umi 中自动安装依赖的逻辑改进( https://github.com/umijs/umi/blob/master/packages/preset-umi/src/features/depsOnDemand/depsOnDemand.ts )

  3. judgeSomeisSome

  4. 使用 jsc.paths 时,baseUrl 是必须的,参见:https://swc.rs/docs/configuration/compilation#jscpaths

fz6m avatar Oct 06 '22 16:10 fz6m

@fz6m 1, 3, 4 已搞定。 2 尝试了下,不太行。 swc transformer 依赖了 swc/core,如果不在 father 里装的话会提示找不到包。commit

moecasts avatar Oct 06 '22 19:10 moecasts

看一下 ci 单测挂了

fz6m avatar Oct 07 '22 14:10 fz6m

看一下 ci 单测挂了

再看看?await import() 语法好像会中断测试运行,改成了 await require()

moecasts avatar Oct 07 '22 15:10 moecasts

Codecov Report

Base: 94.86% // Head: 94.21% // Decreases project coverage by -0.65% :warning:

Coverage data is based on head (2230444) compared to base (b3fb8da). Patch coverage: 86.79% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #527      +/-   ##
==========================================
- Coverage   94.86%   94.21%   -0.66%     
==========================================
  Files          49       51       +2     
  Lines        1266     1365      +99     
  Branches      276      300      +24     
==========================================
+ Hits         1201     1286      +85     
- Misses         64       78      +14     
  Partials        1        1              
Impacted Files Coverage Δ
src/features/configBuilder/configBuilder.ts 100.00% <ø> (ø)
src/preset.ts 100.00% <ø> (ø)
src/builder/bundless/loaders/javascript/swc.ts 79.10% <79.10%> (ø)
src/builder/bundless/loaders/javascript/babel.ts 92.50% <100.00%> (-0.53%) :arrow_down:
src/builder/utils.ts 100.00% <100.00%> (ø)
src/features/depsOnDemand/swc.ts 100.00% <100.00%> (ø)
src/types.ts 100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

codecov[bot] avatar Oct 07 '22 16:10 codecov[bot]

顺便提个建议,能根据 transformer 的类型来划分测试用例

的确是个问题,后面想办法优化下,之前因为默认 cjs 走 esbuild、esm 走 babel 正好都测到了

PeachScript avatar Oct 07 '22 16:10 PeachScript

@moecasts 还差点覆盖率,有空补一下么,这个 feature 可以发 minor 了

PeachScript avatar Oct 14 '22 02:10 PeachScript

@moecasts 还差点覆盖率,有空补一下么,这个 feature 可以发 minor 了

@PeachScript 好的,我晚上或明天补下

moecasts avatar Oct 14 '22 08:10 moecasts

@PeachScript swc 有个比较严重的 bug,估计不能发先了 https://github.com/swc-project/swc/issues/6159

moecasts avatar Oct 15 '22 06:10 moecasts

@moecasts 还差点覆盖率,有空补一下么,这个 feature 可以发 minor 了

已补

moecasts avatar Oct 15 '22 10:10 moecasts

@PeachScript swc 有个比较严重的 bug,估计先不能发了 swc-project/swc#6159

@PeachScript @fz6m swcbug 已修复,求大佬们 CR~

moecasts avatar Oct 18 '22 01:10 moecasts

@moecasts bundless-alias-swcbundless-swc-alias 这俩用例有啥区别么,是不是留 cjsesm 都配置 swc 的就行?

PeachScript avatar Oct 18 '22 06:10 PeachScript

@moecasts bundless-alias-swcbundless-swc-alias 这俩用例有啥区别么,是不是留 cjsesm 都配置 swc 的就行?

@PeachScript 合代码的时候出错了,保留 bundless-swc-alias 就行,cjsesm 都改成了 swc

moecasts avatar Oct 18 '22 06:10 moecasts

@moecasts 平时用钉钉么,要不加个好友 👀

PeachScript avatar Oct 25 '22 03:10 PeachScript

@PeachScript 加了,不过钉钉比较少用。

moecasts avatar Oct 25 '22 06:10 moecasts