kibana/packages/README.md

61 lines
2.2 KiB
Markdown
Raw Normal View History

# Kibana-related packages
This folder contains packages that are intended for use in Kibana and Kibana
plugins.
tl;dr:
- Don't publish to npm registry
- Always use the `@kbn` namespace
- Always set `"private": true` in `package.json`
## Using these packages
We no longer publish these packages to the npm registry. Now, instead of
specifying a version when including these packages, we rely on yarn workspaces,
which sets up a symlink to the package.
For example if you want to use the `@kbn/i18n` package in Kibana itself, you
can specify the dependency like this:
```
"@kbn/i18n": "1.0.0"
```
However, if you want to use this from a Kibana plugin, you need to use a `link:`
dependency and account for the relative location of the Kibana repo, so it would
instead be:
```
"@kbn/i18n": "link:../../kibana/packages/kbn-i18n"
```
How all of this works is described in more detail in the
[`@kbn/pm` docs](./kbn-pm#how-it-works).
## Creating a new package
Create a new sub-folder. The name of the folder should mirror the `name` in the
package's `package.json`. E.g. if the name is `@kbn/i18n` the folder name
should be `kbn-i18n`.
All new packages should use the `@kbn` namespace, and should be marked with
`"private": true`.
## Unit tests for a package
Currently there is only one tool being used in order to test packages which is Jest. Below we will explain how it should be done.
### Jest
A package should follow the pattern of having `.test.js` files as siblings of the source code files, and these run by Jest.
A package using the `.test.js` naming convention will have those tests automatically picked up by Jest and run by the unit test runner, currently mapped to the Kibana `test` script in the root `package.json`.
* `yarn test` or `yarn grunt test` runs all unit tests.
* `yarn jest` runs all Jest tests in Kibana.
In order for the plugin or package to use Jest, a jest.config.js file must be present in it's root. However, there are safeguards for this in CI should a test file be added without a corresponding config file.
----
Each package can also specify its own `test` script in the package's `package.json`, for cases where you'd prefer to run the tests from the local package directory.