-
Notifications
You must be signed in to change notification settings - Fork 93
chore(build): build a universal ESM and CommonJS package #371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
6eed483
463b6cc
3b03327
2d63956
6e24d64
3f10cbd
52ccf24
cbebf3e
8fc12bc
3bf00e6
c138c1e
2e76d9a
49dccbe
a262914
5a12fec
ad51a41
7064ad0
70cd5c9
00a1b19
515b7c5
6f5540e
c61e643
9e4d91b
bf35972
c70853e
384a3be
6a70bbe
820292c
cce6ddb
9555dcd
4ea91c3
f7942de
cd0c393
be5c06b
f7e5167
0e28212
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/usr/bin/env tsx | ||
|
||
import { writeFileSync, mkdirSync } from "fs"; | ||
import { resolve } from "path"; | ||
|
||
const distDir = resolve("dist"); | ||
|
||
/** | ||
* Node uses the package.json to know whether files with a .js extensions | ||
* should be interpreted as CommonJS or ESM. | ||
*/ | ||
// ESM package.json | ||
const esmPath = resolve(distDir, "esm", "package.json"); | ||
mkdirSync(resolve(distDir, "esm"), { recursive: true }); | ||
writeFileSync(esmPath, JSON.stringify({ type: "module" })); | ||
|
||
// CJS package.json | ||
const cjsPath = resolve(distDir, "cjs", "package.json"); | ||
mkdirSync(resolve(distDir, "cjs"), { recursive: true }); | ||
writeFileSync(cjsPath, JSON.stringify({ type: "commonjs" })); | ||
|
||
// Create a dist/index.js file that imports the ESM index.js file | ||
// To minimize breaking changes from pre-universal package time. | ||
const indexPath = resolve(distDir, "index.js"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is just out of precaution in case some of our deployments end up looking for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I personally think its fine to have it. |
||
writeFileSync(indexPath, `import "./esm/index.js";`); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/usr/bin/env node | ||
|
||
import { readFileSync, writeFileSync } from "fs"; | ||
import { join } from "path"; | ||
|
||
// Read package.json | ||
const packageJsonPath = join(import.meta.dirname, "..", "package.json"); | ||
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")) as { | ||
version: string; | ||
}; | ||
|
||
// Define the packageInfo.ts content | ||
const packageInfoContent = `// This file was generated by scripts/updatePackageVersion.ts - Do not edit it manually. | ||
export const packageInfo = { | ||
version: "${packageJson.version}", | ||
mcpServerName: "MongoDB MCP Server", | ||
}; | ||
`; | ||
|
||
// Write to packageInfo.ts | ||
const packageInfoPath = join(import.meta.dirname, "..", "src", "common", "packageInfo.ts"); | ||
writeFileSync(packageInfoPath, packageInfoContent); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
import packageJson from "../../package.json" with { type: "json" }; | ||
|
||
// This file was generated by scripts/updatePackageVersion.ts - Do not edit it manually. | ||
export const packageInfo = { | ||
version: packageJson.version, | ||
version: "0.2.0", | ||
mcpServerName: "MongoDB MCP Server", | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export { Server, type ServerOptions } from "./server.js"; | ||
export { Telemetry } from "./telemetry/telemetry.js"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we can consider exporting a single class which would make the setup easier but I'll leave that to future followups |
||
export { Session, type SessionOptions } from "./common/session.js"; | ||
export type { UserConfig, ConnectOptions } from "./common/config.js"; |
Uh oh!
There was an error while loading. Please reload this page.