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

Improve `monaco-css` scripts

Alex Dima пре 3 година
родитељ
комит
e441fd4498
6 измењених фајлова са 81 додато и 70 уклоњено
  1. 62 0
      build/utils.js
  2. 3 17
      monaco-css/README.md
  3. 3 3
      monaco-css/scripts/build.js
  4. 7 2
      monaco-css/scripts/bundle.js
  5. 0 41
      monaco-css/scripts/dts.js
  6. 6 7
      monaco-css/test/index.html

+ 62 - 0
build/utils.js

@@ -5,10 +5,13 @@
 
 
 const fs = require('fs');
 const fs = require('fs');
 const path = require('path');
 const path = require('path');
+const cp = require('child_process');
 
 
 const REPO_ROOT = path.join(__dirname, '..');
 const REPO_ROOT = path.join(__dirname, '..');
 
 
 /**
 /**
+ * Copy a file.
+ *
  * @param {string} _source
  * @param {string} _source
  * @param {string} _destination
  * @param {string} _destination
  */
  */
@@ -41,6 +44,8 @@ function copyFile(_source, _destination) {
 exports.copyFile = copyFile;
 exports.copyFile = copyFile;
 
 
 /**
 /**
+ * Remove a directory and all its contents.
+ *
  * @param {string} _dirPath
  * @param {string} _dirPath
  */
  */
 function removeDir(_dirPath) {
 function removeDir(_dirPath) {
@@ -68,3 +73,60 @@ function removeDir(_dirPath) {
 	}
 	}
 }
 }
 exports.removeDir = removeDir;
 exports.removeDir = removeDir;
+
+/**
+ * Launch the typescript compiler synchronously over a project.
+ *
+ * @param {string} projectPath
+ */
+function tsc(_projectPath) {
+	const projectPath = path.join(REPO_ROOT, _projectPath);
+	cp.spawnSync(process.execPath, [path.join(__dirname, '../node_modules/typescript/lib/tsc.js'), '-p', projectPath], { stdio: 'inherit', stderr: 'inherit' });
+
+	console.log(`Compiled ${_projectPath}`);
+}
+exports.tsc = tsc;
+
+/**
+ * Transform an external .d.ts file to an internal .d.ts file
+ *
+ * @param {string} _source
+ * @param {string} _destination
+ * @param {string} namespace
+ */
+function dts(_source, _destination, namespace) {
+	const source = path.join(REPO_ROOT, _source);
+	const destination = path.join(REPO_ROOT, _destination);
+
+	const lines = fs
+		.readFileSync(source)
+		.toString()
+		.split(/\r\n|\r|\n/);
+
+	let result = [
+		`/*---------------------------------------------------------------------------------------------`,
+		` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
+		` *  Licensed under the MIT License. See License.txt in the project root for license information.`,
+		` *--------------------------------------------------------------------------------------------*/`,
+		``,
+		`/// <reference path="../node_modules/monaco-editor-core/monaco.d.ts" />`,
+		``,
+		`declare namespace ${namespace} {`
+	];
+	for (let line of lines) {
+		if (/^import/.test(line)) {
+			continue;
+		}
+		line = line.replace(/    /g, '\t');
+		line = line.replace(/declare /g, '');
+		if (line.length > 0) {
+			line = `\t${line}`;
+			result.push(line);
+		}
+	}
+	result.push(`}`);
+	result.push(``);
+
+	fs.writeFileSync(destination, result.join('\n'));
+}
+exports.dts = dts;

+ 3 - 17
monaco-css/README.md

@@ -9,29 +9,15 @@ CSS language plugin for the Monaco Editor. It provides the following features wh
 - Document Symbols
 - Document Symbols
 - Color Decorators
 - Color Decorators
 
 
-Linting an be configured through the API. See [here](https://github.com/Microsoft/monaco-css/blob/master/src/monaco.d.ts) for the API that the
+Linting an be configured through the API. See [`monaco.d.ts`](./monaco.d.ts) for the API that the
 CSS plugin offers to configure the CSS/LESS/SCSS language support.
 CSS plugin offers to configure the CSS/LESS/SCSS language support.
 
 
-Internally the CSS plugin uses the [vscode-css-languageservice](https://github.com/Microsoft/vscode-css-languageservice)
+Internally the CSS plugin uses the [`vscode-css-languageservice`](https://github.com/microsoft/vscode-css-languageservice)
 node module, providing the implementation of the functionally listed above. The same module is also used
 node module, providing the implementation of the functionally listed above. The same module is also used
-in [Visual Studio Code](https://github.com/Microsoft/vscode) to power the CSS, LESS and SCSS editing experience.
-
-## Issues
-
-Please file issues concering `monaco-css` in the [`monaco-editor` repository](https://github.com/Microsoft/monaco-editor/issues).
-
-## Installing
-
-This npm module is bundled and distributed in the [monaco-editor](https://www.npmjs.com/package/monaco-editor) npm module.
+in [Visual Studio Code](https://github.com/microsoft/vscode) to power the CSS, LESS and SCSS editing experience.
 
 
 ## Development
 ## Development
 
 
-- `npm install .`
-- compile with `npm run compile`
 - watch with `npm run watch`
 - watch with `npm run watch`
 - `npm run prepublishOnly`
 - `npm run prepublishOnly`
 - open `$/monaco-css/test/index.html` in your favorite browser.
 - open `$/monaco-css/test/index.html` in your favorite browser.
-
-## License
-
-[MIT](https://github.com/Microsoft/monaco-css/blob/master/LICENSE.md)

+ 3 - 3
monaco-css/scripts/build.js

@@ -7,14 +7,14 @@ const esbuild = require('esbuild');
 const alias = require('esbuild-plugin-alias');
 const alias = require('esbuild-plugin-alias');
 const path = require('path');
 const path = require('path');
 const cp = require('child_process');
 const cp = require('child_process');
-const { copyFile, removeDir } = require('../../build/utils');
+const { copyFile, removeDir, tsc, dts } = require('../../build/utils');
 
 
 removeDir(`monaco-css/release`);
 removeDir(`monaco-css/release`);
 removeDir(`monaco-css/out`);
 removeDir(`monaco-css/out`);
 
 
-cp.spawnSync(process.execPath, [path.join(__dirname, '../../node_modules/typescript/lib/tsc.js'), '-p', path.join(__dirname, '../src/tsconfig.json')], { stdio: 'inherit', stderr: 'inherit' });
+tsc(`monaco-css/src/tsconfig.json`);
 
 
-cp.spawnSync(process.execPath, [path.join(__dirname, './dts.js')], { stdio: 'inherit', stderr: 'inherit' });
+dts(`monaco-css/out/amd/monaco.contribution.d.ts`, `monaco-css/monaco.d.ts`, 'monaco.languages.css');
 
 
 cp.spawnSync(process.execPath, [path.join(__dirname, '../../node_modules/prettier/bin-prettier.js'), '--write', path.join(__dirname, '../monaco.d.ts')], { stdio: 'inherit', stderr: 'inherit' });
 cp.spawnSync(process.execPath, [path.join(__dirname, '../../node_modules/prettier/bin-prettier.js'), '--write', path.join(__dirname, '../monaco.d.ts')], { stdio: 'inherit', stderr: 'inherit' });
 
 

+ 7 - 2
monaco-css/scripts/bundle.js

@@ -1,3 +1,8 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
 const requirejs = require('requirejs');
 const requirejs = require('requirejs');
 const path = require('path');
 const path = require('path');
 const fs = require('fs');
 const fs = require('fs');
@@ -13,9 +18,9 @@ const headerVersion = semver + '(' + sha1 + ')';
 const BUNDLED_FILE_HEADER = [
 const BUNDLED_FILE_HEADER = [
 	'/*!-----------------------------------------------------------------------------',
 	'/*!-----------------------------------------------------------------------------',
 	' * Copyright (c) Microsoft Corporation. All rights reserved.',
 	' * Copyright (c) Microsoft Corporation. All rights reserved.',
-	' * monaco-css version: ' + headerVersion,
+	' * Version: ' + headerVersion,
 	' * Released under the MIT license',
 	' * Released under the MIT license',
-	' * https://github.com/Microsoft/monaco-css/blob/master/LICENSE.md',
+	' * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt',
 	' *-----------------------------------------------------------------------------*/',
 	' *-----------------------------------------------------------------------------*/',
 	''
 	''
 ].join('\n');
 ].join('\n');

+ 0 - 41
monaco-css/scripts/dts.js

@@ -1,41 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const path = require('path');
-const fs = require('fs');
-
-const REPO_ROOT = path.join(__dirname, '../');
-const SRC_PATH = path.join(REPO_ROOT, 'out/amd/monaco.contribution.d.ts');
-const DST_PATH = path.join(REPO_ROOT, 'monaco.d.ts');
-
-const lines = fs
-	.readFileSync(SRC_PATH)
-	.toString()
-	.split(/\r\n|\r|\n/);
-let result = [
-	`/*---------------------------------------------------------------------------------------------`,
-	` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
-	` *  Licensed under the MIT License. See License.txt in the project root for license information.`,
-	` *--------------------------------------------------------------------------------------------*/`,
-	``,
-	`/// <reference path="../node_modules/monaco-editor-core/monaco.d.ts" />`,
-	``,
-	`declare namespace monaco.languages.css {`
-];
-for (let line of lines) {
-	if (/^import/.test(line)) {
-		continue;
-	}
-	line = line.replace(/    /g, '\t');
-	line = line.replace(/declare /g, '');
-	if (line.length > 0) {
-		line = `\t${line}`;
-		result.push(line);
-	}
-}
-result.push(`}`);
-result.push(``);
-
-fs.writeFileSync(DST_PATH, result.join('\n'));

+ 6 - 7
monaco-css/test/index.html

@@ -1,12 +1,11 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
 <html>
 <html>
 	<head>
 	<head>
-		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 		<link
 		<link
 			rel="stylesheet"
 			rel="stylesheet"
 			data-name="vs/editor/editor.main"
 			data-name="vs/editor/editor.main"
-			href="../node_modules/monaco-editor-core/dev/vs/editor/editor.main.css"
+			href="../../node_modules/monaco-editor-core/dev/vs/editor/editor.main.css"
 		/>
 		/>
 	</head>
 	</head>
 	<body>
 	<body>
@@ -16,9 +15,9 @@
 		<script>
 		<script>
 			// Loading basic-languages to get the css language definition
 			// Loading basic-languages to get the css language definition
 			var paths = {
 			var paths = {
-				'vs/basic-languages': '../node_modules/monaco-languages/release/dev',
+				'vs/basic-languages': '../../monaco-languages/release/dev',
 				'vs/language/css': '../release/dev',
 				'vs/language/css': '../release/dev',
-				vs: '../node_modules/monaco-editor-core/dev/vs'
+				vs: '../../node_modules/monaco-editor-core/dev/vs'
 			};
 			};
 			if (document.location.protocol === 'http:') {
 			if (document.location.protocol === 'http:') {
 				// Add support for running local http server
 				// Add support for running local http server
@@ -32,9 +31,9 @@
 				paths: paths
 				paths: paths
 			};
 			};
 		</script>
 		</script>
-		<script src="../node_modules/monaco-editor-core/dev/vs/loader.js"></script>
-		<script src="../node_modules/monaco-editor-core/dev/vs/editor/editor.main.nls.js"></script>
-		<script src="../node_modules/monaco-editor-core/dev/vs/editor/editor.main.js"></script>
+		<script src="../../node_modules/monaco-editor-core/dev/vs/loader.js"></script>
+		<script src="../../node_modules/monaco-editor-core/dev/vs/editor/editor.main.nls.js"></script>
+		<script src="../../node_modules/monaco-editor-core/dev/vs/editor/editor.main.js"></script>
 
 
 		<script>
 		<script>
 			require([
 			require([