Преглед изворни кода

Fix: Fixed building documentation on Windows. Closes #7212.

Marek Lewandowski пре 5 година
родитељ
комит
c7f69dde00
3 измењених фајлова са 17 додато и 13 уклоњено
  1. 1 0
      package.json
  2. 8 9
      scripts/docs/buildapi.js
  3. 8 4
      scripts/docs/snippetadapter.js

+ 1 - 0
package.json

@@ -117,6 +117,7 @@
     "svgo": "^1.3.2",
     "terser-webpack-plugin": "^3.0.2",
     "umberto": "^1.5.4",
+    "upath": "^2.0.0",
     "webpack": "^4.43.0"
   },
   "engines": {

+ 8 - 9
scripts/docs/buildapi.js

@@ -7,21 +7,20 @@
 
 'use strict';
 
-const path = require( 'path' );
-
 module.exports = function buildApiDocs() {
 	const ckeditor5Docs = require( '@ckeditor/ckeditor5-dev-docs' );
 
 	return ckeditor5Docs
 		.build( {
-			readmePath: path.join( process.cwd(), 'README.md' ),
+			// Patterns that do not start with '/' are mounted onto process.cwd() path by default.
+			readmePath: 'README.md',
 			sourceFiles: [
-				process.cwd() + '/packages/@(ckeditor|ckeditor5)-*/src/**/*.@(js|jsdoc)',
-				'!' + process.cwd() + '/packages/@(ckeditor|ckeditor5)-*/src/lib/**/*.js',
-				'!' + process.cwd() + '/packages/ckeditor5-build-*/src/**/*.js',
-				process.cwd() + '/external/*/packages/@(ckeditor|ckeditor5)-*/src/**/*.@(js|jsdoc)',
-				'!' + process.cwd() + '/external/*/packages/@(ckeditor|ckeditor5)-*/src/lib/**/*.js',
-				'!' + process.cwd() + '/external/*/packages/ckeditor5-build-*/src/**/*.js'
+				'packages/@(ckeditor|ckeditor5)-*/src/**/*.@(js|jsdoc)',
+				'!packages/@(ckeditor|ckeditor5)-*/src/lib/**/*.js',
+				'!packages/ckeditor5-build-*/src/**/*.js',
+				'external/*/packages/@(ckeditor|ckeditor5)-*/src/**/*.@(js|jsdoc)',
+				'!external/*/packages/@(ckeditor|ckeditor5)-*/src/lib/**/*.js',
+				'!external/*/packages/ckeditor5-build-*/src/**/*.js'
 			],
 			validateOnly: process.argv.includes( '--validate-only' ),
 			strict: process.argv.includes( '--strict' )

+ 8 - 4
scripts/docs/snippetadapter.js

@@ -6,6 +6,7 @@
 /* eslint-env node */
 
 const path = require( 'path' );
+const upath = require( 'upath' );
 const fs = require( 'fs' );
 const minimatch = require( 'minimatch' );
 const webpack = require( 'webpack' );
@@ -282,7 +283,7 @@ function getConstantDefinitions( snippets ) {
 			knownPaths.add( directory );
 
 			const absolutePathToConstants = path.join( directory, 'docs', 'constants.js' );
-			const importPathToConstants = path.posix.relative( __dirname, absolutePathToConstants );
+			const importPathToConstants = path.relative( __dirname, absolutePathToConstants );
 
 			if ( fs.existsSync( absolutePathToConstants ) ) {
 				const packageConstantDefinitions = require( './' + importPathToConstants );
@@ -432,7 +433,7 @@ function getWebpackConfig( snippets, config ) {
 
 	for ( const snippetData of snippets ) {
 		if ( !webpackConfig.output.path ) {
-			webpackConfig.output.path = snippetData.outputPath;
+			webpackConfig.output.path = path.normalize( snippetData.outputPath );
 		}
 
 		if ( webpackConfig.entry[ snippetData.snippetName ] ) {
@@ -490,7 +491,8 @@ function getPackageDependenciesPaths() {
 	};
 
 	return glob.sync( 'packages/*/node_modules', globOptions )
-		.concat( glob.sync( 'external/*/packages/*/node_modules', globOptions ) );
+		.concat( glob.sync( 'external/*/packages/*/node_modules', globOptions ) )
+		.map( p => path.normalize( p ) );
 }
 
 /**
@@ -512,7 +514,8 @@ function readSnippetConfig( snippetSourcePath ) {
 }
 
 /**
- * Removes duplicated entries specified in `files` array and map those entires using `mapFunction`.
+ * Removes duplicated entries specified in `files` array, unifies path separators to always be `/`
+ * and then maps those entries using `mapFunction`.
  *
  * @param {Array.<String>} files Paths collection.
  * @param {Function} mapFunction Function that should return a string.
@@ -520,6 +523,7 @@ function readSnippetConfig( snippetSourcePath ) {
  */
 function getHTMLImports( files, mapFunction ) {
 	return [ ...new Set( files ) ]
+		.map( path => upath.normalize( path ) )
 		.map( mapFunction )
 		.join( '\n' )
 		.replace( /^\s+/, '' );