Skip to content

Commit 804867c

Browse files
author
Fergus Bisset
committed
Initial SPC Export Setup and Build
1 parent 16558cb commit 804867c

34 files changed

+8693
-440
lines changed

config/tsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"DOM.Iterable"
99
],
1010
"module": "ESNext",
11+
/* Disambiguate the project root for TS when resolving self-package exports */
12+
"rootDir": "..",
1113
"skipLibCheck": true,
1214
/* Bundler mode */
1315
"moduleResolution": "bundler",

config/vite.spc.config.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { defineConfig, Plugin } from 'vite';
2+
import react from '@vitejs/plugin-react';
3+
import { resolve } from 'path';
4+
import dts from 'vite-plugin-dts';
5+
6+
// Ignore SCSS during JS lib build (CSS is handled by existing CSS pipelines if/when needed)
7+
const ignoreScssPlugin = (): Plugin => ({
8+
name: 'spc-ignore-scss',
9+
load(id) {
10+
if (id.endsWith('.scss')) return { code: '' };
11+
}
12+
});
13+
14+
export default defineConfig({
15+
plugins: [
16+
ignoreScssPlugin(),
17+
react({ jsxRuntime: 'classic' }),
18+
dts({
19+
entryRoot: resolve(__dirname, '../packages/nhs-fdp-spc/src'),
20+
outDir: resolve(__dirname, '../packages/nhs-fdp-spc/dist'),
21+
tsconfigPath: resolve(__dirname, '../tsconfig.build.json'),
22+
copyDtsFiles: true
23+
})
24+
],
25+
resolve: {
26+
alias: {
27+
'@ds': resolve(__dirname, '../src')
28+
}
29+
},
30+
build: {
31+
lib: {
32+
entry: {
33+
index: resolve(__dirname, '../packages/nhs-fdp-spc/src/index.ts'),
34+
engine: resolve(__dirname, '../packages/nhs-fdp-spc/src/engine/index.ts'),
35+
icons: resolve(__dirname, '../packages/nhs-fdp-spc/src/icons/index.ts')
36+
},
37+
formats: ['es'],
38+
fileName: (_format, entryName) => {
39+
if (entryName === 'index') return 'index.esm.js';
40+
return `${entryName}/index.js`;
41+
}
42+
},
43+
rollupOptions: {
44+
external: [
45+
'react',
46+
'react-dom',
47+
'react/jsx-runtime',
48+
'react/jsx-dev-runtime'
49+
]
50+
},
51+
sourcemap: true,
52+
copyPublicDir: false,
53+
outDir: resolve(__dirname, '../packages/nhs-fdp-spc/dist'),
54+
emptyOutDir: true
55+
}
56+
});

config/vite.spc.css.config.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { defineConfig } from 'vite';
2+
import { resolve } from 'path';
3+
4+
// Build a single CSS bundle for SPC package by aggregating root SPC styles
5+
export default defineConfig({
6+
build: {
7+
lib: {
8+
entry: resolve(__dirname, '../packages/nhs-fdp-spc/src/styles/spc.scss'),
9+
formats: ['es'],
10+
fileName: () => 'spc'
11+
},
12+
rollupOptions: {
13+
output: {
14+
assetFileNames: (assetInfo) => {
15+
if (assetInfo.name && assetInfo.name.endsWith('.css')) {
16+
return 'spc.css';
17+
}
18+
return assetInfo.name || '[name]';
19+
}
20+
}
21+
},
22+
sourcemap: true,
23+
copyPublicDir: false,
24+
outDir: resolve(__dirname, '../packages/nhs-fdp-spc/dist'),
25+
emptyOutDir: false,
26+
cssCodeSplit: false,
27+
minify: false
28+
}
29+
});

0 commit comments

Comments
 (0)