forked from facebookarchive/draft-js
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathvite.config.css.ts
More file actions
94 lines (84 loc) · 2.46 KB
/
vite.config.css.ts
File metadata and controls
94 lines (84 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import {defineConfig} from 'vite';
import path from 'path';
import fs from 'fs';
// Custom plugin to concatenate and process CSS files
const draftCssPlugin = () => {
return {
name: 'draft-css-plugin',
generateBundle(options, bundle) {
// Read all CSS files
const cssFiles = [
'src/component/base/DraftEditor.css',
'src/component/base/DraftEditorPlaceholder.css',
'src/component/utils/DraftStyleDefault.css',
];
let combinedCss = '';
cssFiles.forEach(file => {
const content = fs.readFileSync(path.resolve(__dirname, file), 'utf-8');
// Process CSS similar to the original gulp task
let processed = content
// Replace class name separators
.replace(
/\/\*.*?\*\/|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|url\([^)]*\)|(\.(?:public\/)?[\w-]*\/{1,2}[\w-]+)/g,
(match, cls) => {
if (cls) {
return cls.replace(/\//g, '-');
}
return match;
},
)
// Replace CSS variables
.replace(/\bvar\(([\w-]+)\)/g, (match, name) => {
const vars = {
'fig-secondary-text': '#9197a3',
'fig-light-20': '#bdc1c9',
};
if (vars[name]) {
return vars[name];
}
throw new Error(`Unknown CSS variable ${name}`);
});
combinedCss += processed + '\n';
});
// Add copyright header
const packageData = JSON.parse(
fs.readFileSync(path.resolve(__dirname, 'package.json'), 'utf-8'),
);
const header = `/**
* Draft v${packageData.version}
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
`;
combinedCss = header + combinedCss;
// Emit the CSS file
this.emitFile({
type: 'asset',
fileName: 'Draft.css',
source: combinedCss,
});
},
};
};
export default defineConfig({
plugins: [draftCssPlugin()],
build: {
outDir: 'dist',
emptyOutDir: false,
lib: {
entry: path.resolve(__dirname, 'src/Draft.ts'), // Placeholder entry, CSS is handled by plugin
formats: ['es'],
fileName: () => 'placeholder.js',
},
minify: 'esbuild',
cssMinify: true,
rollupOptions: {
output: {
assetFileNames: '[name].[ext]',
},
},
},
});