Skip to content

yuanzhongqiao/grist-core

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

格里斯特

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-electrongrist-static

问题?反馈?想与 Grist 分享您正在构建的内容吗?加入我们的官方 Discord 服务器或访问我们的社区论坛

谷物.mp4
grist.mp4

特征

Grist 是一个混合数据库/电子表格,这意味着:

  • 列的工作方式就像在数据库中一样:它们被命名,并且保存一种数据。
  • 列可以通过公式、电子表格样式填充,并在引用的单元格更改时自动更新。

这种差异可能会让直接使用 Excel 或 Google Sheets 的人感到困惑。给它一个机会!还有一篇适用于电子表格用户的 Grist文章可以帮助您了解方向。如果您来自 Airtable,您会发现该模型很熟悉(还有我们的Grist 与 Airtable文章进行直接比较)。

以下是 Grist 的一些具体功能亮点:

  • Python 公式。
  • 一种便携式、独立的格式。
    • 基于 SQLite(部署最广泛的数据库引擎)。
    • 任何可以读取 SQLite 的工具都可以从 Grist 文件中读取数字和文本数据。
    • 启用您可以自信地完整恢复的备份。
    • 非常适合在不同主机之间移动。
  • 可以显示在静态网站上,grist-static无需特殊服务器。
  • 用于本地查看和编辑的独立桌面应用程序:grist-electron.
  • 方便的编辑和格式化功能。
    • 选择和选择列表,用于向记录添加彩色标签。
    • 参考文献和参考列表,用于交叉引用其他表中的记录。
    • 附件,包括记录中的媒体或文档文件。
    • 日期和时间、切换以及货币等特殊数字都有专门的编辑器和格式选项。
    • 条件格式,让您可以使用公式控制单元格的样式,以引起对重要信息的注意。
  • 拖放仪表板。
  • 增量进口
    • 从您的银行导入过去三个月活动的 CSV...
    • ...并在一个月后导入新活动,无需大惊小怪或重复。
  • 整合。
  • 从投资研究到组织寻宝,有许多模板可以帮助您入门。
  • 访问控制选项。
  • 可自我维护。
    • 对于 Intranet 操作和特定合规性要求很有用。
  • 针对不受信任文档的沙箱选项。
    • 在 Linux 上或使用 Docker,您可以在单个文档级别启用gVisor沙箱。
    • 在 macOS 上,您可以使用本机沙箱。
    • 在任何操作系统(包括 Windows)上,您都可以使用基于 wasm 的沙箱。
  • 被翻译成多种语言。
  • F1键会带来一些快速帮助。这在过去是不言而喻的,但总的来说,Grist 具有良好的键盘支持。
  • 我们在𝕏 或 Twitter 或其他任何地方发布进展情况,并发布每月时事通讯

如果您对 Grist 的发展方向感到好奇,请参阅我们的路线图、在我们的论坛中提出问题或浏览我们丰富的文档

使用谷物

如果您只想快速演示 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与AuthentikAuth0和 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_PROXY_AUTH_HEADER 已弃用,并解释为 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 指标。⚠️确保使用未公开暴露的端口⚠️

AI公式助手相关变量(均为可选):

多变的 目的
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

  1. 使用会话和登录端点上的转发身份验证。

    例如,将 traefik 反向代理与 traefik-forward-auth中间件一起使用:

    • GRIST_IGNORE_SESSION:不要设置,或设置为虚假值。
    • 确保您的反向代理将转发身份验证中间件应用于 GRIST_FORWARD_AUTH_LOGIN_PATHGRIST_FORWARD_AUTH_LOGOUT_PATH
    • 如果您希望在某些情况下允许匿名访问,请确保所有其他路径都不受转发身份验证中间件的影响。 Grist 将根据需要通过重定向到 来触发它 GRIST_FORWARD_AUTH_LOGIN_PATH。用户登录后,Grist 将使用会话来识别用户,直到注销。
  2. 没有会话,并且在所有端点上进行转发身份验证。

    例如,使用 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 提供,并且可以在 中使用相对 URL widgets.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。

About

Grist 是电子表格的演变

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 75.1%
  • Python 14.2%
  • JavaScript 9.1%
  • CSS 1.3%
  • Shell 0.1%
  • HTML 0.1%
  • Other 0.1%