* docs: changes based on DX changes * remove fields no longer needed * remove unnecessary parameters * fixes to authenticate middleware usage * add highlight to migrations config * change configuration to http * added missing remote link docs * fix name in sidebar * added notification module docs + updated file module docs * add vale exceptions * fix vale errors * added docs on custom cli scripts
78 lines
2.0 KiB
Plaintext
78 lines
2.0 KiB
Plaintext
export const metadata = {
|
|
title: `${pageNumber} Custom CLI Scripts`,
|
|
}
|
|
|
|
# {metadata.title}
|
|
|
|
In this chapter, you'll learn how create and execute custom scripts from Medusa's CLI tool.
|
|
|
|
## What is a Custom CLI Script?
|
|
|
|
A custom CLI script is a function to execute through Medusa's CLI tool. This is useful when creating custom Medusa tooling to run as a CLI tool.
|
|
|
|
---
|
|
|
|
## How to Create a Custom CLI Script?
|
|
|
|
To create a custom CLI script, create a TypeScript or JavaScript file under the `src/scripts` directory. The file must default export a function.
|
|
|
|
For example, create the file `src/scripts/my-script.ts` with the following content:
|
|
|
|
```ts title="src/scripts/my-script.ts"
|
|
import {
|
|
ExecArgs,
|
|
IProductModuleService
|
|
} from "@medusajs/types"
|
|
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
|
|
|
export default async function myScript ({
|
|
container
|
|
}: ExecArgs) {
|
|
const productModuleService: IProductModuleService =
|
|
container.resolve(ModuleRegistrationName.PRODUCT)
|
|
|
|
const [, count] = await productModuleService.listAndCount()
|
|
|
|
console.log(`You have ${count} product(s)`)
|
|
}
|
|
```
|
|
|
|
The function receives as a parameter an object having a `container` property, which is an instance of the Medusa Container. Use it to resolve resources in your Medusa application.
|
|
|
|
---
|
|
|
|
## How to Run Custom CLI Script?
|
|
|
|
To run the custom CLI script, `build` your code then run the `exec` command:
|
|
|
|
```bash npm2yarn
|
|
npm run build
|
|
npx medusa exec ./dist/scripts/my-script.js
|
|
```
|
|
|
|
Notice that you pass the path to the file in the `dist` directory.
|
|
|
|
---
|
|
|
|
## Custom CLI Script Arguments
|
|
|
|
Your script can accept arguments from the command line. Arguments are passed to the function's object parameter in the `args` property.
|
|
|
|
For example:
|
|
|
|
```ts
|
|
import { ExecArgs } from "@medusajs/types"
|
|
|
|
export default async function myScript ({
|
|
args
|
|
}: ExecArgs) {
|
|
console.log(`The arguments you passed: ${args}`)
|
|
}
|
|
```
|
|
|
|
Then, pass the arguments in the `exec` command after the file path:
|
|
|
|
```bash npm2yarn
|
|
npm run build
|
|
npx medusa exec ./dist/scripts/my-script.js arg1 arg2
|
|
``` |