Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/docs/guide/usage/linter/generated-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,9 @@ default: `null`

JS plugins.

Note: JS plugins are experimental and not subject to semver.
They are not supported in language server at present.

## overrides

type: `array`
Expand All @@ -171,6 +174,9 @@ type: `string[]`

JS plugins for this override.

Note: JS plugins are experimental and not subject to semver.
They are not supported in language server at present.

#### overrides[n].rules

type: `object`
Expand Down
8 changes: 5 additions & 3 deletions src/docs/guide/usage/linter/generated-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The progress of all rule implementations is tracked [here](https://github.com/oxc-project/oxc/issues/481).

- Total number of rules: 602
- Total number of rules: 604
- Rules turned on by default: 103

**Legend for 'Fixable?' column:**
Expand Down Expand Up @@ -235,7 +235,7 @@ Code that can be written to run faster.
| [prefer-array-flat-map](/docs/guide/usage/linter/rules/unicorn/prefer-array-flat-map.html) | unicorn | | 🛠️ |
| [prefer-set-has](/docs/guide/usage/linter/rules/unicorn/prefer-set-has.html) | unicorn | | ⚠️🛠️️ |

## Restriction (74):
## Restriction (75):

Lints which prevent the use of language and library features. Must not be enabled as a whole, should be considered on a case-by-case basis before enabling.

Expand Down Expand Up @@ -314,9 +314,10 @@ Lints which prevent the use of language and library features. Must not be enable
| [prefer-node-protocol](/docs/guide/usage/linter/rules/unicorn/prefer-node-protocol.html) | unicorn | | 🛠️ |
| [prefer-number-properties](/docs/guide/usage/linter/rules/unicorn/prefer-number-properties.html) | unicorn | | ⚠️🛠️️ |
| [max-props](/docs/guide/usage/linter/rules/vue/max-props.html) | vue | | |
| [no-import-compiler-macros](/docs/guide/usage/linter/rules/vue/no-import-compiler-macros.html) | vue | | ⚠️🛠️️ |
| [no-multiple-slot-args](/docs/guide/usage/linter/rules/vue/no-multiple-slot-args.html) | vue | | 🚧 |

## Suspicious (46):
## Suspicious (47):

code that is most likely wrong or useless.

Expand Down Expand Up @@ -368,6 +369,7 @@ code that is most likely wrong or useless.
| [require-module-specifiers](/docs/guide/usage/linter/rules/unicorn/require-module-specifiers.html) | unicorn | | 🛠️ |
| [require-post-message-target-origin](/docs/guide/usage/linter/rules/unicorn/require-post-message-target-origin.html) | unicorn | | 💡 |
| [no-required-prop-with-default](/docs/guide/usage/linter/rules/vue/no-required-prop-with-default.html) | vue | | 🚧 |
| [require-default-export](/docs/guide/usage/linter/rules/vue/require-default-export.html) | vue | | |

## Pedantic (101):

Expand Down
2 changes: 1 addition & 1 deletion src/docs/guide/usage/linter/rules/version.data.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export default {
load() {
return "d16df93cf48e1ed143f54797842f84116484b4ba";
return "11e0440fd2a7b9b4df14f5e0c72999d13e1c861b";
},
};
75 changes: 75 additions & 0 deletions src/docs/guide/usage/linter/rules/vue/no-import-compiler-macros.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<!-- This file is auto-generated by tasks/website/src/linter/rules/doc_page.rs. Do not edit it manually. -->

<script setup>
import { data } from '../version.data.js';
const source = `https://github.com/oxc-project/oxc/blob/${ data }/crates/oxc_linter/src/rules/vue/no_import_compiler_macros.rs`;
</script>

# vue/no-import-compiler-macros <Badge type="info" text="Restriction" />

<div class="rule-meta">
<Alert class="fix" type="info">
<span class="emoji">⚠️🛠️️</span> A dangerous auto-fix is available for this rule.
</Alert>
</div>

### What it does

Disallow importing Vue compiler macros.

### Why is this bad?

Compiler Macros like:

- `defineProps`
- `defineEmits`
- `defineExpose`
- `withDefaults`
- `defineModel`
- `defineOptions`
- `defineSlots`

are globally available in Vue 3's `<script setup>` and do not require explicit imports.

### Examples

Examples of **incorrect** code for this rule:

```vue
<script setup>
import { defineProps, withDefaults } from "vue";
</script>
```

Examples of **correct** code for this rule:

```vue
<script setup>
import { ref } from "vue";
</script>
```

## How to use

To **enable** this rule in the CLI or using the config file, you can use:

::: code-group

```bash [CLI]
oxlint --deny vue/no-import-compiler-macros --vue-plugin
```

```json [Config (.oxlintrc.json)]
{
"plugins": ["vue"],
"rules": {
"vue/no-import-compiler-macros": "error"
}
}
```

:::

## References

- <a v-bind:href="source" target="_blank" rel="noreferrer">Rule Source</a>
69 changes: 69 additions & 0 deletions src/docs/guide/usage/linter/rules/vue/require-default-export.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<!-- This file is auto-generated by tasks/website/src/linter/rules/doc_page.rs. Do not edit it manually. -->

<script setup>
import { data } from '../version.data.js';
const source = `https://github.com/oxc-project/oxc/blob/${ data }/crates/oxc_linter/src/rules/vue/require_default_export.rs`;
</script>

# vue/require-default-export <Badge type="info" text="Suspicious" />

<div class="rule-meta">
</div>

### What it does

Require components to be the default export.

### Why is this bad?

Using SFCs (Single File Components) without a default export is
not supported in Vue 3. Components should be exported as the default export.

### Examples

Examples of **incorrect** code for this rule:

```vue
<script>
const foo = "foo";
</script>
```

Examples of **correct** code for this rule:

```vue
<script>
export default {
data() {
return {
foo: "foo",
};
},
};
</script>
```

## How to use

To **enable** this rule in the CLI or using the config file, you can use:

::: code-group

```bash [CLI]
oxlint --deny vue/require-default-export --vue-plugin
```

```json [Config (.oxlintrc.json)]
{
"plugins": ["vue"],
"rules": {
"vue/require-default-export": "error"
}
}
```

:::

## References

- <a v-bind:href="source" target="_blank" rel="noreferrer">Rule Source</a>