Explorar o código

Fix script for esbuild sample which cannot import `.ts` files

Alex Dima %!s(int64=3) %!d(string=hai) anos
pai
achega
eed1e1cf27
Modificáronse 3 ficheiros con 48 adicións e 10 borrados
  1. 1 6
      build/fs.ts
  2. 1 2
      build/release.ts
  3. 46 2
      samples/browser-esm-esbuild/build.js

+ 1 - 6
build/fs.ts

@@ -56,12 +56,7 @@ export function removeDir(_dirPath: string, keep?: (filename: string) => boolean
 	rmDir(dirPath, _dirPath);
 	console.log(`Deleted ${_dirPath}`);
 
-	/**
-	 * @param {string} dirPath
-	 * @param {string} relativeDirPath
-	 * @returns {boolean}
-	 */
-	function rmDir(dirPath, relativeDirPath) {
+	function rmDir(dirPath: string, relativeDirPath: string): boolean {
 		let keepsFiles = false;
 		const entries = fs.readdirSync(dirPath);
 		for (const entry of entries) {

+ 1 - 2
build/release.ts

@@ -64,9 +64,8 @@ generateMetadata();
 
 /**
  * Release to `dev` or `min`.
- * @param {'dev'|'min'} type
  */
-function AMD_releaseOne(type) {
+function AMD_releaseOne(type: 'dev' | 'min') {
 	const coreFiles = readFiles(`node_modules/monaco-editor-core/${type}/**/*`, {
 		base: `node_modules/monaco-editor-core/${type}`
 	});

+ 46 - 2
samples/browser-esm-esbuild/build.js

@@ -7,9 +7,9 @@
 
 const esbuild = require('esbuild');
 const path = require('path');
-const { removeDir } = require('../../build/fs');
+const fs = require('fs');
 
-removeDir('samples/browser-esm-esbuild/dist', (entry) => /index.html$/.test(entry));
+removeDir('dist', (entry) => /index.html$/.test(entry));
 
 const workerEntryPoints = [
 	'vs/language/json/json.worker.js',
@@ -50,3 +50,47 @@ function build(opts) {
 		}
 	});
 }
+
+/**
+ * Remove a directory and all its contents.
+ * @param {string} _dirPath
+ * @param {(filename: string) => boolean} [keep]
+ */
+function removeDir(_dirPath, keep) {
+	if (typeof keep === 'undefined') {
+		keep = () => false;
+	}
+	const dirPath = path.join(__dirname, _dirPath);
+	if (!fs.existsSync(dirPath)) {
+		return;
+	}
+	rmDir(dirPath, _dirPath);
+	console.log(`Deleted ${_dirPath}`);
+
+	/**
+	 * @param {string} dirPath
+	 * @param {string} relativeDirPath
+	 * @returns {boolean}
+	 */
+	function rmDir(dirPath, relativeDirPath) {
+		let keepsFiles = false;
+		const entries = fs.readdirSync(dirPath);
+		for (const entry of entries) {
+			const filePath = path.join(dirPath, entry);
+			const relativeFilePath = path.join(relativeDirPath, entry);
+			if (keep(relativeFilePath)) {
+				keepsFiles = true;
+				continue;
+			}
+			if (fs.statSync(filePath).isFile()) {
+				fs.unlinkSync(filePath);
+			} else {
+				keepsFiles = rmDir(filePath, relativeFilePath) || keepsFiles;
+			}
+		}
+		if (!keepsFiles) {
+			fs.rmdirSync(dirPath);
+		}
+		return keepsFiles;
+	}
+}