Grist 是一个现代关系电子表格。它结合了电子表格的灵活性和数据库的稳健性。
grist-core
(此存储库)拥有运行功能强大的电子表格托管服务器所需的一切。grist-electron
是一款 Linux/macOS/Windows 桌面应用程序,用于查看和编辑本地存储的电子表格。grist-static
是 Grist 的完全浏览器内置版本,用于在没有后端支持的情况下在网站上显示电子表格。
该grist-core
存储库是 Grist 的核心,包括Grist Labs提供的托管服务,Grist Labs 是一家总部位于纽约的公司🇺🇸,也是 Grist 的主要开发人员。法国政府机构ANCT Données et Territoires 🇫🇷 也为代码库做出了重大贡献。
、和存储grist-core
库都是开源的(Apache 许可证,版本 2.0)。grist-electron
grist-static
问题?反馈?想与 Grist 分享您正在构建的内容吗?加入我们的官方 Discord 服务器或访问我们的社区论坛。
谷物.mp4
grist.mp4
Grist 是一个混合数据库/电子表格,这意味着:
- 列的工作方式就像在数据库中一样:它们被命名,并且保存一种数据。
- 列可以通过公式、电子表格样式填充,并在引用的单元格更改时自动更新。
这种差异可能会让直接使用 Excel 或 Google Sheets 的人感到困惑。给它一个机会!还有一篇适用于电子表格用户的 Grist文章可以帮助您了解方向。如果您来自 Airtable,您会发现该模型很熟悉(还有我们的Grist 与 Airtable文章进行直接比较)。
以下是 Grist 的一些具体功能亮点:
- Python 公式。
- 支持完整的Python语法,包括标准库。
- 还可以使用许多Excel 函数。
- 专门针对公式生成而调整的AI 助手(通过llama-cpp-python使用 OpenAI gpt-3.5-turbo 或Llama)。
- 一种便携式、独立的格式。
- 基于 SQLite(部署最广泛的数据库引擎)。
- 任何可以读取 SQLite 的工具都可以从 Grist 文件中读取数字和文本数据。
- 启用您可以自信地完整恢复的备份。
- 非常适合在不同主机之间移动。
- 可以显示在静态网站上,
grist-static
无需特殊服务器。 - 用于本地查看和编辑的独立桌面应用程序:
grist-electron
. - 方便的编辑和格式化功能。
- 拖放仪表板。
- 增量进口。
- 从您的银行导入过去三个月活动的 CSV...
- ...并在一个月后导入新活动,无需大惊小怪或重复。
- 整合。
- 从投资研究到组织寻宝,有许多模板可以帮助您入门。
- 访问控制选项。
- (您需要设置 SSO 登录才能使用这些选项;
grist-omnibus
如果配置此选项令人畏惧,则有一个预先打包的解决方案) - 共享个人文档、工作区或团队网站。
- 控制对各个行、列和表的访问。
- 根据单元格值和用户属性控制访问。
- (您需要设置 SSO 登录才能使用这些选项;
- 可自我维护。
- 对于 Intranet 操作和特定合规性要求很有用。
- 针对不受信任文档的沙箱选项。
- 在 Linux 上或使用 Docker,您可以在单个文档级别启用gVisor沙箱。
- 在 macOS 上,您可以使用本机沙箱。
- 在任何操作系统(包括 Windows)上,您都可以使用基于 wasm 的沙箱。
- 被翻译成多种语言。
F1
键会带来一些快速帮助。这在过去是不言而喻的,但总的来说,Grist 具有良好的键盘支持。- 我们在𝕏 或 Twitter 或其他任何地方发布进展情况,并发布每月时事通讯。
如果您对 Grist 的发展方向感到好奇,请参阅我们的路线图、在我们的论坛中提出问题或浏览我们丰富的文档。
如果您只想快速演示 Grist:
- 您可以在 Grist Labs 运行的托管服务(位于docs.getgrist.com )上试用 Grist (无需注册)。
- 或者您可以在gristlabs.github.io/grist-static上查看完全在浏览器内构建的 Grist 。
- 或者您可以从github.com/gristlabs/grist-electron下载 Grist 作为桌面应用程序。
要grist-core
在计算机上运行Docker,请执行以下操作:
docker pull gristlabs/grist docker run -p 8484:8484 -it gristlabs/grist
http://localhost:8484
然后在浏览器中访问。您将能够创建、编辑、导入和导出文档。要在 docker 运行之间保留您的工作,请将目录共享为/persist
:
docker run -p 8484:8484 -v $PWD/persist:/persist -it gristlabs/grist
在templates.getgrist.com上获取用于薪资、库存管理、发票、D&D 遭遇跟踪等的模板,或者使用您在 docs.getgrist.com上创建的任何文档。
如果您需要更改 Grist 运行的端口,请设置一个PORT
变量,而不仅仅是更改端口映射:
docker run --env PORT=9999 -p 9999:9999 -v $PWD/persist:/persist -it gristlabs/grist
要启用 gVisor 沙箱,请设置--env GRIST_SANDBOX_FLAVOR=gvisor
。这应该适用于默认的 docker 设置,但可能不适用于所有环境。
您可以在我们的自我管理 Grist手册中找到有关配置 Grist、设置身份验证以及在公共服务器上运行它的更多信息 。
您可以打开特殊的“启动页面”来检查安装的状态。只需访问/boot
您的 Grist 服务器即可获取说明。由于即使未设置身份验证,启动页面也可用,因此您可以通过设置 为其提供特殊的访问密钥GRIST_BOOT_KEY
。
docker run -p 8484:8484 -e GRIST_BOOT_KEY=secret -it gristlabs/grist
然后,启动页面应该可以在 处找到/boot/<GRIST_BOOT_KEY>
。我们开始收集针对常见问题的探针。如果您遇到未涵盖的问题,如果您可以在BootProbes中为其添加探测器,那就太好了
。或者提出问题以便其他人可以添加它,我们才刚刚开始。
要从源代码构建 Grist,请按照下列步骤操作:
yarn install
yarn run build:prod
yarn run install:python
yarn start
# Grist will be available at http://localhost:8484/
文档中的 Grist 公式将使用直接在您的计算机上执行的 Python 来运行。您可以使用环境变量配置沙箱GRIST_SANDBOX_FLAVOR
。
- 在 macOS 上,
export GRIST_SANDBOX_FLAVOR=macSandboxExec
使用本机sandbox-exec
命令进行沙箱。 - 在安装了gVisor 的 runsc的 Linux 上
,
export GRIST_SANDBOX_FLAVOR=gvisor
这是一个选项。 - 在包括 Windows 在内的任何操作系统上
export GRIST_SANDBOX_FLAVOR=pyodide
都可用。
这些沙盒方法是为我们在 Grist Labs 自己使用而编写的,可能需要进行调整才能在您自己的环境中工作 - 非常欢迎这里提出请求!
与 git 一样,Grist 具有跟踪文档修订历史记录的功能。因此,为了进行完整的操作,Grist 希望知道修改文档的用户是谁。在此之前,它会以有限的匿名模式运行。为了让您继续前进,对 docker 映像进行了配置,以便当您单击“登录”按钮时,Grist 会将您的工作归因于[email protected]
.通过设置更改此设置GRIST_DEFAULT_EMAIL
:
docker run --env GRIST_DEFAULT_EMAIL=my@email -p 8484:8484 -v $PWD/persist:/persist -it gristlabs/grist
您可以在“用户菜单”Profile Settings
中更改您的姓名。
对于多用户操作,或者如果您希望通过公共互联网访问 Grist,您需要将其连接到您自己的单点登录服务。有很多方法可以做到这一点,包括SAML 和转发身份验证。 Grist 已经通过Dex与Authentik、Auth0和 Google/Microsoft 登录进行了测试。
我们使用Weblate来管理翻译。感谢所有参与的人。特别感谢 ANCT 开发人员,他们为使应用程序的大部分内容可本地化付出了辛勤的努力。谢谢!
该存储库grist-core
由 Grist Labs 维护。我们在getgrist.com上提供的旗舰产品是根据您在此处看到的代码构建的,并结合了旨在扩展到许多用户、处理计费等的特定于业务的软件。
Grist Labs 是一家开放核心公司。我们提供 Grist 托管服务,包括免费和付费计划。我们还使用专有许可证开发和销售与 Grist 相关的功能,以满足拥有大型自我管理安装的企业的需求。
我们将数据可移植性和自治视为关键价值,也是grist-core
其中的重要组成部分。我们致力于维护和改进grist-core
代码库,并考虑专有产品如何影响数据可移植性和自治性。
通过开放源代码并提供OSI批准的免费许可证,Grist 使用户受益:
- 开发者社区。对于通用电子表格产品来说,检查源代码、修复错误和开发新功能的自由是一件大事,因为其中有很长的尾部功能对某个地方的某人至关重要。
- 增加信任。因为任何人都可以检查源代码,所以“默默无闻的安全”不是一个选择。代码中的漏洞可以被其他人发现并在造成损害之前报告。
- 独立。无论 Grist Labs 业务的命运如何,您都可以使用 Grist,因为它是开源的并且可以自行托管。使用我们的托管解决方案很方便,但您不会被锁定。
- 价格灵活性。如果您资金不足但有时间投资,自托管是一个不错的选择。而DIY用户可能有技术头脑和钻研改进的动力,这可以让Grist的所有用户受益。
- 可扩展性。对于开发人员来说,开放源代码可以更轻松地构建扩展(例如自定义小部件)。您可以更轻松地将 Grist 添加到您的管道中。如果缺少某个功能,您只需获取源代码并在其基础上进行构建即可。
有关 Grist Labs 的历史和原则的更多信息,请参阅我们的“关于我们”页面。
Grist 可以通过多种方式进行配置。以下是它敏感的主要环境变量:
多变的 | 目的 |
---|---|
ALLOWED_WEBHOOK_DOMAINS | 以逗号分隔的允许在 webhook 中使用的域列表(例如 webhook.site、zapier.com)。您可以将其设置为允许所有域,但如果这样做,如果您不完全信任用户,* 我们建议您使用仔细锁定的代理(请参阅 参考资料)。GRIST_HTTPS_PROXY 否则,您的内部网络上的服务可能容易受到操纵。 |
APP_DOC_URL | docworker url,在启动单个docworker时设置(其他服务器将通过redis找到docworkerurl) |
APP_DOC_INTERNAL_URL | 类似APP_DOC_URL ,但由主服务器使用内部域名解析来访问服务器(就像在 docker 环境中一样)。默认为APP_DOC_URL |
APP_HOME_URL | home api 的 url 前缀(家庭和文档服务器需要这个) |
APP_STATIC_URL | 静态资源的url前缀 |
APP_STATIC_INCLUDE_CUSTOM_CSS | 设置为“true”以在静态页面中包含 custom.css(来自 APP_STATIC_URL) |
APP_UNTRUSTED_URL | 提供/期望插件内容的 URL。 |
GRIST_ADAPT_DOMAIN | 设置为“true”以支持多个基域(小心,主机标头应该值得信赖) |
GRIST_APP_ROOT | 包含 Grist 沙箱和资产的目录(特别是沙箱和静态子目录)。 |
GRIST_BACKUP_DELAY_SECS | 文档更改后等待这么长时间再进行备份 |
GRIST_BOOT_KEY | 如果设置,则在 /boot/GRIST_BOOT_KEY 处提供诊断 |
GRIST_DATA_DIR | 存储文档的目录。默认为docs/ 相对于 Grist 应用程序目录。在 Grist 的默认 Docker 镜像中,其默认值为 /persist/docs,以便将其用作已安装的卷。 |
GRIST_DEFAULT_EMAIL | 如果设置,如果没有提供其他凭据,则以此用户身份登录 |
GRIST_DEFAULT_产品 | 如果设置,它将控制新站点的启用功能和限制。请参阅 Product.ts 中的产品名称。 |
GRIST_DEFAULT_LOCALE | 当 Grist 无法支持浏览器区域设置时用作后备的区域设置。 |
GRIST_DOMAIN | 在托管的 Grist 中,Grist 由该域的子域提供服务。默认为“getgrist.com”。 |
GRIST_EXPERIMENTAL_PLUGINS | 启用实验性插件 |
GRIST_ENABLE_REQUEST_FUNCTION | 启用请求功能。该函数以与 类似的方式执行 HTTP 请求requests.request 。此功能存在重大安全风险,因为当 Grist 公开可用时,它可以让用户调用内部端点。此功能也会导致性能问题。默认情况下取消设置。 |
GRIST_HIDE_UI_ELEMENTS | 要禁用的以逗号分隔的 UI 功能列表。允许的零件名称:helpCenter,billing,templates,createSite,multiSite,multiAccounts,sendToDrive,tutorials,supportGrist .如果 GRIST_UI_FEATURES 中也存在某个部分,它仍将被禁用。 |
GRIST_HOST | 侦听端口时使用的主机名。 |
GRIST_HTTPS_PROXY | 如果设置,则使用此代理进行 Webhook 有效负载传输。 |
GRIST_ID_PREFIX | 对于 o- 形式的子域,期望或生成 o-${GRIST_ID_PREFIX}。 |
GRIST_IGNORE_SESSION | 如果设置,Grist 将不会使用会话进行身份验证。 |
GRIST_INCLUDE_CUSTOM_SCRIPT_URL | <script> 如果设置,将在所有应用程序页面的标记中加载引用的 URL 。 |
GRIST_INST_DIR | Grist 服务器的 Grist 实例配置文件的路径。 |
GRIST_LIST_PUBLIC_SITES | 如果设置为 true,则将为匿名用户列出与公众共享的网站。默认为 false。 |
GRIST_MANAGED_WORKERS | 如果设置的话,Grist 可以假设如果针对文档工作人员的 url 返回 404,则该工作人员已消失 |
GRIST_MAX_UPLOAD_ATTACHMENT_MB | 附件允许的最大大小(0 或空表示无限制)。 |
GRIST_MAX_UPLOAD_IMPORT_MB | 允许导入的最大大小(.grist 文件除外)(0 或空表示无限制)。 |
GRIST_OFFER_ALL_LANGUAGES | 如果设置,则向用户提供所有翻译的语言(默认情况下,仅向用户提供具有特殊“足够好”键集的语言)。 |
GRIST_ORG_IN_PATH | 如果为 true,则在路径而不是域中对 org 进行编码 |
GRIST_PAGE_TITLE_SUFFIX | <title> 附加到HTML 文档末尾的字符串。默认为" - Grist" .设置_blank 为根本没有后缀。 |
已弃用,并解释为 GRIST_FORWARD_AUTH_HEADER 的同义词。 | |
GRIST_ROUTER_URL | 允许服务器向负载均衡器注册(取消)注册的 api 的可选 url |
GRIST_SERVE_SAME_ORIGIN | 设置为“true”以访问与顶级页面相同的协议主机端口上的家庭服务器和文档工作人员,与自定义域相同(小心,主机标头应该值得信赖) |
GRIST_服务器 | 要设置的服务器类型。逗号分隔的值可能包含“home”、“docs”、static”和/或“app”。默认为“home、docs、static”。 |
GRIST_SESSION_COOKIE | 如果设置,则覆盖 Grist cookie 的名称 |
GRIST_SESSION_DOMAIN | 如果设置,则将 cookie 与给定域关联 - 否则默认为 GRIST_DOMAIN |
GRIST_SESSION_SECRET | 用于对会话进行编码的密钥 |
GRIST_SKIP_BUNDLED_WIDGETS | 如果设置,Grist 将忽略通过 NPM 包包含的任何捆绑小部件。 |
GRIST_ANON_PLAYGROUND | 当设置为“false”时,拒绝匿名用户访问主页 |
GRIST_FORCE_LOGIN | 很像 GRIST_ANON_PLAYGROUND 但根本不支持匿名访问(公开共享文档等功能需要身份验证) |
GRIST_SINGLE_ORG | 设置为组织“域”以将客户端固定到该组织 |
GRIST_TEMPLATE_ORG | 设置为组织“域”以显示该组织的公共文档 |
GRIST_HELP_CENTER | 设置帮助中心链接参考 |
FREE_COACHING_CALL_URL | 设置指向人工帮助的链接(例如:电子邮件地址或会议安排工具) |
GRIST_CONTACT_SUPPORT_URL | 在错误页面上设置联系支持人员的链接(例如:电子邮件地址或在线表格) |
GRIST_SUPPORT_ANON | 如果设置为“true”,则显示匿名访问的 UI(默认情况下不显示) |
GRIST_SUPPORT_EMAIL | 如果设置,则为用户提供指定的电子邮件支持权限。主要的额外功能是能够以列出的方式与所有用户共享站点、工作区和文档。 |
GRIST_TELEMETRY_LEVEL | 遥测级别。可设置为:(off 默认)、limited 、 或full 。 |
GRIST_THROTTLE_CPU | 如果设置,则启用 CPU 限制 |
GRIST_TRUST_PLUGINS | 如果设置,插件预计将从与 Grist 应用程序其余部分相同的主机提供服务,而不是从不同的主机提供服务。通常,插件由不同的主机提供服务,因此 Grist 应用程序使用的 cookie 不会自动提供给它们。仅当您了解安全含义时才启用此功能。 |
GRIST_USER_ROOT | 寻找插件的额外路径 - Grist 将扫描$GRIST_USER_ROOT/plugins . |
GRIST_UI_FEATURES | 要启用的 UI 功能的逗号分隔列表。允许的零件名称:helpCenter,billing,templates,createSite,multiSite,multiAccounts,sendToDrive,tutorials,supportGrist .如果 GRIST_HIDE_UI_ELEMENTS 中也存在某个部分,则不会启用它。 |
GRIST_UNTRUSTED_PORT | 如果设置,插件将从给定端口提供服务。这是设置 APP_UNTRUSTED_URL 的替代方法。 |
GRIST_WIDGET_LIST_URL | https://github.com/gristlabs/grist-widget/releases/download/latest/manifest.json 默认情况下使用指向小部件清单的 url |
COOKIE_MAX_AGE | 会话cookie最大期限,默认为90天;可以设置为“none”以使其成为会话cookie |
HOME_PORT | 用于侦听 REST API 服务器的端口号;如果设置为“共享”,则将 API 端点添加到常规 grist 端口。 |
港口 | Grist 服务器监听的端口号 |
REDIS_URL | 用于浏览器会话和数据库查询缓存的可选 Redis 服务器 |
GRIST_SKIP_REDIS_CHECKSUM_MISMATCH | 实验性的。如果设置,仅在 Redis 中的校验和与 S3 后端存储中的校验和不同时发出警告。如果您的后端存储实现了写后读一致性,您可以打开它。默认为 false。 |
GRIST_SNAPSHOT_TIME_CAP | 选修的。定义跟踪桶的上限。用法:{“小时”:25,“日”:32,“isoWeek”:12,“月”:96,“年”:1000} |
GRIST_SNAPSHOT_KEEP | 选修的。无条件为文档保留的最近快照的数量,无论它们何时制作 |
GRIST_PROMCLIENT_PORT | 选修的。如果设置,则在指定端口号上提供 Prometheus 指标。 |
多变的 | 目的 |
---|---|
ASSISTANT_API_KEY | 选修的。向外部 AI 对话端点发出请求时要传递的 API 密钥。 |
ASSISTANT_CHAT_COMPLETION_ENDPOINT | 选修的。要调用的聊天完成样式端点。如果使用 OpenAI,则不需要。 |
助理模型 | 选修的。如果设置,该字符串将在对 AI 对话端点的调用中传递。 |
ASSISTANT_LONGER_CONTEXT_MODEL | 选修的。如果设置,则由于上下文长度限制而失败的请求将使用此模型集重试。 |
OPENAI_API_KEY | 选修的。 ASSISTANT_API_KEY 的同义词,假设正在使用 OpenAI 端点。在 OpenAI 上注册一个帐户,然后在此处生成密钥。 |
截至撰写本文时,已知 AI Assistant 可针对 gpt-3.5-turbo 和 gpt-4 的 OpenAI 聊天完成端点运行。它还可以针对llama-cpp-python提供的聊天完成端点运行。
多变的 | 目的 |
---|---|
GRIST_SANDBOX_FLAVOR | 可以是 gvisor、pynbox、unsandboxed、docker 或 macSandboxExec。如果设置,则强制 Grist 使用指定类型的沙箱。 |
GRIST_SANDBOX | 作为沙箱运行的程序或图像名称。有关书呆子的详细信息,请参阅 NSandbox.ts。 |
PYTHON_版本 | 可以是 2 或 3。如果设置,则假定没有引擎设置的文档使用指定版本的 python。并非所有沙箱都支持所有版本。 |
PYTHON_VERSION_ON_CREATION | 可以是 2 或 3。如果设置,新创建的文档的引擎设置将设置为 python2 或 python3。并非所有沙箱都支持所有版本。 |
多变的 | 目的 |
---|---|
GRIST_FORWARD_AUTH_HEADER | 如果设置,则信任指定的标头(例如“x-forwarded-user”)以包含授权用户电子邮件,并启用“转发身份验证”登录。 |
GRIST_FORWARD_AUTH_LOGIN_PATH | 如果设置了 GRIST_FORWARD_AUTH_HEADER,Grist 将在此路径监听登录。默认为/auth/login . |
GRIST_FORWARD_AUTH_LOGOUT_PATH | 如果设置了 GRIST_FORWARD_AUTH_HEADER,当用户注销时,Grist 将转发到此路径。 |
前向认证支持两种模式,区别在于GRIST_IGNORE_SESSION
:
-
使用会话和登录端点上的转发身份验证。
例如,将 traefik 反向代理与 traefik-forward-auth中间件一起使用:
GRIST_IGNORE_SESSION
:不要设置,或设置为虚假值。- 确保您的反向代理将转发身份验证中间件应用于
GRIST_FORWARD_AUTH_LOGIN_PATH
和GRIST_FORWARD_AUTH_LOGOUT_PATH
。 - 如果您希望在某些情况下允许匿名访问,请确保所有其他路径都不受转发身份验证中间件的影响。 Grist 将根据需要通过重定向到 来触发它
GRIST_FORWARD_AUTH_LOGIN_PATH
。用户登录后,Grist 将使用会话来识别用户,直到注销。
-
没有会话,并且在所有端点上进行转发身份验证。
例如,使用 HTTP 基本身份验证和服务器配置将标头(在 中指定
GRIST_FORWARD_AUTH_HEADER
)设置为登录用户。
GRIST_IGNORE_SESSION
: 设置true
。不会使用 Grist 会话。- 确保您的反向代理设置您为可能需要登录信息的所有请求指定的标头。用户必须不能欺骗此标头,因为 Grist 会信任其中的任何内容。
使用转发身份验证时,您可能还希望设置以下变量:
GRIST_FORCE_LOGIN=true
禁用匿名访问。
Grist 有一个内部使用的插件系统。您可以用它做的一件有用的事情是在 Grist 的构建中包含自定义小部件。自定义小部件通常只需通过设置即可使用GRIST_WIDGET_LIST_URL
,但这具有作为外部依赖项的缺点,这对于离线使用或存档来说可能很尴尬。插件提供了另一种选择。
将自定义小部件“捆绑”为插件:
- 添加 的子目录
plugins
,例如plugins/my-widgets
。或者,您可以将GRIST_USER_ROOT
环境变量设置为您想要的任何路径,然后plugins/my-widgets
在其中创建。 - 在该子目录中添加一个
manifest.yml
如下所示的文件:
name: My Widgets
components:
widgets: widgets.json
- 该
widgets.json
文件应采用grist-widget 存储库生成的格式,并且应放置在与manifest.yml
.中的任何材料都plugins/my-widgets
将由 Grist 提供,并且可以在 中使用相对 URLwidgets.json
。 - 所有文件就位后,重新启动 Grist。您的小部件现在应该可以在自定义小部件下拉列表中使用,以及
GRIST_WIDGET_LIST_URL
. - 如果您愿意,您可以添加多个插件子目录,以及多组小部件,并且它们都将可用。
多变的 | 目的 |
---|---|
GOOGLE_CLIENT_ID | 设置为与 Google API 客户端一起使用的 Google 客户端 ID |
GOOGLE_CLIENT_SECRET | 设置为与 Google API 客户端一起使用的 Google 客户端密钥 |
GOOGLE_API_KEY | 设置为与 Google API 客户端一起使用的 Google API 密钥(访问公共文件) |
GOOGLE_DRIVE_SCOPE | 设置为 Google Drive 集成请求的范围(默认为drive.file) |
多变的 | 目的 |
---|---|
TYPEORM_DATABASE | sqlite 的数据库文件名或其他数据库类型的数据库名称 |
TYPEORM_HOST | 数据库主机 |
TYPEORM_LOGGING | 设置为“true”以查看所有 sql 查询 |
TYPEORM_PASSWORD | 使用的密码 |
TYPEORM_PORT | 数据库的端口号(如果不是该数据库类型的默认端口号) |
TYPEORM_TYPE | 设置为“sqlite”或“postgres” |
TYPEORM_USERNAME | 连接的用户名 |
TYPEORM_EXTRA | 以 JSON 格式传递给 TypeORM 的任何其他属性 |
多变的 | 目的 |
---|---|
GRIST_TESTING_SOCKET | 仅在测试期间用于通道外通信的套接字。 |
GRIST_TEST_HTTPS_OFFSET | 如果设置,则在指定偏移处添加 https 端口。这在测试中很有用。 |
GRIST_TEST_SSL_CERT | 如果设置,则包含 SSL 证书的文件名。 |
GRIST_TEST_SSL_KEY | 如果设置,则包含 SSL 私钥的文件名。 |
GRIST_测试_登录 | 允许伪造的未经身份验证的测试登录(仅适用于开发环境)。 |
GRIST_TEST_ROUTER | 如果设置,则主服务器将在 /test/router 处提供模拟版本的路由器 api |
GREP_测试 | 用于选择要运行的特定测试的模式(例如env GREP_TESTS=ActionLog yarn test )。 |
当 PR 打开时,测试将作为 CI 的一部分自动运行。但是,在将更改推送到 GitHub 之前在本地运行测试会很有帮助。首先,您需要确保已安装所有依赖项:
yarn install
yarn install:python
然后,您可以像这样运行主测试套件:
yarn test
Python 测试也可以在本地运行。 (注意:当前需要 Python 3.9 - 3.11。)
yarn test:python
为了运行特定的测试,您可以使用变量指定模式GREP_TESTS
:
env GREP_TESTS=ChoiceList yarn test
env GREP_TESTS=summary yarn test:python
该存储库grist-core
是根据Apache 许可证 2.0 版发布的,该许可证是OSI批准的自由软件许可证。有关详细信息,请参阅 LICENSE.txt 和 NOTICE.txt。