-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathdocusaurus-plugin.js
52 lines (49 loc) · 2.26 KB
/
docusaurus-plugin.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
48
49
50
51
52
const path = require("path");
const { DefinePlugin } = require("webpack");
const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
// Not used directly in playground, because it imports typescript
const { SyntaxKind: LuaSyntaxKind } = require("typescript-to-lua/dist/LuaAST");
const resolve = query => path.resolve(__dirname, query);
/** @returns {import('@docusaurus/types').Plugin<any>} */
module.exports = () => ({
configureWebpack: (config, isServer) => {
return {
node: { fs: "empty" },
resolveLoader: {
// Don't generate worker files in server build, because it overrides client files
alias: isServer ? { "worker-loader": require.resolve("null-loader") } : {},
},
resolve: {
alias: {
// Replace vendored monaco-typescript services build with typescript, already used by typescript-to-lua
[require.resolve(
"monaco-editor/esm/vs/language/typescript/lib/typescriptServices.js",
)]: require.resolve("typescript"),
// Exclude builtin monaco-typescript libs
[require.resolve("monaco-editor/esm/vs/language/typescript/lib/lib.js")]: resolve("src/empty.ts"),
},
},
module: {
rules: [
{ test: /\.ttf$/, loader: "file-loader" },
{
test: /\.scss$/,
exclude: /\.module\.scss$/,
use: [...config.module.rules.find(r => String(r.test) === "/\\.css$/").use, "sass-loader"],
},
{
test: /\.module\.scss$/,
use: [
...config.module.rules.find(r => String(r.test) === "/\\.module\\.css$/").use,
"sass-loader",
],
},
],
},
plugins: [
new DefinePlugin({ __LUA_SYNTAX_KIND__: JSON.stringify(LuaSyntaxKind) }),
...(isServer ? [] : [new ForkTsCheckerWebpackPlugin({ tsconfig: resolve("src/tsconfig.json") })]),
],
};
},
});