-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvscode-framework.config.js
47 lines (45 loc) · 1.84 KB
/
vscode-framework.config.js
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
//@ts-check
const { defineConfig } = require('@zardoy/vscode-utils/build/defineConfig.cjs')
module.exports = defineConfig({
development: {
disableExtensions: false,
},
target: { desktop: true, web: true },
esbuild: {
plugins: [
{
name: 'all-features-index',
setup(build) {
const webBuild = !!build.initialOptions.outfile?.endsWith('extension-web.js')
const skipWebFeatures = ['inspectCompletionsDetails']
const namespace = 'all-features-index'
const fs = require('fs')
const featuresDir = './src/features/'
build.onResolve({ filter: /^all-features-index$/ }, args => {
return {
path: args.path,
watchDirs: [featuresDir],
namespace,
}
})
build.onLoad({ filter: /.*/, namespace }, args => {
const files = fs.readdirSync(featuresDir)
let contents = ''
for (const file of files) {
if (file.endsWith('.ts')) {
const fileName = file.replace('.ts', '')
if (file === 'index.ts' || (webBuild && skipWebFeatures.includes(fileName))) continue
contents += `export * as ${fileName} from './${fileName}'\n`
}
}
return {
contents,
resolveDir: featuresDir,
loader: 'ts',
}
})
},
},
],
},
})