@webflow/webflow-cli 2.3.0-next.0 → 2.4.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +181 -1
- package/dist/cloud-scaffolds/astro/.vscode/extensions.json +4 -0
- package/dist/cloud-scaffolds/astro/.vscode/launch.json +11 -0
- package/dist/cloud-scaffolds/astro/.vscode/settings.json +5 -0
- package/dist/cloud-scaffolds/astro/public/.assetsignore +2 -0
- package/dist/cloud-scaffolds/nextjs/.vscode/settings.json +5 -0
- package/dist/extension-scaffolds/default/.eslintrc +25 -0
- package/dist/extension-scaffolds/react/.eslintrc +25 -0
- package/dist/extension-scaffolds/typescript-alt/.eslintrc +25 -0
- package/dist/index.js +230 -144
- package/dist/index.js.map +1 -1
- package/dist/templates/static/wrangler.json +7 -0
- package/package.json +12 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @webflow/webflow-cli
|
|
2
2
|
|
|
3
|
+
## 2.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 18a2d43: Site ID resolution in `webflow cloud` and `webflow auth` now follows flag > `WEBFLOW_SITE_ID` env var > `webflow.json` order. Previously, `webflow.json` `siteId` took priority over the `WEBFLOW_SITE_ID` environment variable. This makes behavior consistent with the resolver used by all new CLI commands and allows CI/CD env vars to override the checked-in manifest as expected.
|
|
8
|
+
|
|
9
|
+
Note: `WEBFLOW_SITE_ID` now also takes precedence over `cloud.workspace_id` in `webflow.json`. A project configured for standalone/workspace deploys that has `WEBFLOW_SITE_ID` set in the environment will route to site-attached instead.
|
|
10
|
+
|
|
11
|
+
`webflow cloud deploy` now also respects `WEBFLOW_APP_ID` as an environment variable override for the app ID, and `WEBFLOW_WORKSPACE_ID` when resolving the workspace for a standalone-first deploy.
|
|
12
|
+
|
|
13
|
+
- 2875d7d: Two behavior changes for CI and agent callers, plus new internal path/archive safety utilities.
|
|
14
|
+
|
|
15
|
+
- **`--json` failures now go to stdout as a JSON document.** Previously a failure printed prose to stderr; it is now a single `{ "error": { "message", "context", "missingFlag" } }` document on stdout, written synchronously so a long message is not truncated when stdout is a pipe. `context` carries the operation the command was performing. The failure is also recorded, with its stack, in the session debug log. **Scripts that grep stderr for the failure message need updating.**
|
|
16
|
+
- **Non-interactive mode is auto-detected in more environments.** In addition to `CI=true` and a missing stdout TTY, `--no-input` is now enabled when stdin has no TTY or when a coding agent's execution environment is detected, so prompts no longer hang agent and CI invocations. A new `--input` flag forces interactive mode, for the case where the detection misreads a human environment.
|
|
17
|
+
|
|
18
|
+
- 2d85a3e: Add the `webflow skills` namespace — install, update, list, and remove Webflow's first-party agent skills into your coding agents' skill directories.
|
|
19
|
+
|
|
20
|
+
- `webflow skills install [names...]` — fetches the skill catalog, writes each skill once into a shared canonical store, and links it into every selected agent's directory. Symlinks by default with an automatic per-target fallback to copying (`--copy` forces copies). Records what it wrote in a lockfile — `webflow-skills-lock.json` for a project, `skills-lock.json` under the CLI config directory for a `--global` install — so `install` with no names restores an existing set reproducibly. `--ref <branch|sha>` pins to a branch or commit.
|
|
21
|
+
- `webflow skills update [names...]` — re-resolves the pinned ref and updates installed skills, reporting each one as unchanged, updated, moved, reinstalled, or blocked. `--check` reports what would change and writes nothing.
|
|
22
|
+
- `webflow skills list` — shows what is installed in both scopes with a per-skill status (`up-to-date`, `modified`, `missing`, `unmanaged`) computed by re-hashing what is on disk against the lockfile. Never touches the network. Supports `--fields`, `--sort-by`, and `--order`.
|
|
23
|
+
- `webflow skills remove [names...]` — unlinks a skill from every agent and deletes its store directory once nothing references it any more.
|
|
24
|
+
|
|
25
|
+
Every command supports `--json`, every write command supports `--dry-run`, and `-a, --agent` selects specific coding agents (repeatable, comma-separated, or `all`). `-g, --global` and `-p, --project` select the scope. A skill directory is only ever replaced without `--force` when the CLI itself wrote it and it has not been edited since — and `remove` applies the same rule to deletion, so a skill directory another tool installed (or one you wrote yourself) is left alone unless you pass `--force`.
|
|
26
|
+
|
|
27
|
+
Because `--global` installs write into agent directories under your home directory, a skill directory is never replaced or deleted unless the CLI itself wrote it and it has not been edited since — anything else needs `--force`. Archives are extracted through hardened path-containment checks, and `--dry-run` prints every path before any write happens.
|
|
28
|
+
|
|
29
|
+
Also fixes a pre-existing issue affecting every command: the "New versions of the following @webflow packages are available" notice was written to stdout even under `--json`, so on any machine with a pending CLI update it appeared ahead of the JSON document and broke `JSON.parse` on the output. The update check is now skipped when `--json` is in effect.
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- 12bcf3b: Deprecate `webflow cloud list` ahead of removal. The command still works but prints a warning — it lists scaffold templates for `init`, not the user's Cloud apps. Help text is tagged `[Deprecated]`; use `cloud`/`apps` `init --framework` / `--help` for templates (and `webflow apps list` for apps on `@next`).
|
|
34
|
+
- 2dbf0ae: Update `tar` to a patched version that prevents decompression denial-of-service attacks.
|
|
35
|
+
- 84dc26e: Fix the message shown when `webflow devlink sync` fails with a 404. It previously told users to apply for DevLink beta access; it now points to `webflow devlink export` and the migration guide.
|
|
36
|
+
- 0f8a85f: Explain how to recover when a deploy cannot create an app. Hitting an app name that is already taken on the site, or a site that has reached its Cloud app limit, previously reported only "An unknown error occurred". Both now say what happened and how to proceed. The usual cause is `app_id` missing from `webflow.json`, for example on a fresh CI checkout.
|
|
37
|
+
- f7efc3d: Pin the transitive `adm-zip` dependency (pulled in via `@module-federation/enhanced` → `dts-plugin`) to `^0.6.0` via an npm override, fixing a high-severity denial-of-service vulnerability (CVE-2026-39244) where a crafted ZIP file could trigger an unbounded ~4GB memory allocation.
|
|
38
|
+
- b4e08db: Internal refactor: added a `resolveOptionalResourceId` helper to collapse repeated try/catch blocks around `resolveResourceId` in the cloud deploy/preflight code paths. No user-facing behavior change.
|
|
39
|
+
- 903c4a4: Bump transitive `undici` dependency (pulled in via `@module-federation/enhanced`) to 7.28.0 to fix a WebSocket client denial-of-service vulnerability (CVE-2026-12151).
|
|
40
|
+
- @webflow/data-types@2.1.0
|
|
41
|
+
|
|
3
42
|
## 2.2.0
|
|
4
43
|
|
|
5
44
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ npm install -g @webflow/webflow-cli
|
|
|
19
19
|
- [DevLink Export](#devlink-export)
|
|
20
20
|
- [Designer Extensions](#designer-extensions)
|
|
21
21
|
- [Apps (Webflow Cloud)](#apps-webflow-cloud)
|
|
22
|
+
- [Skills (agent skills)](#skills-agent-skills)
|
|
22
23
|
- [Global Options](#global-options)
|
|
23
24
|
|
|
24
25
|
---
|
|
@@ -36,15 +37,48 @@ webflow auth login --force # Re-authenticate even if credentials exist
|
|
|
36
37
|
|
|
37
38
|
## Sites
|
|
38
39
|
|
|
39
|
-
Manage Webflow sites from the CLI.
|
|
40
|
+
Manage Webflow sites from the CLI, and keep a project directory's local source files (page bodies, styles, variables) in sync with the Designer.
|
|
40
41
|
|
|
41
42
|
```shell
|
|
42
43
|
webflow sites list # List all sites in your workspace
|
|
43
44
|
webflow sites get <siteId> # Get details for a specific site
|
|
44
45
|
webflow sites domains --site <siteId> # List custom domains for a site
|
|
45
46
|
webflow sites publish --site <siteId> # Publish a site
|
|
47
|
+
webflow sites init # Bind this project to an existing site, or create a new one
|
|
48
|
+
webflow sites init --site-id <siteId> # Bind without the interactive picker (CI/scripted setup)
|
|
49
|
+
webflow sites init --create --name "My Site" # Create a new site and bind to it
|
|
50
|
+
webflow sites pull # Write the site's source files locally
|
|
51
|
+
webflow sites push # Push local changes back to the site
|
|
52
|
+
webflow sites push --dry-run # Preview what push would send
|
|
46
53
|
```
|
|
47
54
|
|
|
55
|
+
> `sites init`, `sites pull` and `sites push` are in beta and ship only in `@next` builds (`npm i -g @webflow/webflow-cli@next`). They aren't registered in the stable release yet.
|
|
56
|
+
|
|
57
|
+
By default, pages materialize under `src/pages/<slug>.tsw` (the default page as `index.tsw`), components under `src/components/<name>.tsw`, and design-system theme modules under `src/theme/`. Styles and variables have no framework convention to follow, so they land at `site/styles/` and `site/variables/`. A `.webflow/wfs/` lockfile (one file per tracked path, plus an `index.json`) records which site the project is synced with and each file's last-synced hash, so `push` can detect conflicting Designer edits.
|
|
58
|
+
|
|
59
|
+
Set `site.layout` in `webflow.json` to use a different framework's layout:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"siteId": "...",
|
|
64
|
+
"site": {
|
|
65
|
+
"layout": { "preset": "nextjs" }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Preset | Shape |
|
|
71
|
+
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
72
|
+
| `library`/`astro` | Flat `src/pages/<slug>.tsw` + `src/components/<name>.tsw` (the default) |
|
|
73
|
+
| `nextjs` | Next.js App Router — one folder per route segment, nested `page.tsw` (`src/app/<slug>/page.tsw`, home at `src/app/page.tsw`) |
|
|
74
|
+
| `nextjs-pages` | Next.js Pages Router — flat `pages/<slug>.tsw` |
|
|
75
|
+
|
|
76
|
+
A page nested under a Designer Page Folder (e.g. `/blog/en/about`) mirrors that subpath locally (`<pagesRoot>/blog/en/about.tsw`, or `.../blog/en/about/page.tsw` under the `nextjs` shape). A component's Designer group maps to a local subfolder under `componentsRoot` — `src/components/ui/Card.tsw` and a flat `src/components/Card.tsw` are distinct components. Explicit `pagesRoot`/`componentsRoot`/`pagesShape` (`"flat"` or `"nested"`) override a preset's defaults, or can be set without a preset at all. The theme root isn't configured directly — it's derived as a sibling of whatever `pagesRoot` and `componentsRoot` have in common, so `src/pages` + `src/components` puts theme modules at `src/theme`.
|
|
77
|
+
|
|
78
|
+
Pulled `.tsw` files are formatted with Prettier, honoring the project's own Prettier config when it has one.
|
|
79
|
+
|
|
80
|
+
A project is bound to one site: the lockfile records which site it was pulled from, and both commands refuse to run against a different one. Use `sites pull --site-id <other> --reset` to repoint a project at another site — it discards the existing sync state and pulls from scratch.
|
|
81
|
+
|
|
48
82
|
### `sites list` options
|
|
49
83
|
|
|
50
84
|
| Flag | Description |
|
|
@@ -61,6 +95,34 @@ webflow sites publish --site <siteId> # Publish a site
|
|
|
61
95
|
| `--page <pageId>` | Publish a single page instead of the full site |
|
|
62
96
|
| `--dry-run` | Preview what would be published without triggering a build |
|
|
63
97
|
|
|
98
|
+
### `sites init` options
|
|
99
|
+
|
|
100
|
+
| Flag | Description |
|
|
101
|
+
| --------------------- | --------------------------------------------------------------- |
|
|
102
|
+
| `--site-id <siteId>` | Skip the interactive picker and bind to this site ID |
|
|
103
|
+
| `--create` | Create a new Webflow site instead of binding to an existing one |
|
|
104
|
+
| `--name <name>` | Name for the new site (implies `--create`; skips the prompt) |
|
|
105
|
+
| `--api-token <token>` | Use this token instead of the stored session |
|
|
106
|
+
|
|
107
|
+
### `sites pull` options
|
|
108
|
+
|
|
109
|
+
| Flag | Description |
|
|
110
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
111
|
+
| `--site-id <siteId>` | Pull this site instead of the one in `webflow.json`, without rebinding the project. Needs `--reset` if the project is already synced with another site |
|
|
112
|
+
| `--force` | Overwrite local files that changed both locally and in the Designer since the last sync (they're left alone by default) |
|
|
113
|
+
| `--reset` | Discard the existing local sync state and pull from scratch |
|
|
114
|
+
| `--json` | Output the pulled manifest and file list as JSON |
|
|
115
|
+
| `--api-token <token>` | Use this token instead of the stored session |
|
|
116
|
+
|
|
117
|
+
### `sites push` options
|
|
118
|
+
|
|
119
|
+
| Flag | Description |
|
|
120
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
121
|
+
| `--dry-run` | List the files that would be pushed without sending them |
|
|
122
|
+
| `--force` | Skip upstream conflict checks and re-push every tracked file, not just the ones that changed locally |
|
|
123
|
+
| `--json` | Output the push results as JSON |
|
|
124
|
+
| `--api-token <token>` | Use this token instead of the stored session |
|
|
125
|
+
|
|
64
126
|
---
|
|
65
127
|
|
|
66
128
|
## CMS
|
|
@@ -286,6 +348,124 @@ created/updated/skipped/errors breakdown and exits non-zero if any key fails
|
|
|
286
348
|
|
|
287
349
|
---
|
|
288
350
|
|
|
351
|
+
## Skills (agent skills)
|
|
352
|
+
|
|
353
|
+
Install Webflow's first-party agent skills into your coding agents, so an agent
|
|
354
|
+
working in your repo knows how to use Webflow without being told each time.
|
|
355
|
+
|
|
356
|
+
> **These commands write outside the current project.** A `--global` install
|
|
357
|
+
> writes into your coding agents' skill directories under your home directory. Two
|
|
358
|
+
> rules bound that: nothing is replaced or deleted unless the CLI wrote it and it
|
|
359
|
+
> has not been edited since (anything else needs `--force`), and `--dry-run` prints
|
|
360
|
+
> every path before a single byte is written. Run it first if you are unsure.
|
|
361
|
+
|
|
362
|
+
```shell
|
|
363
|
+
webflow skills install # Restore from a lockfile, or pick interactively
|
|
364
|
+
webflow skills install webflow-cms --dry-run # Preview every path that would be written
|
|
365
|
+
webflow skills install webflow-cms --agent claude-code,cursor
|
|
366
|
+
webflow skills install --all-skills --all-agents --global
|
|
367
|
+
webflow skills list # What is installed, and where
|
|
368
|
+
webflow skills update --check # Report what would change; write nothing
|
|
369
|
+
webflow skills update
|
|
370
|
+
webflow skills remove webflow-cms --dry-run # Preview exactly what is deleted
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Scope: project or global
|
|
374
|
+
|
|
375
|
+
| Scope | Where skills go | Lockfile |
|
|
376
|
+
| ------------------- | ------------------------------------------- | ---------------------------------------- |
|
|
377
|
+
| Project (default) | Agent directories under the current project | `webflow-skills-lock.json` (commit this) |
|
|
378
|
+
| Global (`--global`) | Agent directories under your home directory | `skills-lock.json` in the CLI config dir |
|
|
379
|
+
|
|
380
|
+
The project lockfile is meant to be committed: a teammate (or CI) runs
|
|
381
|
+
`webflow skills install` with no arguments and gets the same skills at the same
|
|
382
|
+
commit. `list` shows **both** scopes by default so a global install is never
|
|
383
|
+
invisible.
|
|
384
|
+
|
|
385
|
+
Each skill's files are written once into a shared canonical store and linked into
|
|
386
|
+
every selected agent's directory, so installing for twenty agents costs one copy.
|
|
387
|
+
Symlinks are used by default, with an automatic per-target fallback to copying
|
|
388
|
+
when the filesystem or platform refuses them; `--copy` forces copies everywhere.
|
|
389
|
+
|
|
390
|
+
### Safety
|
|
391
|
+
|
|
392
|
+
`install` and `update` refuse to overwrite a skill directory unless the CLI
|
|
393
|
+
wrote it and it has not been edited since — anything locally modified, or
|
|
394
|
+
anything that exists without a matching lockfile entry, is reported as blocked
|
|
395
|
+
and needs `--force`. `--dry-run` prints the exact absolute paths that would be
|
|
396
|
+
written or deleted and makes no changes, which is the flag to reach for first
|
|
397
|
+
when an agent chose the arguments.
|
|
398
|
+
|
|
399
|
+
### `skills install` options
|
|
400
|
+
|
|
401
|
+
| Flag | Description |
|
|
402
|
+
| --------------------- | ---------------------------------------------------------------------- |
|
|
403
|
+
| `-a, --agent <ids>` | Target agent; repeatable, comma-separated, or `all` |
|
|
404
|
+
| `--all-agents` | Install for every supported agent |
|
|
405
|
+
| `--all-skills` | Install every skill in the catalog |
|
|
406
|
+
| `-g, --global` | Install into your home directory instead of the current project |
|
|
407
|
+
| `-p, --project` | Install into the current project (the default) |
|
|
408
|
+
| `--copy` | Copy files instead of symlinking from the shared store |
|
|
409
|
+
| `--ref <branch\|sha>` | Pin to a branch or 40-character commit SHA (default: `main`) |
|
|
410
|
+
| `--force` | Replace destinations that were modified locally or installed elsewhere |
|
|
411
|
+
| `-y, --yes` | Skip the confirmation prompt |
|
|
412
|
+
| `--dry-run` | Print every path that would be written; change nothing |
|
|
413
|
+
| `--json` | Output as JSON |
|
|
414
|
+
|
|
415
|
+
### `skills update` options
|
|
416
|
+
|
|
417
|
+
| Flag | Description |
|
|
418
|
+
| --------------------- | ------------------------------------------------- |
|
|
419
|
+
| `--check` | Report what would change without writing anything |
|
|
420
|
+
| `-g, --global` | Update the home-directory install |
|
|
421
|
+
| `-p, --project` | Update the current project's install |
|
|
422
|
+
| `--ref <branch\|sha>` | Re-pin to a different branch or commit SHA |
|
|
423
|
+
| `--force` | Overwrite skills that were modified locally |
|
|
424
|
+
| `-y, --yes` | Skip the confirmation prompt |
|
|
425
|
+
| `--dry-run` | Preview without writing |
|
|
426
|
+
| `--json` | Output as JSON |
|
|
427
|
+
|
|
428
|
+
### `skills list` options
|
|
429
|
+
|
|
430
|
+
| Flag | Description |
|
|
431
|
+
| ------------------- | ----------------------------------------------------------------------------- |
|
|
432
|
+
| `-g, --global` | Only the home-directory install |
|
|
433
|
+
| `-p, --project` | Only the current project's install |
|
|
434
|
+
| `-a, --agent <ids>` | Only skills linked into these agents; repeatable and comma-separated |
|
|
435
|
+
| `--fields <fields>` | Comma-separated columns (name, dir, description, status, mode, agents, scope) |
|
|
436
|
+
| `--sort-by <field>` | Sort by name, dir, status, or scope (default: name) |
|
|
437
|
+
| `--order <dir>` | `asc` or `desc` (default: `asc`) |
|
|
438
|
+
| `--json` | Output as JSON |
|
|
439
|
+
|
|
440
|
+
`status` is computed offline by re-hashing what is on disk against what the
|
|
441
|
+
lockfile recorded: `up-to-date`, `modified` (edited since install), `missing`
|
|
442
|
+
(recorded but gone), or `unmanaged` (present with no lockfile entry). Checking
|
|
443
|
+
for _upstream_ changes needs the network and is `skills update --check`'s job.
|
|
444
|
+
|
|
445
|
+
### `skills remove` options
|
|
446
|
+
|
|
447
|
+
| Flag | Description |
|
|
448
|
+
| ------------------- | ------------------------------------------------------------- |
|
|
449
|
+
| `-a, --agent <ids>` | Only unlink from these agents; repeatable and comma-separated |
|
|
450
|
+
| `--all` | Remove every installed skill for the scope |
|
|
451
|
+
| `-g, --global` | Remove from the home-directory install |
|
|
452
|
+
| `-p, --project` | Remove from the current project's install |
|
|
453
|
+
| `--force` | Also remove skill directories that have no lockfile entry |
|
|
454
|
+
| `-y, --yes` | Skip the confirmation prompt |
|
|
455
|
+
| `--dry-run` | Print exactly what would be deleted; change nothing |
|
|
456
|
+
| `--json` | Output as JSON |
|
|
457
|
+
|
|
458
|
+
Removing a skill from one agent unlinks it there and keeps the shared store as
|
|
459
|
+
long as another agent still references it; the store directory is deleted once
|
|
460
|
+
nothing does.
|
|
461
|
+
|
|
462
|
+
`remove` only deletes what the lockfile records. A skill directory with no
|
|
463
|
+
lockfile entry was not installed by this CLI — it may belong to another tool, or
|
|
464
|
+
be hand-written — so `--all` leaves it alone and names it in a warning, and
|
|
465
|
+
naming it directly is refused. `--force` opts in to removing those too.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
289
469
|
## Global Options
|
|
290
470
|
|
|
291
471
|
Available on all commands:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"eslint:recommended",
|
|
4
|
+
"plugin:@typescript-eslint/eslint-recommended",
|
|
5
|
+
"plugin:@typescript-eslint/recommended"
|
|
6
|
+
],
|
|
7
|
+
"parser": "@typescript-eslint/parser",
|
|
8
|
+
"parserOptions": {
|
|
9
|
+
"project": "./tsconfig.json"
|
|
10
|
+
},
|
|
11
|
+
"plugins": ["@typescript-eslint", "promise"],
|
|
12
|
+
"rules": {
|
|
13
|
+
"@typescript-eslint/explicit-function-return-type": "off",
|
|
14
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
15
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
16
|
+
"@typescript-eslint/no-misused-promises": [
|
|
17
|
+
"error",
|
|
18
|
+
{ "checksVoidReturn": false }
|
|
19
|
+
],
|
|
20
|
+
"@typescript-eslint/no-unused-vars": "error",
|
|
21
|
+
"no-async-promise-executor": "error",
|
|
22
|
+
"require-await": "error",
|
|
23
|
+
"promise/catch-or-return": "error"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"eslint:recommended",
|
|
4
|
+
"plugin:@typescript-eslint/eslint-recommended",
|
|
5
|
+
"plugin:@typescript-eslint/recommended"
|
|
6
|
+
],
|
|
7
|
+
"parser": "@typescript-eslint/parser",
|
|
8
|
+
"parserOptions": {
|
|
9
|
+
"project": "./tsconfig.json"
|
|
10
|
+
},
|
|
11
|
+
"plugins": ["@typescript-eslint", "promise"],
|
|
12
|
+
"rules": {
|
|
13
|
+
"@typescript-eslint/explicit-function-return-type": "off",
|
|
14
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
15
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
16
|
+
"@typescript-eslint/no-misused-promises": [
|
|
17
|
+
"error",
|
|
18
|
+
{ "checksVoidReturn": false }
|
|
19
|
+
],
|
|
20
|
+
"@typescript-eslint/no-unused-vars": "error",
|
|
21
|
+
"no-async-promise-executor": "error",
|
|
22
|
+
"require-await": "error",
|
|
23
|
+
"promise/catch-or-return": "error"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"eslint:recommended",
|
|
4
|
+
"plugin:@typescript-eslint/eslint-recommended",
|
|
5
|
+
"plugin:@typescript-eslint/recommended"
|
|
6
|
+
],
|
|
7
|
+
"parser": "@typescript-eslint/parser",
|
|
8
|
+
"parserOptions": {
|
|
9
|
+
"project": "./tsconfig.json"
|
|
10
|
+
},
|
|
11
|
+
"plugins": ["@typescript-eslint", "promise"],
|
|
12
|
+
"rules": {
|
|
13
|
+
"@typescript-eslint/explicit-function-return-type": "off",
|
|
14
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
15
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
16
|
+
"@typescript-eslint/no-misused-promises": [
|
|
17
|
+
"error",
|
|
18
|
+
{ "checksVoidReturn": false }
|
|
19
|
+
],
|
|
20
|
+
"@typescript-eslint/no-unused-vars": "error",
|
|
21
|
+
"no-async-promise-executor": "error",
|
|
22
|
+
"require-await": "error",
|
|
23
|
+
"promise/catch-or-return": "error"
|
|
24
|
+
}
|
|
25
|
+
}
|