瀏覽代碼

Multi-language editors must be built separately.

Kamil Piechaczek 6 年之前
父節點
當前提交
b7a7261fd4
共有 1 個文件被更改,包括 22 次插入18 次删除
  1. 22 18
      scripts/docs/snippetadapter.js

+ 22 - 18
scripts/docs/snippetadapter.js

@@ -16,6 +16,7 @@ const UglifyJsWebpackPlugin = require( 'uglifyjs-webpack-plugin' );
 const ProgressBarPlugin = require( 'progress-bar-webpack-plugin' );
 
 const DEFAULT_LANGUAGE = 'en';
+const MULTI_LANGUAGE = 'multi-language';
 
 /**
  * @param {Set.<Snippet>} snippets Snippet collection extracted from documentation files.
@@ -91,6 +92,12 @@ module.exports = function snippetAdapter( snippets, options, umbertoHelpers ) {
 	// Group snippets by language. There is no way to build different languages in a single Webpack process.
 	// Webpack must be called as many times as different languages are being used in snippets.
 	for ( const snippetData of snippets ) {
+		// Multi-languages editors must be built separately.
+		if ( snippetData.snippetConfig.additionalLanguages ) {
+			snippetData.snippetConfig.additionalLanguages.push( snippetData.snippetConfig.language );
+			snippetData.snippetConfig.language = MULTI_LANGUAGE;
+		}
+
 		if ( !groupedSnippetsByLanguage[ snippetData.snippetConfig.language ] ) {
 			groupedSnippetsByLanguage[ snippetData.snippetConfig.language ] = new Set();
 		}
@@ -184,11 +191,6 @@ module.exports = function snippetAdapter( snippets, options, umbertoHelpers ) {
 						snippetData.snippetConfig.additionalLanguages.forEach( language => {
 							jsFiles.push( path.join( snippetData.relativeOutputPath, 'translations', `${ language }.js` ) );
 						} );
-
-						// The default language must be imported as well.
-						jsFiles.push(
-							path.join( snippetData.relativeOutputPath, 'translations', `${ snippetData.snippetConfig.language }.js` )
-						);
 					}
 				}
 
@@ -273,23 +275,25 @@ function getWebpackConfig( snippets, config ) {
 		definitions[ definitionKey ] = JSON.stringify( config.definitions[ definitionKey ] );
 	}
 
-	const additionalLanguages = new Set();
+	const ckeditorWebpackPluginOptions = {};
 
-	// Find additional languages that must be built.
-	for ( const snippetData of snippets ) {
-		for ( const language of snippetData.snippetConfig.additionalLanguages || [] ) {
-			additionalLanguages.add( language );
-		}
-	}
+	if ( config.language === MULTI_LANGUAGE ) {
+		const additionalLanguages = new Set();
 
-	const ckeditorWebpackPluginOptions = {
-		language: config.language
-	};
+		// Find all additional languages that must be built.
+		for ( const snippetData of snippets ) {
+			for ( const language of snippetData.snippetConfig.additionalLanguages ) {
+				additionalLanguages.add( language );
+			}
+		}
 
-	// Pass `additionalLanguages` to `CKEditorWebpackPlugin` only if at least one is defined.
-	if ( additionalLanguages.size ) {
-		// Also, we want to get unique values only.
+		// Pass unique values of `additionalLanguages` to `CKEditorWebpackPlugin`.
 		ckeditorWebpackPluginOptions.additionalLanguages = [ ...additionalLanguages ];
+
+		// Also, set the default language because of the warning that comes from the plugin.
+		ckeditorWebpackPluginOptions.language = DEFAULT_LANGUAGE;
+	} else {
+		ckeditorWebpackPluginOptions.language = config.language;
 	}
 
 	const webpackConfig = {