我有一个Node js代码,我尝试使用nestjs和webpack一起构建。我尝试使用webpack.DefinePlugin
注入全局变量,但在构建结果中,我可以看到变量没有被替换。nest-cli.json
档案:
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"webpack": true,
"webpackConfigPath": "./webpack.config.ts"
}
}
webpack.config.ts
文件:
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;
我有package.json
脚本,可在开发模式和生产模式下运行:
.
.
.
"build": "nest build",
"build:dev": "cross-env NODE_ENV=development nest build",
.
.
.
我在源代码中使用配置的变量:
private config: IConfig = {
API_URL: __CLI_API_URL__,
DASHBOARD_URL: __DASHBOARD_URL__,
};
但是,这些变量并没有被webpack替换,当我检查我的构建代码时,我可以看到那些变量仍然在我的代码中。
我希望看到他们被替换。看起来Nestjs甚至没有使用我的文件
将webpack.config.ts
文件切换为使用相同的逻辑但带有js:webpack.config.js
成功了。Nestjs不支持TS配置文件?
问题是. NestJS忽略用TypeScript编写的Webpack文件。
1条答案
按热度按时间ryevplcw1#
我通过将
webpack
配置文件替换为JavaScript One解决了此问题,因为NestJS不支持使用TypeScript编写的配置文件。