typescript - Nestjs bruker ikke webpack-konfigurasjonsfil når man kjører en build-kommando


Jeg har en Node js-kode som jeg prøver å bygge sammen med nestjs og webpack. Jeg prøver å injisere globale variabler ved å bruke webpack.DefinePlugin, men i bygge-resultatet kan jeg se at variablene ikke blir erstattet.

nest-cli.json fil:

{
    "$schema": "https://json.schemastore.org/nest-cli",
    "collection": "@nestjs/schematics",
    "sourceRoot": "src",
    "compilerOptions": {
        "webpack": true,
        "webpackConfigPath": "./webpack.config.ts"
    }
}

webpack.config.ts-fil:

import webpack from 'webpack';
import WebpackShellPluginNext from 'webpack-shell-plugin-next';
import isCI from 'is-ci';

const isDev = process.env.NODE_ENV === 'development' && !isCI;
const cliApiDomain = isDev ? 'localhost' : 'xxx.xxx';
const cliApiUrl = isDev ? 'http://localhost:5000' : 'https://www.xxx.xxx';
const dashboardUrl = isDev ? 'http://localhost:8080' : 'https://xxx.xxxx';

const configuration = (options: webpack.Configuration): webpack.Configuration => ({
    ...options,
    plugins: [
        ...options.plugins!,
        new WebpackShellPluginNext({
            onBuildStart: {
                scripts: ['rimraf dist'],
                blocking: true,
            },
            safe: true,
        }),
        new webpack.DefinePlugin({
            __CLI_API_DOMAIN__: `'${cliApiDomain}'`,
            __CLI_API_URL__: `'${cliApiUrl}'`,
            __DASHBOARD_URL__: `'${dashboardUrl}'`,
        }),
    ],
});

export default configuration;

Jeg har package.json-skript for å kjøre i utviklingsmodus og produksjonsmodus:

.
.
.
        "build": "nest build",
        "build:dev": "cross-env NODE_ENV=development nest build",
.
.
.

Jeg bruker de konfigurerte variablene i koden min:

    private config: IConfig = {
        API_URL: __CLI_API_URL__,
        DASHBOARD_URL: __DASHBOARD_URL__,
    };

Imidlertid blir ikke disse variablene erstattet med webpack. Når jeg inspiserer byggekoden min, kan jeg se at disse variablene fortsatt er i koden min.

Jeg forventer å se dem bli erstattet. Det ser ut til at Nestjs ikke engang bruker filen min

Etter å ha byttet filen webpack.config.ts til å bruke samme logikk men med js: webpack.config.js fungerte det. Støtter ikke Nestjs TS-konfigurasjonsfil?


Problemet var. NestJS ignorerer Webpack-filer skrevet i TypeScript.

Svar #1

Jeg løste problemet ved å erstatte webpack-konfigurasjonsfilen med en JavaScript-fil, siden NestJS ikke støtter konfigurasjonsfiler skrevet i TypeScript.

Relaterte artikler