Public Theta Blog

webpackでswcを使う

webpackでTypeScriptをトランスパイルする際に、ts-loaderの代わりにesbuildesbuild-loader)を使うこともできるが、swcswc-loader)を使うこともできる。

依存関係には、@swc/coreswc-loaderを追加する。

# npm
npm install -D @swc/core swc-loader
# yarn
yarn add -D @swc/core swc-loader
# pnpm
pnpm add -D @swc/core swc-loader

あとは、ts-loaderの代わりにswc-loaderを使うように設定する。

webpack.config.js:

module.exports = {
    module: {
        rules: [
            {
                test: /\.([jt]sx?)?$/,
                exclude: /node_modules/,
                use: {
                    loader: "swc-loader",
                    // https://swc.rs/docs/configuration/compilation
                    options: {
                        jsc: {
                            parser: {
                                syntax: "typescript",
                                tsx: true,
                            },
                        },
                    },
                },
            },
        ],
    },
};

設定にはoptionsを使ってもいいが、.swcrcを使っても良い。

webpack.config.js:

module.exports = {
    module: {
        rules: [
            {
                test: /\.([jt]sx?)?$/,
                exclude: /node_modules/,
                use: "swc-loader",
            },
        ],
    },
};

.swcrc:

{
    "jsc": {
        "parser": {
            "syntax": "typescript",
            "tsx": true
        }
    }
}