From 1c4d509a404c3b383f9f1fc016fd0408be3eab53 Mon Sep 17 00:00:00 2001 From: "Fred K. Schott" Date: Fri, 30 Oct 2020 08:31:04 -0700 Subject: [PATCH] add args support for typescript plugin --- plugins/plugin-typescript/README.md | 6 ++++++ plugins/plugin-typescript/plugin.js | 4 ++-- plugins/plugin-typescript/test/plugin.test.js | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/plugin-typescript/README.md b/plugins/plugin-typescript/README.md index a16cfbe41f..c0935b2303 100644 --- a/plugins/plugin-typescript/README.md +++ b/plugins/plugin-typescript/README.md @@ -19,3 +19,9 @@ module.exports = { plugins: ['@snowpack/plugin-typescript'], }; ``` + +## Plugin Options + +| Name | Type | Description | +| :----- | :------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `args` | `string` | Optional arguments to pass to the `tsc` CLI. For example, you can configure a custom project directory (with a custom `tsconfig.json` file) using `args: "--project ./your/custom/path"`. | diff --git a/plugins/plugin-typescript/plugin.js b/plugins/plugin-typescript/plugin.js index 151881dc58..a295cb260a 100644 --- a/plugins/plugin-typescript/plugin.js +++ b/plugins/plugin-typescript/plugin.js @@ -2,11 +2,11 @@ const execa = require('execa'); const npmRunPath = require('npm-run-path'); const cwd = process.cwd(); -function typescriptPlugin() { +function typescriptPlugin(_, {args} = {}) { return { name: '@snowpack/plugin-typescript', async run({isDev, log}) { - const workerPromise = execa.command(`tsc --noEmit ${isDev ? '--watch' : ''}`, { + const workerPromise = execa.command(`tsc --noEmit ${isDev ? '--watch' : ''} ${args ? args : ''}`, { env: npmRunPath.env(), extendEnv: true, windowsHide: false, diff --git a/plugins/plugin-typescript/test/plugin.test.js b/plugins/plugin-typescript/test/plugin.test.js index 13cf03b151..06207a2f22 100644 --- a/plugins/plugin-typescript/test/plugin.test.js +++ b/plugins/plugin-typescript/test/plugin.test.js @@ -31,6 +31,11 @@ describe('plugin-typescript', () => { expect(execaFn.mock.calls[0][0]).toContain('--noEmit'); expect(execaFn.mock.calls[0][0]).toContain('--watch'); }); + test('calls "tsc" correctly with args', async () => { + const p = plugin(undefined, {args: '--foo bar'}); + await p.run({isDev: false, log: jest.fn}); + expect(execaFn.mock.calls[0][0]).toContain('--foo bar'); + }); test('handles tsc output', async () => { const logFn = jest.fn(); const p = plugin();