ecomfe / san-cli

A CLI Tooling based on San.js for rapid development.

Home Page:https://ecomfe.github.io/san-cli

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug]san-loader与ts-loader一起使用,watch模式下编译报错

xueran opened this issue · comments

Version
san-cli/packages/san-loader版本0.1.1

Describe the bug
实际项目中,.san文件里面的script采用lang="ts"编写,然后ts编译采用ts-loader,开启watch模式的时候,除了第一次编译正常,后面更新代码触发watch重新编译,会报错

使用san-loader里面提供的example例子也可以复现,把babel-loader换成ts-loader,一些.ts文件也会过san-loader,导致编译报错

To Reproduce

1、cd san-cli/packages/san-loader/examples
2、修改src/components/comp-component.san,script添加 lang="ts"
3、修改package.json,build命令添加--watch

"scripts": {
         "start": "http-server -c-1 dist",       
          "build": "webpack --watch"
     }

4、修改webpack.config.js,把.ts的编译从babel-loader换成ts-loader

{
    test: /\.ts$/,
    use: [
          {
               loader: 'ts-loader',
               options: {
                   appendTsSuffixTo: [/\.san$/] // 给.san文件添加.ts后缀
                }
         }
     ]
}

5、在san-loader的lib/loader.js的入口打调试信息,输出文件路径

console.log('san-loader', this.resourcePath);

6、运行npm run build,第一次编译经过的san-loader文件正常,文件再修改一次的时候,触发watch编译,然后经过san-loader的文件就不对了,一些ts文件也会直接过san-loader编译,log如下

san-loader /Users/yuanxueran/Documents/code/baidu/san-cli/packages/san-loader/examples/src/components/ts/comp-simple-ts/index.ts
san-loader /Users/yuanxueran/Documents/code/baidu/san-cli/packages/san-loader/examples/src/components/comp-component.san
san-loader /Users/yuanxueran/Documents/code/baidu/san-cli/packages/san-loader/examples/types/index.d.ts
san-loader /Users/yuanxueran/Documents/code/baidu/san-cli/packages/san-loader/examples/src/components/comp-component.san

Expected behavior.
触发watch编译的时候,ts文件不应该过san-loader才对

已经线下沟通,并非bug,关掉了~

求问这个是怎么解决的呀