{"id":21606307,"url":"https://github.com/hengshanmwc/box-cat-loader","last_synced_at":"2026-06-28T05:32:08.702Z","repository":{"id":98501041,"uuid":"317470445","full_name":"hengshanMWC/box-cat-loader","owner":"hengshanMWC","description":"前端管理后端接口最终方案最后一环","archived":false,"fork":false,"pushed_at":"2021-08-23T16:32:47.000Z","size":86,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T23:07:16.459Z","etag":null,"topics":["export","loader","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hengshanMWC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-01T08:15:07.000Z","updated_at":"2022-07-29T03:44:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"143e1357-a6a7-4432-85d5-fd7cabbb5616","html_url":"https://github.com/hengshanMWC/box-cat-loader","commit_stats":{"total_commits":38,"total_committers":1,"mean_commits":38.0,"dds":0.0,"last_synced_commit":"910bd09edca9dce27dae6124805ca18857cdf52d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hengshanMWC%2Fbox-cat-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hengshanMWC%2Fbox-cat-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hengshanMWC%2Fbox-cat-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hengshanMWC%2Fbox-cat-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hengshanMWC","download_url":"https://codeload.github.com/hengshanMWC/box-cat-loader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244244503,"owners_count":20422303,"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":["export","loader","webpack"],"created_at":"2024-11-24T20:20:36.668Z","updated_at":"2026-06-28T05:32:08.661Z","avatar_url":"https://github.com/hengshanMWC.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Features\n一个自动添加export的插件与[box-cat]('https://github.com/hengshanMWC/film)绝配\n# Scene\n[强行震惊！竟然解决了请求接口中的冗余]('https://juejin.cn/post/6850418120830976007')\n\n对于同类型的工厂产出来的object，如果每次手动export出去会很low，所以按这个思路写的一个自动添加epxort的loader\n\n**box-cat**是一个接口工厂函数，通过data数据(object)加工成产品http\n```js\n// apis/index.js\nimport { createApis } from 'box-cat'\nimport axios from 'axios'\nimport data from './data'\nconst http = createApis(data, axios)\nexport default http\n```\n我们是通过export default一整个导出去。但是有时候我们更希望用export这种按需加载并且来源明确去引用，但是如果我们通过工厂生成后再一个个export出去，未免也太low了。所以想着写一个loader来在编译时自动export出去\n```js\n// apis/data.js\nexport default {\n  getUserInfo: 'userInfo',\n  putUserInfo: 'userInfo'\n} \n// apis/index.js\nimport { createApis } from 'box-cat'\nimport axios from 'axios'\nimport data from './data'\nconst http = createApis(data, axios)\nexport default http\n// box-cat-loader就会根据data来添加export\nexport const getUserInfo = http.getUserInfo\nexport const putUserInfo = http.putUserInfo\n```\n数据太多的话，可以按模块拆分成目录，loader会根据你的import路径去找数据，规定模块数据源为export default {}\n# Introduction\n通过include指定出口文件\n```js\n// 例子\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.js$/,\n        include: [\n          path.resolve(__dirname, ITEM_PATH, 'index.js')\n        ],\n        use: {\n          loader: path.resolve(__dirname, '../../lib/index.js'),\n          options: { // 默认的options如下\n            data: 'data', // 数据变量名\n            http: 'http' // 产品变量名\n          }\n        }\n      }\n    ]\n  },\n}\n```\n\n# Rule\n数据只能通过默认导出或者声明变量，而且值的格式只能是{}。\n支持数据别名引入\n还是不清楚的，可以到test目录下查看demo\n```js\n// 例子1\n// 声明变量\nconst data = {} // let,var也可以\n\n// 例子2\n// data.js\nexport default {}\n// index.js\nimport data from 'data'\n```\n\n# End\n\n这个不止是配合box-cat的，一些同类型的工厂也可以使用，数据 + 工厂 = 产品。然后通过loader来进行编译时export\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhengshanmwc%2Fbox-cat-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhengshanmwc%2Fbox-cat-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhengshanmwc%2Fbox-cat-loader/lists"}