Improve `monaco-css` scripts

pull/2764/head
Alex Dima 3 years ago
parent 67a240a269
commit e441fd4498
No known key found for this signature in database
GPG Key ID: 39563C1504FDD0C9

@ -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;

@ -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. 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.
## 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)

@ -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' });

@ -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');

@ -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'));

@ -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/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.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/editor/editor.main.js"></script>
<script> <script>
require([ require([

Loading…
Cancel
Save