如何在nuxt中添加flow(flowtype)支持?

时间:2017-12-12 09:04:19

标签: webpack vue.js babel flowtype nuxt.js

我想为nuxt项目添加流支持(我的项目使用webpack和babel)。我可以在某个地方找到一个有效的例子吗?

如果我运行flow check,则没有错误,当我运行yarn run dev时,包含语法错误。

(我知道那里有unanswered questions,我再次提出同样的问题,希望这次会有一些人知道这个问题。)

由于

1 个答案:

答案 0 :(得分:1)

要配置很多东西。让我指导你完成这个过程。

TLDR :使用wemake-vue-template。它附带nuxtflow和许多其他好东西。

巴别

首先,我们需要配置babel。这就是babel配置的样子:

{
  "presets": [
    ["vue-app", {
      "useBuiltIns": true
    }],
    "flow"
  ]
}

使用npm install --save-dev babel-preset-flow babel-preset-vue-app安装这些礼物。

Eslint

接下来,我们需要配置eslint来lint我们的flow文件。这就是.eslintrc的样子:

{
  "root": true,
  "plugins": [
    "flowtype-errors"
  ],
  "env": {
    "node": true,
    "browser": true
  },
  "rules": {
    // raise flow errors
    "flowtype-errors/show-errors": 2,
    "flowtype-errors/show-warnings": 1,
    // "flowtype-errors/enforce-min-coverage": [2, 50]
  },
  "parserOptions": {
    "parser": "babel-eslint",
    "ecmaVersion": 2017,
    "sourceType": "module"
  }
}

确保已安装好所有内容。

.flowconfig

这是最难的部分。您需要为flow指定配置。它可能因您的设置而异。

[ignore]
./nuxt/*
<PROJECT_ROOT>/node_modules/.*config-chain/test/broken.json

[include]
<PROJECT_ROOT>/client
<PROJECT_ROOT>/

[libs]

[lints]
all=warn
untyped-import=off
unsafe-getters-setters=off

[options]
include_warnings=true
esproposal.decorators=ignore
module.name_mapper='^~' -> '<PROJECT_ROOT>/client'
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=client
module.file_ext=.vue
module.file_ext=.js

nuxt.config.js

最后一步。我们需要在每次更改时启用linting。

 build: {
    extend (config, { isDev, isClient }) {
      if (isDev && isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        })
     }
  }

那就是它。现在,您将进行flow类型检查。