mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
* [kbn/pm] rewrite to avoid needing a build process * uncomment timing reporting * throw in a few missing comments * Update README.md * remove extra SomeDevLog interface from ci-stats-core * remove non-stdio logging from bazel_runner, improve output formatting * use private fields instead of just ts private props * promote args to a positional arg * optionally require the ci-stats-reporter after each command * allow opt-ing out of vscode config management * reduce to a single import * add bit of docs regarding weird imports and package deps of kbn/pm * clean extraDirs from Kibana's package.json file too * tweak logging of run-in-packages to use --quiet and not just CI=true * remove unlazy-loader * add readme for @kbn/yarn-lock-validator * convert @kbn/some-dev-logs docs to mdx * remove missing navigation id and fix id in dev-cli-runner docs * fix title of some-dev-logs docs page * typo
57 lines
2.1 KiB
Markdown
57 lines
2.1 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"
|
|
```
|
|
|
|
## 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.
|