Skip to content

Commit 515bfd9

Browse files
authored
chore(examples): add React and Node.js examples (#53)
1 parent 92a053b commit 515bfd9

File tree

18 files changed

+817
-16
lines changed

18 files changed

+817
-16
lines changed

examples/basic/package.json

Lines changed: 0 additions & 10 deletions
This file was deleted.

examples/basic/src/constants.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

examples/basic/src/index.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

examples/express-plugin/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# @examples/express-plugin
2+
3+
This example demonstrates how to use Rslib to build a simple Node.js package.

examples/express-plugin/package.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "@examples/express-plugin",
3+
"private": true,
4+
"scripts": {
5+
"build": "rslib build"
6+
},
7+
"dependencies": {},
8+
"devDependencies": {
9+
"@rslib/core": "workspace:*",
10+
"@types/express": "^4.17.21",
11+
"express": "^4.19.2",
12+
"typescript": "^5.5.3"
13+
},
14+
"peerDependencies": {
15+
"express": "^4"
16+
}
17+
}

examples/basic/rslib.config.ts renamed to examples/express-plugin/rslib.config.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
import { defineConfig } from '@rslib/core';
22

3+
const shared = {
4+
autoExtension: true,
5+
dts: {
6+
bundle: false,
7+
},
8+
};
9+
310
export default defineConfig({
411
lib: [
512
{
13+
...shared,
614
format: 'esm',
715
output: {
816
distPath: {
@@ -11,6 +19,7 @@ export default defineConfig({
1119
},
1220
},
1321
{
22+
...shared,
1423
format: 'cjs',
1524
output: {
1625
distPath: {
@@ -24,4 +33,10 @@ export default defineConfig({
2433
main: './src/index.ts',
2534
},
2635
},
36+
output: {
37+
externals: {
38+
express: 'express',
39+
},
40+
target: 'node',
41+
},
2742
});

examples/express-plugin/src/index.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type { RequestHandler } from 'express';
2+
import { logRequest } from './logger';
3+
import { type LoggerOptions, defaultOptions } from './types';
4+
5+
export function expressLogger(
6+
options: Partial<LoggerOptions> = {},
7+
): RequestHandler {
8+
const mergedOptions = { ...defaultOptions, ...options };
9+
return (req, res, next) => {
10+
logRequest(req, mergedOptions);
11+
next();
12+
};
13+
}
14+
15+
export * from './types';

examples/express-plugin/src/logger.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import type { Request } from 'express';
2+
import type { LoggerOptions } from './types';
3+
4+
export function logRequest(req: Request, options: LoggerOptions): void {
5+
const { method, url } = req;
6+
const logMessage = `${method} ${url}`;
7+
8+
switch (options.logLevel) {
9+
case 'debug':
10+
console.debug(logMessage);
11+
break;
12+
case 'warn':
13+
console.warn(logMessage);
14+
break;
15+
case 'error':
16+
console.error(logMessage);
17+
break;
18+
default:
19+
console.log(logMessage);
20+
}
21+
22+
if (options.logBody && req.body) {
23+
console.log('Request body:', req.body);
24+
}
25+
}

examples/express-plugin/src/types.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export interface LoggerOptions {
2+
logLevel: 'info' | 'debug' | 'warn' | 'error';
3+
logBody: boolean;
4+
}
5+
6+
export const defaultOptions: LoggerOptions = {
7+
logLevel: 'info',
8+
logBody: false,
9+
};

examples/express-plugin/tsconfig.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"compilerOptions": {
3+
"strict": true
4+
},
5+
"include": ["src/**/*"]
6+
}

0 commit comments

Comments
 (0)