esbuild-plugin-httpfile
An esbuild plugin to import httpfile for HTTP Request/GraphQL request.
How to use?
- Create a http file, such as
demo.http, code as following:
### get my ip
//@name my-ip
GET https://httpbin.org/ip
User-Agent: curl/7.47.0
### post test
//@name post-test
POST https://{{host}}/post
User-Agent: curl/7.47.0
Content-Type: application/json
{
"name": "{{nick}}",
"age": 42,
"uuid": "{{$uuid}}"
}
- Add
esbuild-plugin-httpfile to your project's package.json or npm add -D esbuild-plugin-httpfile.
"devDependencies": {
"esbuild-plugin-httpfile": "^0.3.0"
}
- In JavaScript/TypeScript file, such as
hello.mjs, and you can import http file directly. Code as following:
import {myip} from "./demo.http";
let response = await myip();
console.log(await response.json());
esbuild example
build.js as following:
import esbuild from 'esbuild';
import httpfilePlugin from 'esbuild-plugin-httpfile';
esbuild.build({
bundle: true,
entryPoints: ['hello.mjs'],
plugins: [httpfilePlugin(true)],
platform: 'node',
format: "esm",
write: true,
outfile: "bundle.mjs"
}).then(result => {
console.log(result.outputFiles[0].text);
}).catch(() => process.exit(1));
Mock Support
You can mock request adding Mock-Result header for request. Code as following:
### get my ip
//@name myIp
GET https://httpbin.org/ip
User-Agent: curl/7.47.0
Mock-Result: {"origin":"127.0.0.1"}
Framework Integration
- tsup:
tsup.config.ts code as following:
import {defineConfig} from 'tsup'
import httpfilePlugin from "esbuild-plugin-httpfile";
export default defineConfig({
target: 'node18',
platform: 'node',
format: "esm",
outDir: "dist",
esbuildPlugins: [httpfilePlugin()]
})
References