Our custom OHIF Viewer.
Go to file
2019-07-16 09:42:43 -04:00
.circleci ci(rollbar): Add Rollbar script during CI deploy 2019-06-27 09:41:21 +02:00
.netlify push workspace enabled to initial command; remove second yarn install; use npx to call gitbook cli commands 2019-07-16 09:42:43 -04:00
.vscode Add dotenv syntax highlighting to list of recommended extensions 2019-04-29 12:58:34 -04:00
docs First attempt at a netlify deploy preview 2019-07-16 09:24:24 -04:00
extensions Rename example extension folder 2019-07-15 15:51:36 -04:00
platform First attempt at a netlify deploy preview 2019-07-16 09:24:24 -04:00
.eslintrc Commit changes before a long weekend 2019-07-05 22:58:25 -04:00
.gitignore ci: add e2e tests with cypress 2019-06-22 10:02:07 -04:00
aliases.config.js Begin updating dependent libraries to use sync'd webpack builds w/ watches 2019-07-05 13:28:49 -04:00
babel.config.js Begin updating dependent libraries to use sync'd webpack builds w/ watches 2019-07-05 13:28:49 -04:00
eslintAliasesResolver.js Begin updating dependent libraries to use sync'd webpack builds w/ watches 2019-07-05 13:28:49 -04:00
lerna.json Specify additional lerna config props 2019-07-15 15:51:10 -04:00
netlify.toml push workspace enabled to initial command; remove second yarn install; use npx to call gitbook cli commands 2019-07-16 09:42:43 -04:00
package.json Fix ESM symlink build for Viewers 2019-07-15 13:03:29 -04:00
README.md First attempt at a netlify deploy preview 2019-07-16 09:24:24 -04:00
yarn.lock Begin updating dependent libraries to use sync'd webpack builds w/ watches 2019-07-05 13:28:49 -04:00

OHIF Medical Imaging Platform

lerna Netlify Status

The Problem

...

Why Choose Us

...

Quick Start

...

Developing

The OHIF Medical Image Viewing Platform is maintained as a monorepo. This means that this repository, instead of containing a single project, contains many projects. If you explore our project structure, you'll see the following:

.
├── extensions              #
│   ├── _example            # Skeleton of example extension
│   ├── cornerstone         # 2D images w/ Cornerstone.js
│   ├── dicom-html          # Structured Reports as HTML in viewport
│   ├── dicom-microscopy    # Whole slide microscopy viewing
│   ├── dicom-pdf           # View DICOM wrapped PDFs in viewport
│   └── vtk                 # MPR and Volume support w/ VTK.js
│
├── platform                #
│   ├── core                # Business Logic
│   ├── i18n                # Internationalization Support
│   ├── ui                  # React component library
│   └── viewer              # Connects platform and extension projects
│
├── ...                     # misc. shared configuration
├── lerna.json              # MonoRepo (Lerna) settings
├── package.json            # Shared devDependencies and commands
└── README.md               # This file

Want to better understand why and how we've structured this repository? Read more about it in our Architecture Documentation.

Requirements

  • Yarn 1.17.3+
  • Node 8+
  • Yarn Workspaces should be enabled on your machine:
    • yarn config set workspaces-experimental true

Getting Started

  1. Fork this repository
  2. Clone your forked repository
    • git clone https://github.com/YOUR-USERNAME/Viewers.git
  3. Navigate to the cloned project's directory
  4. Add this repo as a remote named upstream
    • git remote add upstream https://github.com/OHIF/Viewers.git
  5. yarn install to restore dependencies and link projects

To Develop

# Force install
yarn install --force

# Link
# Redundent with yarn workspaces
npx lerna bootstrap
# Link for local dev
cd ./extensions/my-package
npx lerna add @ohif/my-package --scope=@ohif/my-package-consumer
# Add shared dev dependency for workspace
yarn add --dev -W package-name

// module vs main vs jsnext:main vs browser https://babeljs.io/blog/2018/06/26/on-consuming-and-publishing-es2015+-packages

Webpack: https://webpack.js.org/configuration/resolve/

UMD builds go through

  • index.umd.js
  • Extensions passed in via window config

PWA builds go through

  • index.js
  • Extensions specified in file or by window config

The module property should point to a script that utilizes ES2015 module syntax but no other syntax features that aren't yet supported by browsers or node. This enables webpack to parse the module syntax itself, allowing for lighter bundles via tree shaking if users are only consuming certain parts of the library.