Electron client, extension host, and C# library for Paranext
This software is not yet ready for users. We'll update here with where you can install it when its ready.
To use .AppImage
files in Linux, install FUSE (you only need to do this once), for example, on Ubuntu (>= 22.04):
sudo apt install libfuse2
Then simply execute/run the .AppImage
file, which you can download from Releases.
Set up pre-requisites for building:
Add the system libraries needed for Electron, Build Instructions (Linux).
Install Node.js
version >=18.0.0 (18.0.0 or greater is required for using fetch
). We recommend using Volta.
Install dotnet
.NET 8 SDK from here.
To check if dotnet
is installed run (ensure you have a v8 SDK):
dotnet --version
dotnet --list-sdks
Clone the repo and install dependencies:
git clone https://github.com/paranext/paranext-core.git
cd paranext-core
npm install
To build the declaration type file papi.d.ts
for extensions to use, run the following:
npm run build:types
Start the app in the dev
environment:
npm start
After you run npm start
(or, in VSCode, launch Debug Paranext Core
), you can edit the code, and the relevant processes will hot reload.
Paranext Core extensions are found in the extensions
folder. Please follow the instructions in
extensions/README.md
to develop extensions.
Platform.Bible API Documentation
Platform.Bible React Components and Hooks Documentation
Platform.Bible Utilities Documentation
You can use Volta with this repo to use the right version of tools such as node and npm.
If you don't use Volta just look at the volta
property in package.json to see the right tool versions to install in your preferred way.
To package apps for the local platform:
npm run package
release/*
, e.g. release/v1.2.3
, or release/v1.2.3-rc1
.release/app/package.json
, e.g.:
cd ./release/app
npm version 1.2.3
v1.2.3
, choose Create new tag on publish.CHANGELOG.md
with changes in this release from the GitHub draft Release..blockmap
files and leave the .yml
files and the installers and executable, e.g. .exe
on Windows.The following tests run automatically on each GitHub PR (see test.yml).
To run C# unit tests:
cd c-sharp-tests
dotnet test
To run C# unit tests watching for file changes:
cd c-sharp-tests
dotnet watch test
To run all TS unit tests:
npm test
To run an individual TS unit test watching for file changes:
npm test -- <path/to/test-file.test.ts> --watch
You can also use the recommended VS Code extensions to run tests there.
To run Storybook locally:
npm run storybook
To build Storybook:
npm run storybook:build
To run Storybook as a web app, after it was built successfully:
npx http-server ./storybook-static
On Windows, you can install WSL (Windows Subsystem for Linux) so you can test cross-platform compatibility on Linux (as well as Windows). You'll need to use a Linux distribution with WSL2 (rather than WSL1) so the X-Server windows can be opened for Electron.
You'll be running a copy of the repo in both Windows and WSL so make sure they are both up-to-date.
You can use VS Code from your host to access code in your WSL repo clone using the Microsoft Remote Development VS Code extension.
Extensions highly recommended for this repo are already displayed in VS Code through the Extensions Recommendations settings. These are optional extensions that our developers enjoy using:
Formatting happens automatically when you commit. If you use VS Code with this repo's recommended extensions it will format when you save.
To check TypeScript for readability, maintainability, and functionality errors, and to check a few other files for proper formatting, run the following from the repo root (or just use VS Code with this repo's recommended extensions)
npm run prettier
npm run lint
To check C# for readability, maintainability, and functionality errors, run the following from the repo root (or just use VS Code with this repo's recommended extensions)
cd c-sharp
dotnet tool restore
dotnet csharpier .
papi.d.ts
VSCode renders JSDoc comments in the UI to make it easier for developers to use functions and properties as intended. However, those comments do not always propagate from modules to the d.ts
type definition file when those modules are re-exported. To help with this problem in papi.d.ts
that we export for extensions to reference, we added some custom functionality.
If you want comments to be copied from one location in papi.d.ts
to another, do the following:
/**
* JSDOC SOURCE myService
*
* myService is amazing. Here are more details about it.
* ...
*/
const myService = {
...
}
const papi = {
...
/** JSDOC DESTINATION myService */
myService,
Some important decisions in this project were inspired by the work done in Visual Studio Code. Thanks VS Code developers for some great ideas!
MIT © SIL International