vendure 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
vendure 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
vendure 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT License
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 大数据数据查询
开源组织
地区 不详
投 递 者 首席测试
适用人群 未知
收录时间 2021-11-23

软件简介

Vendure

A headless GraphQL ecommerce framework built on Node.js with Nest & TypeScript, with a focus on developer productivity and ease of customization.

Build Status Publish & Install lerna

www.vendure.io

Structure

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
├── packages/       # Source for the Vendure server, admin-ui & 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

Development

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.

1. Install top-level dependencies

yarn

The root directory has a package.json which contains build-related dependencies for tasks including:

  • Building & deploying the docs
  • Generating TypeScript types from the GraphQL schema
  • Linting, formatting & testing tasks to run on git commit & push

2. Bootstrap the packages

yarn bootstrap

This runs the Lerna "bootstrap" command, which cross-links monorepo dependencies.

3. Build all packages

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

4. Set up the server

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.

  1. Configure the dev config, making sure the connection settings in the getDbConfig() function are correct for the database type you will be using.
  2. Create the database using your DB admin tool of choice (e.g. phpMyAdmin if you are using the docker image suggested above). Name it according to the getDbConfig() settings. If you are using SQLite, you can skip this step.
  3. Populate mock data:
     cd packages/dev-server
     DB=<mysql|postgres|sqlite> yarn populate
    If you do not specify the DB variable, it will default to "mysql".

5. Run the dev server

cd packages/dev-server
DB=<mysql|postgres|sqlite> yarn start

Or if you are in the root package

DB=<mysql|postgres|sqlite> yarn dev-server:start

If you do not specify the DB argument, it will default to "mysql".

6. Launch the admin ui

  1. cd packages/admin-ui
  2. yarn start
  3. Go to http://localhost:4200 and log in with "superadmin", "superadmin"

Code generation

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 yarn codegen will generate the following files:

Testing

Server Unit Tests

The core and several other packages have unit tests which are can be run all together by running yarn 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.

End-to-end Tests

Certain packages have e2e tests, which are located at /packages/<name>/e2e/. All e2e tests can be run by running yarn 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.

Release Process

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:

1. yarn publish-release

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

2. git push origin master --follow-tags

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

License

MIT

展开阅读全文

代码

评论

点击引领话题📣
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
log4js-node 安全漏洞
缺省权限不正确
Log4js-Node是一种 Log4js 到 Node.js 的端口。 log4js-node 存在安全漏洞,攻击者可利用该漏洞获取敏感信息。
CVE-2022-21704 MPS-2021-37062
2022-08-08 19:03
nodejs 资源管理错误漏洞
拒绝服务
nodejs是是一个基于ChromeV8引擎的JavaScript运行环境通过对Chromev8引擎进行了封装以及使用事件驱动和非阻塞IO的应用让Javascript开发高性能的后台应用成为了可能。 nodejs-glob-parent 存在安全漏洞,该漏洞源于正则表达式拒绝服务。
CVE-2020-28469 MPS-2021-7827
2022-08-08 19:03
tar 存在拒绝服务漏洞
拒绝服务
tar 是用于 Node.js 的全功能 Tar。此软件包的受影响版本容易受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-14081
2022-08-08 19:03
nanoid安全漏洞
不正确的类型转换
nanoid是用于 JavaScript 的小型、安全、URL 友好、唯一的字符串 ID 生成器。 nanoid安全中存在漏洞,该漏洞源于nanoid 容易通过 valueOf() 函数受到信息暴露的影响,该函数允许重现最后生成的 id。
CVE-2021-23566 MPS-2021-19605
2022-08-08 19:03
Engine.IO 代码问题漏洞
对因果或异常条件的不恰当检查
Engine.Io是一个 Socket.Io 的基于传输的跨浏览器/跨设备双向通信层的实现。 Engine.IO 中存在代码问题漏洞,该漏洞源于产品未对特殊HTTP请求引发的异常进行有效处理。攻击者可通过该漏洞导致异常并关闭nodejs引擎。
CVE-2022-21676 MPS-2021-37034
2022-08-08 19:03
node-forge 存在原型污染漏洞
原型污染
node-forge 是网络传输、密码学、密码、PKI、消息摘要和各种实用程序的 JavaScript 实现。此软件包的受影响版本容易受到通过伪造的原型污染。
MPS-2022-13920
2022-08-08 19:03
simple-get 信息泄露漏洞
信息暴露
Simple-Get是美国的一个使 Http 获取请求的最简单方法。 simple-get 存在信息泄露漏洞,该漏洞源于在NPM中暴露敏感信息给未经授权的参与者。
CVE-2022-0355 MPS-2022-2533
2022-08-08 19:03
Digital Bazaar Forge 数据伪造问题漏洞
密码学签名的验证不恰当
Digital Bazaar Forge是美国Digital Bazaar公司的一个 Tls 在 Javascript 中的本机实现以及用于编写基于加密和网络密集型 Web 应用程序的开源工具。 Forge 1.3.0 版本之前 RSA PKCS 存在数据伪造问题漏洞,该漏洞源于 RSA PKCS 签名验证码对摘要算法结构的检查较为宽松。攻击者可以通过精心设计的结构窃取填充字节并在使用低公共指数时使用 PKCS#1 编码消息的未检查部分来伪造签名。
CVE-2022-24771 MPS-2022-3738
2022-08-08 19:03
parse-url 信息泄露漏洞
信息暴露
parse-url是Ionică Bizău个人开发者的一个支持 git url 的高级 url 解析器。 parse-url 7.0.0之前版本存在信息泄露漏洞,该漏洞源于会将用户cookie 和其他授权标头一起转发,攻击者利用该漏洞可以获取用户信息。
CVE-2022-0722 MPS-2022-4780
2022-08-08 19:03
object-path 安全漏洞
原型污染
对象路径容易受到对象原型属性的不当控制修改(“原型污染”)的影响
CVE-2021-3805 MPS-2021-32075
2022-08-08 19:03
Follow Redirects 安全漏洞
侵犯隐私
Follow Redirects是一个自动遵循 Http(s) 重定向的 Node.js 模块。 Follow Redirects 存在安全漏洞,该漏洞源于follow-redirects容易暴露私人个人信息给未经授权的参与者。
CVE-2022-0155 MPS-2022-0815
2022-08-08 19:03
jasmine-core 存在拒绝服务漏洞
拒绝服务
jasmine-core 是 JavaScript 的行为驱动开发测试框架。此软件包的受影响版本容易受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-12948
2022-08-08 19:03
semver-regex 存在拒绝服务漏洞
拒绝服务
semver-regex 是用于匹配 semver 版本的正则表达式。此软件包的受影响版本容易受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-14031
2022-08-08 19:03
uglify-js 存在ReDoS漏洞
ReDoS
uglify-js 是一个 JavaScript 解析器、压缩器、压缩器和美化工具包。此软件包的受影响版本容易通过 string_template 和 decode_template 函数受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-14112
2022-08-08 19:03
NPM url-parse授权绕过漏洞
Url-Parse是一个跨Node.js和浏览器环境无缝工作的小型Url解析器。NPM url-parse 1.5.8之前版本存在授权绕过漏洞,攻击者可利用该漏洞通过用户控制的密钥绕过授权。
CVE-2022-0686 MPS-2022-4464
2022-08-08 19:03
Unshiftio Url-parse 访问控制错误漏洞
Url-Parse是一个跨 Node.js 和浏览器环境无缝工作的小型 Url 解析器。 Unshiftio Url-parse 中存在访问控制错误漏洞,该漏洞源于产品对用户控制的密钥缺少有效的保护机制。攻击者可通过该漏洞绕过授权。以下产品及版本受到影响:Unshiftio Url-parse 1.5.9 之前版本。
CVE-2022-0691 MPS-2022-4474
2022-08-08 19:03
Sharp 安全漏洞
命令注入
sharp是lovell个人开发者的一款用于将常见格式的大图像转换为更小的、对 Web 友好的 JPEG、PNG、WebP、GIF 和不同尺寸的 AVIF 图像。 sharp 0.30.5 之前版本存在安全漏洞。攻击者利用该漏洞能够在构建环境中设置环境变量的值注入任意命令。
CVE-2022-29256 MPS-2022-8657
2022-08-08 19:03
node-tar 路径遍历漏洞
路径遍历
node-tar是一款用于文件压缩/解压缩的软件包。 npm node-tar 存在路径遍历漏洞,该漏洞源于4.4.18、5.0.10和6.1.9之前的npm包“tar”(又名node-tar)存在任意文件创建覆盖和任意代码执行漏洞。攻击者可利用该漏洞访问受限目录之外的位置。
CVE-2021-37713 MPS-2021-28489
2022-08-08 19:03
karma跨站脚本漏洞
XSS
Karma是一个简单的工具。允许在多个真实的浏览器中执行 JavaScript 代码。karma存在跨站脚本漏洞,该漏洞源于NPM karma中的DOM。目前没有详细的漏洞细节提供。
CVE-2022-0437 MPS-2022-2997
2022-08-08 19:03
NPM url-parse 安全漏洞
通过用户控制密钥绕过授权机制
Url-Parse是一个跨 Node.js 和浏览器环境无缝工作的小型 Url 解析器。 NPM url-parse 存在安全漏洞,该漏洞源于在1.5.6之前的NPM url-parse中,通过用户控制的密钥绕过授权。
CVE-2022-0512 MPS-2022-3327
2022-08-08 19:03
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
0 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部