routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
import fs from "node:fs";
|
||||
import { basename, dirname, resolve } from "node:path";
|
||||
|
||||
//#region src/rspack/utils.ts
|
||||
function encodeVirtualModuleId(id, plugin) {
|
||||
return resolve(plugin.__virtualModulePrefix, encodeURIComponent(id));
|
||||
}
|
||||
function decodeVirtualModuleId(encoded, _plugin) {
|
||||
return decodeURIComponent(basename(encoded));
|
||||
}
|
||||
function isVirtualModuleId(encoded, plugin) {
|
||||
return dirname(encoded) === plugin.__virtualModulePrefix;
|
||||
}
|
||||
var FakeVirtualModulesPlugin = class FakeVirtualModulesPlugin {
|
||||
name = "FakeVirtualModulesPlugin";
|
||||
static counter = 0;
|
||||
constructor(plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
apply(compiler) {
|
||||
FakeVirtualModulesPlugin.counter++;
|
||||
const dir = this.plugin.__virtualModulePrefix;
|
||||
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
||||
compiler.hooks.shutdown.tap(this.name, () => {
|
||||
if (--FakeVirtualModulesPlugin.counter === 0) fs.rmSync(dir, {
|
||||
recursive: true,
|
||||
force: true
|
||||
});
|
||||
});
|
||||
}
|
||||
async writeModule(file) {
|
||||
const path$1 = encodeVirtualModuleId(file, this.plugin);
|
||||
await fs.promises.writeFile(path$1, "");
|
||||
return path$1;
|
||||
}
|
||||
};
|
||||
|
||||
//#endregion
|
||||
export { FakeVirtualModulesPlugin, decodeVirtualModuleId, encodeVirtualModuleId, isVirtualModuleId };
|
||||
Reference in New Issue
Block a user