From e0210a4bd74e497cb63788bf5303a774fff27b9a Mon Sep 17 00:00:00 2001 From: togami2864 Date: Sun, 1 May 2022 23:59:02 +0900 Subject: [PATCH] feat: enable to remove shebang --- packages/vite-node/src/cli.ts | 2 ++ packages/vite-node/src/plugins/removeShebang.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 packages/vite-node/src/plugins/removeShebang.ts diff --git a/packages/vite-node/src/cli.ts b/packages/vite-node/src/cli.ts index 66a7ab50294e..80b2ce26a3fa 100644 --- a/packages/vite-node/src/cli.ts +++ b/packages/vite-node/src/cli.ts @@ -3,6 +3,7 @@ import { dim, red } from 'kolorist' import { createServer } from 'vite' import { ViteNodeServer } from './server' import { ViteNodeRunner } from './client' +import { RemoveShebangPlugin } from './plugins/removeShebang' const argv = minimist(process.argv.slice(2), { 'alias': { @@ -70,6 +71,7 @@ async function run(options: CliOptions = {}) { logLevel: 'error', configFile: options.config, root: options.root, + plugins: [RemoveShebangPlugin()], }) await server.pluginContainer.buildStart({}) diff --git a/packages/vite-node/src/plugins/removeShebang.ts b/packages/vite-node/src/plugins/removeShebang.ts new file mode 100644 index 000000000000..3eb4c8bb2d6c --- /dev/null +++ b/packages/vite-node/src/plugins/removeShebang.ts @@ -0,0 +1,13 @@ +import type { Plugin } from 'vite' + +// issue #1175:remove shebeng from code (most often #!/usr/bin/env node) +// vite recognizes the shebang as a comment and needs to be removed because it causes a parse error. +export const RemoveShebangPlugin = (): Plugin => { + return { + name: 'vitest:remove-shebang-plugin', + enforce: 'pre', + transform(code) { + return code.replace(/^\#\!.*/, '') + }, + } +}