Parceljs在构建时忽略tsconfig.json的规则

时间:2020-03-16 11:22:39

标签: reactjs typescript parceljs

我目前正在使用打字稿和捆绑器ParcelJs进行React项目。我正在使用tsconfig.json文件来配置打字稿,但是由于我不知道的某些原因,Parcejs不会忽略它在构建时的所有错误。

例如,我编写的这段代码在打字稿中无效:

const message: number = "Hello world!";

我的陪同人员正确触发了此错误:

类型'“ Hello world!”'不能分配给类型'数字'

但是当我使用parcel ./src/index.tsx构建此文件时,它会编译而不会出错。

根据官方文档和this issue,我需要在ParcelJs配置文件.parcelrc中声明一个Validator

{
    "extends": "@parcel/config-default",
    "validators": {
        "*.{ts,tsx}": ["@parcel/validator-typescript"]
    }
}

包裹验证器需要安装在package.json中:

    ...
    "dependencies": {
        "@parcel/validator-typescript": "2.0.0-nightly.112",
        ...

所以最后我的项目结构如下:

├── .cache/
├── dist/
├── src/
│   ├── index.tsx
├── .parcelrc
├── package.json
├── tsconfig.json

注意:

  • 如果我在.parcelrc文件中写入了无效的json数据,则ParcelJs仍然可以成功构建而不会出现任何问题,就像忽略了配置文件一样

有人知道如何获取ParcelJ以考虑打字稿配置吗?

1 个答案:

答案 0 :(得分:1)

我认为2.0.0-nightly.112是在我制作this fix之前发布的。当我不小心安装了旧版本的包裹时,还有this issue咬住了我。您可以尝试安装parcel@parcel/validator-typescript的最新夜间版本,删除.parcel-cache文件夹并重试吗?如果那行不通,您介意共享一个回购协议,以便我尝试重现该问题吗?

另一种尝试是确保在包含yarn.lock的同一目录中有一个tsconfig.json文件。通过查看代码,我知道包裹有时会使用它来检测项目(以及tsconfig.json文件)的根目录。如果宗地找不到tsconfig.json文件,则由于this issue而不会进行类型检查。 (如果这是根本原因,则可能是我们应该使用Parcel修复的问题,但是进行测试将是一件好事。)

我正在解决的@parcel/validator-typescript的另一个当前问题是#4204,但是根据您的描述,我认为这不是造成您遭受打击的原因。