Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Jonathan Budzenski <jon@budzenski.me>
61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# 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` 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.
|