stoplightio / vscode-spectral

VS Code extension bringing the awesome Spectral JSON/YAML linter with OpenAPI/AsyncAPI support

Home Page:https://marketplace.visualstudio.com/items?itemName=stoplight.spectral

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error with extending ruleset from an NPM package

exoszajzbuk opened this issue · comments

The following error occurs when defining.spectral.js in a project repo which would extend a ruleset from a private NPM package (in this case @team-supercharge/oasg/ruleset)

import oasgRuleset from '@team-supercharge/oasg/ruleset';

export default {
  extends: oasgRuleset,
}

The extension seems to be trying to load the dependency from a CDN, previous versions (using Spectral 5) used to correctly trying to load the @team-supercharge/oasg/ruleset locally from the node_modules directory.

[Error - 09:43:31] An error occurred while validating document /Users/bali/Devel/project/api/spec.openapi.yaml: Unable to read ruleset at /Users/bali/Devel/project/.spectral.js. Error: Could not load https://cdn.skypack.dev/-/@team-supercharge/oasg@v10.0.2-2VJzdTnx52EvLlWlHHZk/dist=es2019,mode=raw/ruleset (imported by https://cdn.skypack.dev/@team-supercharge/oasg/ruleset): Error fetching https://cdn.skypack.dev/-/@team-supercharge/oasg@v10.0.2-2VJzdTnx52EvLlWlHHZk/dist=es2019,mode=raw/ruleset: Not Found

When using a YAML ruleset .spectral.yaml the following error occurs:

extends: '@team-supercharge/oasg/ruleset'
[Error - 09:59:44] An error occurred while validating document /Users/bali/Devel/project/api/spec.openapi.yaml: Unable to read ruleset at /Users/bali/Devel/project/.spectral.yaml. Error: Could not load /Users/bali/Devel/project/@team-supercharge/oasg/ruleset (imported by .spectral.js): ENOENT: no such file or directory, open '/Users/bali/Devel/project/@team-supercharge/oasg/ruleset'

In this case the extension tries to load the ruleset from the project folder, instead of from inside node_modules.

In both cases running Spectral from the CLI works totally fine.

Environment:

  • Extension version: 1.1.2
  • VS Code version: 1.78.2
  • Operating System: macOS Ventura

any updates on this?

commented

I'm seeing the same issue. It seems like it is not looking into the node_modules folder but only at the root of the workspace. The cli work perfectly fine but not the vscode extension.

commented

There is a hack to make it work @exoszajzbuk you can just point the the path to your dep. for example we have a @bastion-technologies/spectral-ruleset npm package and we can just add

extends:
    - "node_modules/@bastion-technologies/spectral-ruleset/dist/ruleset.js"

in the .spectral.yml file in the repo.
Not idea but works until the extension supports npm packages rulesets.

Note that it also works with the cli in case you also use it in your CIs for example.

Hello everyone, just opened a pull request that can fix this problem, #218 .
Waiting for some feedback, thanks!

I have a similar issue, but when applying non-ruleset node packages in my custom scripts.

FetchError: Could not load

Is there any workaround for that?