You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docusaurus/docs/dev-docs/plugins-extension.md
+15-11Lines changed: 15 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,14 +21,14 @@ Plugin extensions code is located in the `./src/extensions` folder (see [project
21
21
```bash
22
22
/extensions
23
23
/some-plugin-to-extend
24
-
strapi-server.js
24
+
strapi-server.js|ts
25
25
/content-types
26
26
/some-content-type-to-extend
27
27
model.json
28
28
/another-content-type-to-extend
29
29
model.json
30
30
/another-plugin-to-extend
31
-
strapi-server.js
31
+
strapi-server.js|ts
32
32
```
33
33
</details>
34
34
@@ -39,13 +39,13 @@ Plugins can be extended in 2 ways:
39
39
40
40
## Extending a plugin's content-types
41
41
42
-
A plugin's Content-Types can be extended in 2 ways: using the programmatic interface within `strapi-server.js` and by overriding the content-types schemas.
42
+
A plugin's Content-Types can be extended in 2 ways: using the programmatic interface within `strapi-server.js|ts` and by overriding the content-types schemas.
43
43
44
44
The final schema of the content-types depends on the following loading order:
45
45
46
46
1. the content-types of the original plugin,
47
47
2. the content-types overridden by the declarations in the [schema](/dev-docs/backend-customization/models#model-schema) defined in `./src/extensions/plugin-name/content-types/content-type-name/schema.json`
48
-
3. the content-types declarations in the [`content-types` key exported from `strapi-server.js`](/dev-docs/api/plugins/server-api#content-types)
48
+
3. the content-types declarations in the [`content-types` key exported from `strapi-server.js|ts`](/dev-docs/api/plugins/server-api#content-types)
49
49
4. the content-types declarations in the [`register()` function](/dev-docs/configurations/functions#register) of the Strapi application
50
50
51
51
To overwrite a plugin's [content-types](/dev-docs/backend-customization/models):
@@ -63,23 +63,27 @@ When a Strapi application is initializing, plugins, extensions and global lifecy
63
63
64
64
1. Plugins are loaded and their interfaces are exposed.
65
65
2. Files in `./src/extensions` are loaded.
66
-
3. The `register()` and `bootstrap()` functions in `./src/index.js` are called.
66
+
3. The `register()` and `bootstrap()` functions in `./src/index.js|ts` are called.
67
67
68
-
A plugin's interface can be extended at step 2 (i.e. within `./src/extensions`) or step 3 (i.e. inside `./src/index.js`).
68
+
A plugin's interface can be extended at step 2 (i.e. within `./src/extensions`) or step 3 (i.e. inside `./src/index.js|ts`).
69
+
70
+
:::note
71
+
If your Strapi project is TypeScript-based, please ensure that the `index` file has a TypeScript extension (i.e., `src/index.ts`) otherwise it will not be compiled.
72
+
:::
69
73
70
74
### Within the extensions folder
71
75
72
76
To extend a plugin's server interface using the `./src/extensions` folder:
73
77
74
78
1._(optional)_ Create the `./src/extensions` folder at the root of the app, if the folder does not already exist.
75
79
2. Create a subfolder with the same name as the plugin to be extended.
76
-
3. Create a `strapi-server.js` file to extend a plugin's back end using the [Server API](/dev-docs/api/plugins/server-api).
80
+
3. Create a `strapi-server.js|ts` file to extend a plugin's back end using the [Server API](/dev-docs/api/plugins/server-api).
77
81
4. Within this file, define and export a function. The function receives the `plugin` interface as an argument so it can be extended.
To extend a plugin's interface within `./src/index.js`, use the `bootstrap()` and `register()`[functions](/dev-docs/configurations/functions) of the whole project, and access the interface programmatically with [getters](/dev-docs/api/plugins/server-api#usage).
106
+
To extend a plugin's interface within `./src/index.js|ts`, use the `bootstrap()` and `register()`[functions](/dev-docs/configurations/functions) of the whole project, and access the interface programmatically with [getters](/dev-docs/api/plugins/server-api#usage).
103
107
104
108
<details>
105
-
<summary>Example of extending a plugin's content-type within ./src/index.js</summary>
109
+
<summary>Example of extending a plugin's content-type within ./src/index.js|ts</summary>
0 commit comments