node-apis.mdx (Creating Plugins - Using Node.js APIs)

Summary: Restyle of page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: mweststrate

Differential Revision: D36596005

fbshipit-source-id: 9ae71f426fad792af6e13f949581e26f8366baa4
This commit is contained in:
Kevin Strider
2022-05-23 09:43:57 -07:00
committed by Facebook GitHub Bot
parent cd1345bc28
commit d9524e893c

View File

@@ -3,16 +3,15 @@ id: node-apis
title: Using Node.js APIs title: Using Node.js APIs
--- ---
Flipper plugins should be designed to work inside browsers as well, as Flipper isn't guaranteed to be always running on top of Electron. Flipper plugins should be designed to work inside browsers as Flipper isn't guaranteed to always run on top of Electron.
For that reason it should be avoided to use Node.js APIs directly (e.g. modules like `fs`, `child_process`, `path`), For that reason, you should avoid using Node.js APIs directly (with, for example, modules like `fs`, `child_process`, `path`), or packages that depend on the plugins.
or packages that depend on those.
The most important Node APIs can be found by using `getFlipperLib()` (exposed by the `flipper-plugin` package). Please note that these APIs are all promisified. The most important Node APIs can be found by using `getFlipperLib()` (exposed by the `flipper-plugin` package). Please note that these APIs are all promisified:
* `fs`: Use `getFlipperLib().remoteServerContext.fs` instead. * `fs` - use `getFlipperLib().remoteServerContext.fs` instead.
* `child_process`: Use `getFlipperLib().remoteServerContext.childProcess.exec`. Note that this API is intended for short lived processes only. * `child_process` - use `getFlipperLib().remoteServerContext.childProcess.exec`. Note that this API is intended for short lived processes only.
* `path`: Use `import {path} from 'flipper-plugin'` instead. * `path` - use `import {path} from 'flipper-plugin'` instead.
* `os`: Use `getFlipperLib().environmentInfo.os` instead. * `os` - use `getFlipperLib().environmentInfo.os` instead.
* For system specific directories like home, desktop, etc, use `getFlipperLib().paths.homePath` and alike. * For system-specific directories such as 'home' and 'desktop', use `getFlipperLib().paths.homePath` and similar.
In the future, these APIs might be subject to further security / permission restrictions to sandbox plugins better. In the future, these APIs may be subject to further security / permission restrictions to better sandbox plugins.