三个步骤
首先需要安装 HomeBrew 和 Git,然后安装并启动数据库:
$ brew install mysql postgres sqlite
$ brew service start mysql
$ brew service start postgres
$ npm install
# 初始化表结构,运行所有测试
$ npm run test
# 仅运行单元测试
$ npm run test:unit
# 仅运行集成测试
$ npm run test:integration
# TypeScript 定义
$ npm run test:dts
还可以执行单个测试文件,或者使用 --grep
选项进一步限定执行范围:
$ npm run test -- test/unit/test.connect.js --grep "should work"
$ npm run test:unit -- --grep "=> Sequelize adapter"
$ npm run test:mysql -- --grep "bone.toJSON()"
如果 --grep [pattern]
不够直观,也可以随时改成用 .only
来指定用例:
describe('=> Spell', function() {
it.only('supports error convention with nodeify', async function() {
// asserts
});
});
提交代码之前记得将 .only
移除掉。
Leoric 的帮助文档使用 Github Pages 服务,后者依赖 Jekyll 构建。Jekyll 是一个使用 Ruby 编写的静态站点生成工具,具体安装方式参考macOS 安装 Ruby,或者参考 Moncef Belyamani 的 Ruby 安装脚本。如果你只想要安装 Jekyll,也可以使用 HomeBrew 安装 Ruby,然后再安装 Jekyll 即可:
$ brew install ruby
$ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
$ cd docs
$ bundle install
如果遇到连接 https://rubygems.org 超时的问题,考虑切换 docs/Gemfile
中使用的 Ruby Gems 源:
diff --git a/docs/Gemfile b/docs/Gemfile
index 4382725..b4dba82 100644
--- a/docs/Gemfile
+++ b/docs/Gemfile
@@ -1,4 +1,4 @@
-source "https://rubygems.org"
+source "https://gems.ruby-china.com"
完成 bundle install
即可在本地使用 Jekyll 构建帮助文档:
$ cd docs # 如果还在项目根路径的话,记得先切换到 docs 目录
$ jekyll serve
Configuration file: leoric/docs/_config.yml
Source: leoric/docs
Destination: leoric/docs/_site
Incremental build: disabled. Enable with --incremental
Generating...
GitHub Metadata: No GitHub API authentication could be found. Some fields may be missing or have incorrect data.
done in 3.73 seconds.
Auto-regeneration: enabled for 'leoric/docs'
Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.
访问 http://localhost:4000/ 即可。
可以将 Leoric 的代码划分为如下几层(从底层往顶层):
lib/expr.js
lib/spell.js
,提供查找、修改 SQL 相关方法lib/drivers/*.js
,将中间表示层转换为实际可执行的 SQL 语法,并提供执行 SQL 获取返回结果的相关方法lib/bone.js
lib/sequelize.js
SQL 驱动层主要包含如下模块:
lib/drivers/*/attribute.js
lib/drivers/*/data_types.js
lib/drivers/*/schema.js
lib/drivers/*/spellbook.js
lib/drivers/*/index.js