62 lines
1.5 KiB
Markdown
62 lines
1.5 KiB
Markdown
# Nym Typescript (and Javascript) packages
|
|
|
|
This directory has shared Typescript (and Javascript) libraries using `yarn workspaces`.
|
|
|
|
## Why `ts-packages`?
|
|
|
|
Naming stuff is hard. The `ts-` part means Typescript, because this monorepo also contains Rust crates. So we needed some way to indicate: "put your Typescript here".
|
|
|
|
Now you know! So, please, put your Typescript here. And your Javascript.
|
|
|
|
## How does it work?
|
|
|
|
In the root of this repository is [package.json](../package.json) that specifies an array of globs for packages that are shared:
|
|
|
|
```
|
|
{
|
|
"name": "@nymproject/nymsphere",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"license": "Apache 2.0",
|
|
"workspaces": ["ts-packages/*", "nym-wallet"] <-------
|
|
}
|
|
```
|
|
|
|
There are some caveats:
|
|
|
|
- this only works with `yarn` and not `npm`
|
|
- `yarn` creates a single `node_modules` in the root for shared dependencies
|
|
- packages that use shared packages, need to be in a path specified in `workspaces`
|
|
- local packages take precedence over published packages on `npm`
|
|
|
|
## Building
|
|
|
|
From the [root of the repository](../README.md) run:
|
|
|
|
```
|
|
yarn
|
|
yarn build
|
|
```
|
|
|
|
This will build all libraries.
|
|
|
|
Now you can try out [react-webpack-with-theme-example](./react-webpack-with-theme-example) by running:
|
|
|
|
```
|
|
cd ts-packages/react-webpack-with-theme-example
|
|
yarn start
|
|
```
|
|
|
|
Our React components have a Storybook in [react-components](./react-components):
|
|
|
|
```
|
|
cd ts-packages/react-components
|
|
yarn storybook
|
|
```
|
|
|
|
## Development
|
|
|
|
Watch mode is available in some packages with `yarn watch`.
|
|
|
|
See [mui-theme](./mui-theme/README.md) for an example.
|