Improve monaco-css scripts

This commit is contained in:
Alex Dima 2021-11-11 22:13:12 +01:00
parent 67a240a269
commit e441fd4498
No known key found for this signature in database
GPG key ID: 39563C1504FDD0C9
6 changed files with 81 additions and 70 deletions

View file

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