An open-source headless commerce platform built on Node.js with GraphQL, Nest & TypeScript, with a focus on developer productivity and ease of customization.
master - The latest stable release, currently the 2.x series.minor - The next patch release, including new featuresmajor - The next major release (v3.0)v2.x - The 2.x line, which will receive critical fixes until the end-of-life on 31.12.2024. The code in this branch is under the MIT license.This project is a monorepo managed with Lerna. Several npm packages are published from this repo, which can be found in the packages/ directory.
vendure/
├── docs/ # Documentation source
├── e2e-common/ # Shared config for package e2e tests
├── license/ # License information & CLA signature log
├── packages/ # Source for the Vendure server, admin-ui & core plugin packages
├── scripts/
├── changelog/ # Scripts used to generate the changelog based on the git history
├── codegen/ # Scripts used to generate TypeScript code from the GraphQL APIs
├── docs/ # Scripts used to generate documentation markdown from the source
[!IMPORTANT] The following instructions are for those who want to develop the Vendure core framework or plugins (e.g. if you intend to make a pull request). For instructions on how to build a project using Vendure, please see the Getting Started guide.
npm install
The root directory has a package.json which contains build-related dependencies for tasks including:
npm run build
Packages must be built (i.e. TypeScript compiled, admin ui app built, certain assets copied etc.) before being used.
Note that this can take a few minutes.
The server requires an SQL database to be available. The simplest option is to use SQLite, but if you have Docker available you can use the dev-server docker-compose file which will start up both MariaDB and Postgres as well as their GUI management tools.
Vendure uses TypeORM, and officially supports MySQL, PostgreSQL and SQLite, though other TypeORM-supported databases may work.
getDbConfig() function are correct for the database type you will be using.getDbConfig() settings. If you are using SQLite, you can skip this step.If you do not specify thecd packages/dev-server DB=<mysql|postgres|sqlite> npm run populate
DB variable, it will default to "mysql".cd packages/dev-server
DB=<mysql|postgres|sqlite> npm run start
Or if you are in the root package
DB=<mysql|postgres|sqlite> npm run dev-server:start
If you do not specify the DB argument, it will default to "mysql".
If you are making changes to the admin ui, you need to start the admin ui independent from the dev-server:
cd packages/admin-uinpm run startThis will auto restart when you make changes to the admin ui. You don't need this step when you just use the admin ui just to test backend changes.
This example shows how to test changes to the payments-plugin package locally, but it will also work for other packages.
# Terminal 1 cd packages/payments-plugin npm run watch
:warning: If you are developing changes for the corepackage, you also need to watch the common package:
# Terminal 1 # Root of the project npm run watch:core-common
# Terminal 2 cd packages/dev-server DB=sqlite npm run start
graphql-code-generator is used to automatically create TypeScript interfaces for all GraphQL server operations and admin ui queries. These generated interfaces are used in both the admin ui and the server.
Running npm run codegen will generate the following files:
packages/common/src/generated-types.ts: Types, Inputs & resolver args relating to the Admin APIpackages/common/src/generated-shop-types.ts: Types, Inputs & resolver args relating to the Shop APIpackages/admin-ui/src/lib/core/src/common/generated-types.ts: Types & operations relating to the admin-ui queries & mutations.packages/admin-ui/src/lib/core/src/common/introspection-result.ts: Used by the Apollo Client IntrospectionFragmentMatcher to correctly handle fragments in the Admin UI.The core and several other packages have unit tests which are can be run all together by running npm run test from the root directory, or individually by running it from the package directory.
Unit tests are co-located with the files which they test, and have the suffix .spec.ts.
If you're getting Error: Bindings not found., please run npm rebuild @swc/core.
Certain packages have e2e tests, which are located at /packages/<name>/e2e/. All e2e tests can be run by running npm run e2e from the root directory, or individually by running it from the package directory.
e2e tests use the @vendure/testing package. For details of how the setup works, see the Testing docs.
When debugging e2e tests, set an environment variable E2E_DEBUG=true which will increase the global Jest timeout and allow you to step through the e2e tests without the tests automatically failing due to timeout.
All packages in this repo are released at every version change (using Lerna's fixed mode). This simplifies both the development (tracking multiple disparate versions is tough) and also the developer experience for users of the framework (it is simple to see that all packages are up-to-date and compatible).
To make a release:
npm run publish-releaseIt will run lerna publish which will prompt for which version to update to. Although we are using conventional commits, the version is not automatically being calculated from the commit messages. Therefore the next version should be manually selected.
Next it will build all packages to ensure the distributed files are up to date.
Finally, the command will create changelog entries for this release.
git push origin master --follow-tagsThe reason we do not rely on Lerna to push the release to Git is that this repo has a lengthy pre-push hook which runs all tests and builds the admin ui. This long wait then invalidates the npm OTP and the publish will fail. So the solution is to publish first and then push.
See LICENSE.md.

一站式AI短剧创作平台
Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。


字节跳动旗下 AI 智能助手
字节跳动旗下 AI 智能助手


GPT充值
支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。


AI 图片生成平台
GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。


你的AI Agent团队
Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号