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.