{"id":20859630,"url":"https://github.com/inlym/egg-load","last_synced_at":"2025-05-12T08:32:37.098Z","repository":{"id":57220563,"uuid":"309632679","full_name":"inlym/egg-load","owner":"inlym","description":"🚀 自动挂载第三方模块至 Egg.js 框架上","archived":false,"fork":false,"pushed_at":"2020-11-13T03:39:23.000Z","size":12,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-14T21:39:39.906Z","etag":null,"topics":["egg","egg-plugin","eggjs","eggplugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inlym.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-03T09:16:29.000Z","updated_at":"2024-09-20T17:04:21.000Z","dependencies_parsed_at":"2022-08-29T00:11:57.707Z","dependency_job_id":null,"html_url":"https://github.com/inlym/egg-load","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlym%2Fegg-load","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlym%2Fegg-load/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlym%2Fegg-load/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlym%2Fegg-load/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inlym","download_url":"https://codeload.github.com/inlym/egg-load/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225130723,"owners_count":17425506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["egg","egg-plugin","eggjs","eggplugin"],"created_at":"2024-11-18T04:50:46.336Z","updated_at":"2024-11-18T04:50:46.856Z","avatar_url":"https://github.com/inlym.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# egg-load\n\n[![npm version](https://img.shields.io/npm/v/egg-load)](https://www.npmjs.com/package/egg-load)  [![MIT](https://img.shields.io/npm/l/egg-load)](https://github.com/inlym/egg-load/blob/master/LICENSE)  [![npm](https://img.shields.io/npm/dw/egg-load)](https://www.npmjs.com/package/egg-load)\n\n![egg-load-image](https://img.inlym.com/1843460a76f544f384bc276bed6da9e8.png)\n\n\n自动挂载第三方模块至 Egg.js 框架上\n\n\n## 目录\n\n-   [介绍](#介绍)\n-   [安装](#安装)\n-   [使用](#使用)\n    -   [启用插件](#启用插件)\n    -   [配置方式](#配置方式)\n    -   [使用说明](#使用说明)\n-   [示例](#示例)\n-   [相关](#相关)\n-   [作者](#作者)\n-   [参与](#参与)\n-   [许可证](#许可证)\n\n\n\n\n\n## 介绍\n\n在项目开发中，需要用到一些第三方模块（module），一般情况下使用 `require` 就可以将模块引入使用了。但是如果多个文件中用到同一个模块，在每个文件中都需要 `require` 引入，显得有些麻烦，同时也不利于项目工程化管理。\n\n本插件就是为了解决这个问题而诞生的，能够将指定的第三方模块挂载到 Egg.js 框架的 `app` 属性上，以便调用。\n\n\n本插件完美适配 **Egg.js** 框架，只需要按照框架要求启用插件，根据文档要求进行配置使用即可。\n\n\n\n## 安装\n\n按照通用的方式使用 npm 下载安装到你的项目下即可，无需全局安装。\n\n安装命令：\n\n```shell\nnpm i egg-load\n```\n\n\n\n## 使用\n\n在使用前，请确保你已经阅读 Egg.js 框架关于**插件**的 [文档](https://eggjs.org/zh-cn/basics/plugin.html) 。\n\n下面说明如何配置以及使用插件。\n\n\n\n### 启用插件\n\n在 `config/plugin.js` 文件中声明启用插件：\n\n```js\nexports.load = {\n  /** 是否启用插件，true 为启用，false 为禁用 */\n  enable: true,\n\n  /** 指定插件使用的包，请填写 'egg-load' */\n  package: 'egg-load',\n};\n```\n\n\n\n### 配置方式\n\n\n在 `config/config.${env}.js`文件配置插件：\n\n```js\nexports.load = {\n  /** 需要挂载的模块列表 */\n  module: [\n    /** 列表项支持对象（object）和字符串（string）两种形式 */\n    {\n      /** 需要挂载的 npm 包的包名，例如 axios，必填 */\n      package: 'pkg1-name',\n\n      /** 挂载的属性名，例如填 abc，该模块可以通过 app.abc 进行访问，默认为包名，选填 */\n      name: 'abc',\n\n      /** 是否禁用，默认为否，选填 */\n      disabled: false,\n    },\n\n  /** 使用字符串形式只需要输入包名即可，其他属性按照默认属性自动设置 */\n    'pkg2-name',\n  ],\n\n  /** 是否挂载到 app 上，默认开启 */\n  app: true,\n\n  /** 是否挂载到 agent 上，默认关闭 */\n  agent: false,\n}\n```\n\n各配置项的含义是：\n\n|  属性  |       类型       | 默认值 | 是否必填 |                             说明                             |\n| :----: | :--------------: | :----: | :------: | :----------------------------------------------------------: |\n| module | object \\| string |   无   |    否    | 需要挂载的模块列表，列表项支持对象（object）和字符串（string）两种形式 |\n|  app   |      string      |  true  |    否    |                 是否挂载到 app 上，默认开启                  |\n| agent  |     boolean      | false  |    否    |                是否挂载到 agent 上，默认关闭                 |\n\n\n\n### 使用说明\n\n按照上述方式配置后，第三方模块将自动挂载到了 `app` 上，可以通过指定的属性名进行访问。\n\n\n\n另外一点需要说明的是，配置引入的第三方模块，需要自行下载安装，本插件并不会帮助你自动下载。\n\n\n\n## 示例\n\n我们模拟以下这个使用场景，来演示如何配置和使用本插件：\n\n\u003e   发现 axios 和 only 两个模块的使用率非常高，于是准备将这两个模块挂载到框架上。\n\n\n\n在 `config/plugin.js` 文件中声明启用插件：\n\n```js\nexports.load = {\n  enable: true,\n  package: 'egg-load',\n};\n```\n\n\n\n在 `config/config.${env}.js`文件配置插件（示例是一个典型的配置方式）：\n\n```js\nexports.load = {\n  module: [\n    {\n      package: 'axios',\n      name: 'req',\n    },\n    'only',\n  ],\n}\n```\n\n\n\n通过上述示例方式配置后，可以通过 `app.res` 访问 axios 模块，以及通过 `app.only` 访问 only 模块。\n\n\n\n## 相关\n\n以下是作者开发的 Egg.js 框架的插件系列，已用于作者的生产项目中，推荐使用。\n-   [egg-apigw-tracer](https://github.com/inlym/egg-apigw-tracer) - ⚡ 适配 API 网关的 HTTP 请求示踪器，用于 Egg.js 框架\n-   [egg-aliyun-tablestore](https://github.com/inlym/egg-aliyun-tablestore) - 🚚 阿里云表格存储（Tablestore）插件，用于 Egg.js 框架\n-   [egg-load](https://github.com/inlym/egg-load) - 🚀 自动挂载第三方模块至 Egg.js 框架上\n\n\n\n\n## 作者\n\n我是 [inlym](https://www.inlym.com) ，一个产品经理和全栈开发者。\n\n\n\n如果你有任何问题或者建议，欢迎联系我，以下是我的联系方式：\n\n-   邮箱：inlym@qq.com\n-   主页：[www.inlym.com](https://www.inlym.com)\n\n\n\n## 参与\n\n非常欢迎你能够参与这个项目的开发和维护。\n\n你可以通过以下几种方式参与到项目中：\n\n1.  提建议和需求。对于几句话就能说清楚的建议和需求，你可以直接 提一个 [New Issue](https://github.com/inlym/egg-load/issues/new) 。\n2.  Fork 项目，修改代码，然后提交 Pull requests 。（提交前请检查务必通过 ESLint 检查）\n\n\n\n## 许可证\n\n本插件使用 [MIT](LICENSE) 许可证。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finlym%2Fegg-load","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finlym%2Fegg-load","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finlym%2Fegg-load/lists"}