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?
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.
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?