# 나만의 애드온 작성하기

> Proxyman Scripting용 JavaScript 애드온을 직접 작성하고, 사용자 애드온 폴더에 저장한 뒤, require()로 어떤 스크립트에서든 가져와 사용하세요.

## 1. 무엇인가요? {#1-whats-it}

기본 제공 애드온이 아직 지원하지 않는 기능이 필요하다면 직접 애드온을 작성할 수 있습니다. 다음과 같이 할 수 있습니다:

* JavaScript 애드온을 직접 작성합니다.
* [기본 제공 라이브러리](https://proxyman.com/docs/ko/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)

_Custom Addons 폴더 열기_

2\. `HelloWorld.js` 파일을 복제한 뒤 **MyAwesomeAddon.js**로 이름을 바꿉니다.

3. 파일을 열어 템플릿을 확인합니다.

4\. 메타데이터를 수정하고 JS 코드를 작성합니다.

```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/ko/scripting/addons#2-built-in-addons)을 확인해 보세요

* **require("@libs/\<name.js>")**로 기본 제공 라이브러리를 가져올 수 있습니다.

> **노트:** Proxyman이 제공하는 [기본 제공 라이브러리](https://proxyman.com/docs/ko/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`는 Custom Addons 폴더를 가리킵니다.

## 3. 참고 {#3-note}

> **노트:** 직접 만든 애드온은 **\~/Library/Application\ Support/com.proxyman.NSProxy/users**에 저장됩니다.
>
> 이 폴더는 안전합니다. Proxyman이 이 폴더를 덮어쓰거나 삭제하지 않습니다.
