mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-04 20:20:50 -06:00
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:
@@ -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)
|
||||
|
||||
28
src/backend/doc/extensions/pages/import-and-export.md
Normal file
28
src/backend/doc/extensions/pages/import-and-export.md
Normal 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!'
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user