瀏覽代碼

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 path = require('path');
+const cp = require('child_process');
 
 const REPO_ROOT = path.join(__dirname, '..');
 
 /**
+ * Copy a file.
+ *
  * @param {string} _source
  * @param {string} _destination
  */
@@ -41,6 +44,8 @@ function copyFile(_source, _destination) {
 exports.copyFile = copyFile;
 
 /**
+ * Remove a directory and all its contents.
+ *
  * @param {string} _dirPath
  */
 function removeDir(_dirPath) {
@@ -68,3 +73,60 @@ function removeDir(_dirPath) {
 	}
 }
 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
 - 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.
 
-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
-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
 
-- `npm install .`
-- compile with `npm run compile`
 - watch with `npm run watch`
 - `npm run prepublishOnly`
 - 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 path = require('path');
 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/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' });
 

+ 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 path = require('path');
 const fs = require('fs');
@@ -13,9 +18,9 @@ const headerVersion = semver + '(' + sha1 + ')';
 const BUNDLED_FILE_HEADER = [
 	'/*!-----------------------------------------------------------------------------',
 	' * Copyright (c) Microsoft Corporation. All rights reserved.',
-	' * monaco-css version: ' + headerVersion,
+	' * Version: ' + headerVersion,
 	' * 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');

+ 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>
 <html>
 	<head>
-		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 		<link
 			rel="stylesheet"
 			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>
 	<body>
@@ -16,9 +15,9 @@
 		<script>
 			// Loading basic-languages to get the css language definition
 			var paths = {
-				'vs/basic-languages': '../node_modules/monaco-languages/release/dev',
+				'vs/basic-languages': '../../monaco-languages/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:') {
 				// Add support for running local http server
@@ -32,9 +31,9 @@
 				paths: paths
 			};
 		</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>
 			require([