Michael Bromley 01a554f870 chore: Publish v3.3.6 hai 6 meses
..
public f24f14e7aa feat(dashboard): Set up login/authenticated routes hai 11 meses
scripts 969e1a1819 fix(dashboard): Fix dashboard bulk action hook imports (#3640) hai 7 meses
src b34751df1d chore: Satisfy CodeQL security warnings (#3659) hai 6 meses
vite e445bdb85d feat(dashboard): Support compilation of external plugins (#3663) hai 6 meses
.gitignore aa12ac7801 fix(dashboard): Fix plugin detection from barrel files hai 7 meses
README.md 491006b30c docs: Document the @/vdb alias for dashboard imports hai 7 meses
components.json 436c7b9d37 fix(dashboard): Form control rendering hai 7 meses
eslint.config.js 93aea1635c chore(dashboard): Create dashboard package wih basic setup hai 11 meses
index.html 1352565a44 feat(dashboard): Enhance index.html with meta tags (#3446) hai 10 meses
lingui.config.js d60d3fd0e7 refactor(dashboard): Split into lib and app hai 10 meses
package.json 01a554f870 chore: Publish v3.3.6 hai 6 meses
sample-vendure-config.ts 134fa381a0 fix(dashboard): Fix various build issues hai 10 meses
tsconfig.json a3d7f05ba8 fix(dashboard): Use dedicated @/vdb alias for imports (#3631) hai 7 meses
tsconfig.lib.json 7cc6ff2dd9 fix(dashboard): Fix TS errors and packaging issues hai 10 meses
tsconfig.plugin.json e445bdb85d feat(dashboard): Support compilation of external plugins (#3663) hai 6 meses
vercel.json 28dc856076 feat(dashboard): Add Vercel configuration for rewrites and enhance local development logging hai 10 meses
vite.config.lib.mts 694d0dd2aa fix(dashboard): Enable tailwind processing of dashboard extension files hai 7 meses
vite.config.mts 9bf365cb55 chore(dashboard): Code cleanup (#3632) hai 7 meses

README.md

Vendure Dashboard

This is a React-based admin dashboard for Vendure. It is a standalone application that can be extended to suit the needs of any Vendure project.

Development

Run npx vite to start Vite in dev mode.

Note on internal @/vdb imports

You will notice that the dashboard uses internal Vendure Dashboard imports prefixed with @/vdb. This is adapted from the convention of Shadcn which uses a @/* path alias for internal imports.

Why not just use relative imports?

The problem with using relative imports is that they are handled differently by Vite when compiling the dashboard. This manifests as things like React Context not working correctly. The underlying reason is that Vite will selectively pre-compile source code and mixing the imports between alias and relative can result in 2 "versions" of the same code being loaded, which causes issues with React Context and other things that rely on a single instance of a module.

For this reason, try to use the @/vdb alias for all internal Vendure Dashboard imports to the "src/lib" directory.

This is especially import for hooks (since many of them use React Context) and there is even a pre-commit hook that will run a script to ensure that you are not using relative imports for internal Vendure Dashboard code.

Type Safety for Consumers

Because we ship source code in the npm package, consumers need to tell TypeScript how to resolve these internal imports by adding the path alias to their tsconfig.json file.

{
    "compilerOptions": {
        "paths": {
            "@/vdb/*": [
                "./node_modules/@vendure/dashboard/src/lib/*"
            ]
        }
    }
}

Note: even without that path alias, the vite compilation will still work, but TypeScript types will not resolve correctly when developing dashboard extensions.

Testing

Run npm run test to run tests once, or npx vitest to run tests in watch mode