Projektstart
This commit is contained in:
104
backend/node_modules/fastify/docs/Guides/Write-Plugin.md
generated
vendored
Normal file
104
backend/node_modules/fastify/docs/Guides/Write-Plugin.md
generated
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
<h1 style="text-align: center;">Fastify</h1>
|
||||
|
||||
# How to write a good plugin
|
||||
First, thank you for deciding to write a plugin for Fastify. Fastify is a
|
||||
minimal framework and plugins are its strength, so thank you.
|
||||
|
||||
The core principles of Fastify are performance, low overhead, and providing a
|
||||
good experience to our users. When writing a plugin, it is important to keep
|
||||
these principles in mind. Therefore, in this document, we will analyze what
|
||||
characterizes a quality plugin.
|
||||
|
||||
*Need some inspiration? You can use the label ["plugin
|
||||
suggestion"](https://github.com/fastify/fastify/issues?q=is%3Aissue+is%3Aopen+label%3A%22plugin+suggestion%22)
|
||||
in our issue tracker!*
|
||||
|
||||
## Code
|
||||
Fastify uses different techniques to optimize its code, many of them are
|
||||
documented in our Guides. We highly recommend you read [the hitchhiker's guide
|
||||
to plugins](./Plugins-Guide.md) to discover all the APIs you can use to build
|
||||
your plugin and learn how to use them.
|
||||
|
||||
Do you have a question or need some advice? We are more than happy to help you!
|
||||
Just open an issue in our [help repository](https://github.com/fastify/help).
|
||||
|
||||
Once you submit a plugin to our [ecosystem list](./Ecosystem.md), we will review
|
||||
your code and help you improve it if necessary.
|
||||
|
||||
## Documentation
|
||||
Documentation is extremely important. If your plugin is not well documented we
|
||||
will not accept it to the ecosystem list. Lack of quality documentation makes it
|
||||
more difficult for people to use your plugin, and will likely result in it going
|
||||
unused.
|
||||
|
||||
If you want to see some good examples of how to document a plugin take a look
|
||||
at:
|
||||
- [`@fastify/caching`](https://github.com/fastify/fastify-caching)
|
||||
- [`@fastify/compress`](https://github.com/fastify/fastify-compress)
|
||||
- [`@fastify/cookie`](https://github.com/fastify/fastify-cookie)
|
||||
- [`@fastify/under-pressure`](https://github.com/fastify/under-pressure)
|
||||
- [`@fastify/view`](https://github.com/fastify/point-of-view)
|
||||
|
||||
## License
|
||||
You can license your plugin as you prefer, we do not enforce any kind of
|
||||
license.
|
||||
|
||||
We prefer the [MIT license](https://choosealicense.com/licenses/mit/) because we
|
||||
think it allows more people to use the code freely. For a list of alternative
|
||||
licenses see the [OSI list](https://opensource.org/licenses) or GitHub's
|
||||
[choosealicense.com](https://choosealicense.com/).
|
||||
|
||||
## Examples
|
||||
Always put an example file in your repository. Examples are very helpful for
|
||||
users and give a very fast way to test your plugin. Your users will be grateful.
|
||||
|
||||
## Test
|
||||
It is extremely important that a plugin is thoroughly tested to verify that is
|
||||
working properly.
|
||||
|
||||
A plugin without tests will not be accepted to the ecosystem list. A lack of
|
||||
tests does not inspire trust nor guarantee that the code will continue to work
|
||||
among different versions of its dependencies.
|
||||
|
||||
We do not enforce any testing library. We use [`tap`](https://www.node-tap.org/)
|
||||
since it offers out-of-the-box parallel testing and code coverage, but it is up
|
||||
to you to choose your library of preference.
|
||||
We highly recommend you read the [Plugin Testing](./Testing.md#plugins) to
|
||||
learn about how to test your plugins.
|
||||
|
||||
## Code Linter
|
||||
It is not mandatory, but we highly recommend you use a code linter in your
|
||||
plugin. It will ensure a consistent code style and help you to avoid many
|
||||
errors.
|
||||
|
||||
We use [`standard`](https://standardjs.com/) since it works without the need to
|
||||
configure it and is very easy to integrate into a test suite.
|
||||
|
||||
## Continuous Integration
|
||||
It is not mandatory, but if you release your code as open source, it helps to
|
||||
use Continuous Integration to ensure contributions do not break your plugin and
|
||||
to show that the plugin works as intended. Both
|
||||
[CircleCI](https://circleci.com/) and [GitHub
|
||||
Actions](https://github.com/features/actions) are free for open source projects
|
||||
and easy to set up.
|
||||
|
||||
In addition, you can enable services like [Dependabot](https://github.com/dependabot),
|
||||
which will help you keep your dependencies up to date and discover if a new
|
||||
release of Fastify has some issues with your plugin.
|
||||
|
||||
## Let's start!
|
||||
Awesome, now you know everything you need to know about how to write a good
|
||||
plugin for Fastify! After you have built one (or more!) let us know! We will add
|
||||
it to the [ecosystem](https://github.com/fastify/fastify#ecosystem) section of
|
||||
our documentation!
|
||||
|
||||
If you want to see some real world examples, check out:
|
||||
- [`@fastify/view`](https://github.com/fastify/point-of-view) Templates
|
||||
rendering (*ejs, pug, handlebars, marko*) plugin support for Fastify.
|
||||
- [`@fastify/mongodb`](https://github.com/fastify/fastify-mongodb) Fastify
|
||||
MongoDB connection plugin, with this you can share the same MongoDB connection
|
||||
pool in every part of your server.
|
||||
- [`@fastify/multipart`](https://github.com/fastify/fastify-multipart) Multipart
|
||||
support for Fastify.
|
||||
- [`@fastify/helmet`](https://github.com/fastify/fastify-helmet) Important
|
||||
security headers for Fastify.
|
||||
Reference in New Issue
Block a user