doc(extensions): exports not front-and-center

The extension documentation mentions imports and exports together very
early on, but extension exports should be used sparingly. I suspect most
extensions with exports will be among Puter's builtin extensions.
This commit is contained in:
KernelDeimos
2025-10-01 16:47:56 -04:00
parent 9946d2ffc5
commit bfffdfdc36
2 changed files with 34 additions and 22 deletions

View File

@@ -51,33 +51,17 @@ extension.on('init', event => {
});
```
### Importing / Exporting
### Imports
Here are two extensions. One extension has an "extension export" (an export to
other extensions) and an "extension import" (an import from another extension).
This is different from regular `import` or `require()` because it resolves to
a Puter extension loaded at runtime rather than an `npm` module.
Your extensions may need to invoke specific actions in Puter's backend
in response to an event. Puter provides libraries at runtime which you
can access via `extension.imports`:
To import and export in Puter extensions, we use `extension.import()` and `extension.exports`.
`exports-something.js`
```javascript
//@puter priority -1
// ^ setting load priority to "-1" allows other extensions to import
// this extension's exports before the initialization event occurs
// Just like "module.exports", but for extensions!
extension.exports = {
test_value: 'Hello, extensions!,
};
const { kv } = extension.imports('data');
kv.set('some-key', 'some value');
```
`imports-something.js`
```javascript
const { test_value } = extension.import('exports-something');
console.log(test_value); // 'Hello, extensions!'
```
### Adding Features to Puter
- [Implementing Drivers](./pages/drivers.md)

View File

@@ -0,0 +1,28 @@
## Extensions - Importing & Exporting
Here are two extensions. One extension has an "extension export" (an export to
other extensions) and an "extension import" (an import from another extension).
This is different from regular `import` or `require()` because it resolves to
a Puter extension loaded at runtime rather than an `npm` module.
To import and export in Puter extensions, we use `extension.import()` and `extension.exports`.
`exports-something.js`
```javascript
//@puter priority -1
// ^ setting load priority to "-1" allows other extensions to import
// this extension's exports before the initialization event occurs
// Just like "module.exports", but for extensions!
extension.exports = {
test_value: 'Hello, extensions!,
};
```
`imports-something.js`
```javascript
const { test_value } = extension.import('exports-something');
console.log(test_value); // 'Hello, extensions!'
```