diff --git a/lib/rules/no-uninstalled-addons.ts b/lib/rules/no-uninstalled-addons.ts index 8c9e20c..665f268 100644 --- a/lib/rules/no-uninstalled-addons.ts +++ b/lib/rules/no-uninstalled-addons.ts @@ -84,6 +84,17 @@ export = createStorybookRule({ return installedAddons.includes(addonName) } + const filterLocalAddons = (addon: string) => { + const isLocalAddon = (addon: string) => + addon.startsWith('.') || + addon.startsWith('/') || + // for local Windows files e.g. (C: F: D:) + /\w:.*/.test(addon) || + addon.startsWith('\\') + + return !isLocalAddon(addon) + } + type AreThereAddonsNotInstalled = ( addons: string[], installedSbAddons: string[] @@ -91,7 +102,7 @@ export = createStorybookRule({ const areThereAddonsNotInstalled: AreThereAddonsNotInstalled = (addons, installedSbAddons) => { const result = addons // remove local addons (e.g. ./my-addon/register.js) - .filter((addon) => !addon.startsWith('.')) + .filter(filterLocalAddons) .filter((addon) => !isAddonInstalled(addon, installedSbAddons)) .map((addon) => ({ name: addon })) return result.length ? result : false diff --git a/tests/lib/rules/no-uninstalled-addons.test.ts b/tests/lib/rules/no-uninstalled-addons.test.ts index 40df558..3be0686 100644 --- a/tests/lib/rules/no-uninstalled-addons.test.ts +++ b/tests/lib/rules/no-uninstalled-addons.test.ts @@ -93,6 +93,10 @@ ruleTester.run('no-uninstalled-addons', rule, { addons: [ "../my-local-addon", "../my-local-addon/index.cjs", + "/Users/foo/my-local-addon/index.js", + "/mount/foo/my-local-addon/index.js", + "C:\\Users\\foo\\my-local-addon/index.js", + "D:\\Users\\foo\\my-local-addon/index.js", ] } `,