# 编写你自己的插件

> 为 Proxyman Scripting 编写你自己的 JavaScript 插件，将其保存到自定义插件文件夹中，并通过 require() 导入到任意脚本。

## 1. 这是什么？ {#1-whats-it}

你可以编写自己的插件，实现内置插件尚未提供的功能。你可以：

* 编写自己的 JavaScript 插件。
* 使用[内置库](https://proxyman.com/docs/zh-cn/scripting/built-in-js-libraries)。
* 编写自己的库，并与同事分享。

## 2. 如何编写插件？ {#2-how-to-write-an-addon}

1. 打开用户插件文件夹 `~/Library/Application\ Support/com.proxyman.NSProxy/users`。或者，在 Script Editor 中点击 **More** -> **Documentations** -> **Open Custom Addons Folder...**

![Proxyman Script Editor 的 More 菜单，已展开 Documentations，并高亮 Open Custom Addons Folder](https://proxyman.com/docs/assets/proxyman-script-open-custom-addons-folder.jpg)

_打开自定义插件文件夹_

2\. 复制 `HelloWorld.js` 文件，并将其重命名为 **MyAwesomeAddon.js**

3\. 打开文件，查看模板。

4\. 修改元数据，并编写你的 JavaScript 代码

```javascript
/**
    {
        "name":"My Awesome Addon",
        "description":"The first User Addons",
        "author":"Proxyman",
        "tags":"helloworld"
    }
**/

const { md5 } = require("@addons/MD5.js");

const sayHello = () => {
  var content = "Hello World. My first custom Addon.";
  var hash = md5(content);
  return content + ". MD5 = " + hash;
};

// Make sure you export the function at the end of method
exports.sayHello = sayHello;

```

* 你可以使用 **require("@addons/\<name.js>")** 导入内置插件

```javascript
const { md5 } = require("@addons/MD5.js");
```

> **备注:** 查看 Proxyman 提供的[内置插件](https://proxyman.com/docs/zh-cn/scripting/addons#2-built-in-addons)

* 你可以使用 **require("@libs/\<name.js>")** 导入内置库

> **备注:** 查看 Proxyman 提供的[内置库](https://proxyman.com/docs/zh-cn/scripting/built-in-js-libraries)

5\. 保存文件

6\. 在 Proxyman 中打开你的脚本，并导入插件

```javascript
// Import your addon
// Make sure you import the functions that you export in the addon
const { sayHello } = require("@users/MyAwesomeAddon.js");

// Usage
sayHello();
```

> **备注:** 在 **require("@users/MyAwesomeAddon.js")** 中，`@users` 指向自定义插件文件夹。

## 3. 注意事项 {#3-note}

> **备注:** 你自己的插件存储在 **\~/Library/Application\ Support/com.proxyman.NSProxy/users** 中。
>
> 该文件夹是安全的，Proxyman 绝不会覆盖或删除它。
