Files
medusa-store/www/apps/book/app/_plugins/publish-plugin/page.mdx
Shahed Nasser 4fe28f5a95 chore: reorganize docs apps (#7228)
* reorganize docs apps

* add README

* fix directory

* add condition for old docs
2024-05-03 17:36:38 +03:00

184 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Table } from "docs-ui"
export const metadata = {
title: `${pageNumber} Publish a Plugin`,
}
# {metadata.title}
In this chapter, youll learn how to publish a plugin. After you publish your plugin, it will also be available in [Medusas Plugins Library](https://medusajs.com/plugins/).
## package.json Checklist
Update the following meta information in your plugins package.json:
- `name`: The name of your plugin. By convention, all plugin names start with `medusa` followed by a descriptive name of what the plugin does. For example, `medusa-payment-stripe`.
- `description`: A short description of what the plugin does.
- `author`: Your name or your company's name.
- `repository`: Details about the repository that holds the source code of the plugin. It's an object that holds the following properties:
- `type`: Should be `git`.
- `url`: The URL to the repository (for example, the GitHub repository holding the code of your plugin).
### Package Keywords
It's required for all Medusa plugins to use the keywords `medusa-plugin`.
The following table mentions other keywords that you can use based on your plugin's functionalities.
<Table>
<Table.Header>
<Table.Row>
<Table.HeaderCell>Keyword</Table.HeaderCell>
<Table.HeaderCell>Description</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
<Table.Row>
<Table.Cell>`medusa-plugin-analytics`</Table.Cell>
<Table.Cell>Analytics functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-cms`</Table.Cell>
<Table.Cell>CMS functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-notification`</Table.Cell>
<Table.Cell>Notification functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-payment`</Table.Cell>
<Table.Cell>Payment functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-search`</Table.Cell>
<Table.Cell>Search functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-shipping`</Table.Cell>
<Table.Cell>Shipping functionalities or integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-storage`</Table.Cell>
<Table.Cell>File service or storage integrations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-source`</Table.Cell>
<Table.Cell>Migrate or import data into Medusa from another platform.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-admin`</Table.Cell>
<Table.Cell>Plugins that include only admin customizations.</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>`medusa-plugin-other`</Table.Cell>
<Table.Cell>Any other type of plugin.</Table.Cell>
</Table.Row>
</Table.Body>
</Table>
---
## Add NPMIgnore File
Not all files in your Medusa application are relevant to the published plugin.
Add the following `.npmignore` file in the root of the plugin's directory to ignore unnecessary files from the published plugin:
```bash title=".npmignore"
# directories
.cache
.DS_store
.github
.vscode
.yarn
build
data
node_modules
src
uploads
# files
.babelrc
.env*
.gitignore
.eslintrc
.prettierrc
.yarnrc.yml
index.js
medusa-config.js
yarn.lock
```
---
## Publish Plugin
<Note type="check">
To publish a plugin, you need an [NPM account](https://www.npmjs.com/signup).
</Note>
To publish the plugin:
1. Run the `prepare` command:
```bash npm2yarn
npm run prepare
```
2. Publish the NPM package:
```bash
npm publish
```
If you havent logged in before with NPM, youll be asked to log in first.
Your package is then published to NPM.
---
## Install Plugin in Medusa Applications
To install your published plugin in a Medusa application, run the following command:
```bash npm2yarn
npm install medusa-plugin-custom
```
Where `medusa-plugin-custom` is your plugins name.
Then, add the plugin to `medusa-config.js`:
```js title="medusa-config.js"
const plugins = [
// ...
{
resolve: `medusa-plugin-custom`,
options: {
// plugin options...
},
},
]
```
---
## Update Plugin
To publish plugin changes, first, run the following command in the plugins directory to change the NPM version:
```bash
npm version <type>
```
Where `<type>` indicates the type of version update youre publishing. For example, `major`. You can see the [full list of types in NPMs documentation](https://docs.npmjs.com/cli/v8/commands/npm-version).
Then, publish the new update:
```bash
npm publish
```
You can then update the plugin in the Medusa applications that use it.