Forráskód Böngészése

Merge pull request #2853 from ValeraS/webpack-plugin

tune(monaco-editor-webpack-plugin): expose plugin options type
Alexandru Dima 3 éve
szülő
commit
c9e1c9962b
1 módosított fájl, 48 hozzáadás és 47 törlés
  1. 48 47
      webpack-plugin/src/index.ts

+ 48 - 47
webpack-plugin/src/index.ts

@@ -99,53 +99,54 @@ function resolveDesiredLanguages(
 	return coalesce(languages.map((id) => languagesById[id])).concat(userCustomLanguages || []);
 }
 
-interface IMonacoEditorWebpackPluginOpts {
-	/**
-	 * Include only a subset of the languages supported.
-	 */
-	languages?: EditorLanguage[];
-
-	/**
-	 * Custom languages (outside of the ones shipped with the `monaco-editor`).
-	 */
-	customLanguages?: IFeatureDefinition[];
-
-	/**
-	 * Include only a subset of the editor features.
-	 * Use e.g. '!contextmenu' to exclude a certain feature.
-	 */
-	features?: (EditorFeature | NegatedEditorFeature)[];
-
-	/**
-	 * Specify a filename template to use for generated files.
-	 * Use e.g. '[name].worker.[contenthash].js' to include content-based hashes.
-	 */
-	filename?: string;
-
-	/**
-	 * The absolute file system path to the monaco-editor npm module.
-	 * Use e.g. `C:\projects\my-project\node-modules\monaco-editor`
-	 */
-	monacoEditorPath?: string;
-
-	/**
-	 * Override the public path from which files generated by this plugin will be served.
-	 * This wins out over Webpack's dynamic runtime path and can be useful to avoid attempting to load workers cross-
-	 * origin when using a CDN for other static resources.
-	 * Use e.g. '/' if you want to load your resources from the current origin.
-	 */
-	publicPath?: string;
-
-	/**
-	 * Specify whether the editor API should be exposed through a global `monaco` object or not. This
-	 * option is applicable to `0.22.0` and newer version of `monaco-editor`. Since `0.22.0`, the ESM
-	 * version of the monaco editor does no longer define a global `monaco` object unless
-	 * `global.MonacoEnvironment = { globalAPI: true }` is set ([change
-	 * log](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md#0220-29012021)).
-	 */
-	globalAPI?: boolean;
+declare namespace MonacoEditorWebpackPlugin {
+	interface IMonacoEditorWebpackPluginOpts {
+		/**
+		 * Include only a subset of the languages supported.
+		 */
+		languages?: EditorLanguage[];
+
+		/**
+		 * Custom languages (outside of the ones shipped with the `monaco-editor`).
+		 */
+		customLanguages?: IFeatureDefinition[];
+
+		/**
+		 * Include only a subset of the editor features.
+		 * Use e.g. '!contextmenu' to exclude a certain feature.
+		 */
+		features?: (EditorFeature | NegatedEditorFeature)[];
+
+		/**
+		 * Specify a filename template to use for generated files.
+		 * Use e.g. '[name].worker.[contenthash].js' to include content-based hashes.
+		 */
+		filename?: string;
+
+		/**
+		 * The absolute file system path to the monaco-editor npm module.
+		 * Use e.g. `C:\projects\my-project\node-modules\monaco-editor`
+		 */
+		monacoEditorPath?: string;
+
+		/**
+		 * Override the public path from which files generated by this plugin will be served.
+		 * This wins out over Webpack's dynamic runtime path and can be useful to avoid attempting to load workers cross-
+		 * origin when using a CDN for other static resources.
+		 * Use e.g. '/' if you want to load your resources from the current origin.
+		 */
+		publicPath?: string;
+
+		/**
+		 * Specify whether the editor API should be exposed through a global `monaco` object or not. This
+		 * option is applicable to `0.22.0` and newer version of `monaco-editor`. Since `0.22.0`, the ESM
+		 * version of the monaco editor does no longer define a global `monaco` object unless
+		 * `global.MonacoEnvironment = { globalAPI: true }` is set ([change
+		 * log](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md#0220-29012021)).
+		 */
+		globalAPI?: boolean;
+	}
 }
-
 interface IInternalMonacoEditorWebpackPluginOpts {
 	languages: IFeatureDefinition[];
 	features: IFeatureDefinition[];
@@ -158,7 +159,7 @@ interface IInternalMonacoEditorWebpackPluginOpts {
 class MonacoEditorWebpackPlugin implements webpack.WebpackPluginInstance {
 	private readonly options: IInternalMonacoEditorWebpackPluginOpts;
 
-	constructor(options: IMonacoEditorWebpackPluginOpts = {}) {
+	constructor(options: MonacoEditorWebpackPlugin.IMonacoEditorWebpackPluginOpts = {}) {
 		const monacoEditorPath = options.monacoEditorPath;
 		const metadata = getEditorMetadata(monacoEditorPath);
 		const languages = resolveDesiredLanguages(metadata, options.languages, options.customLanguages);