我有一个Node代码,我试图与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文件。
发布于 2022-10-17 13:03:34
我通过用webpack
1替换JavaScript配置文件来解决这个问题,因为NestJS不支持用TypeScript编写的配置文件。
https://stackoverflow.com/questions/73106764
复制相似问题