You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让NestJS监听特定Node模块并在开发模式下自动重载?

让NestJS开发模式监听私有包变更并自动重载

要实现当node_modules/@blabla/common变更时自动重新编译并重载,需要修改webpack配置,让webpack监听该私有包的文件变化,同时调整外部依赖处理逻辑。以下是具体修改步骤:

1. 调整nodeExternals的允许列表

默认nodeExternals会排除所有node_modules包,导致webpack不监听它们的变化。需要将@blabla/common加入allowlist,让webpack将其纳入打包流程:

修改webpack.config.js中的externals部分:

externals: [
    nodeExternals({
        allowlist: ['webpack/hot/poll?100', /^@blabla\/common/],
    }),
],

2. 配置webpack监听规则

添加watchOptions,让webpack仅忽略除@blabla/common外的其他node_modules文件,确保该私有包的变更能被捕捉:

在configuration对象中新增watchOptions:

const configuration = (options, webpack) => ({
    ...options,
    entry: ['webpack/hot/poll?100', options.entry],
    // 新增watchOptions
    watchOptions: {
        ignored: /node_modules\/(?!@blabla\/common)/,
    },
    externals: [
        // ... 已修改的externals配置
    ],
    plugins: [
        // ... 插件配置
    ],
});

3. 开启自动重启(可选但推荐)

依赖包的变更通常需要重启服务才能完全生效,将RunScriptWebpackPlugin的autoRestart设为true:

修改插件配置:

new RunScriptWebpackPlugin({ name: options.output.filename, autoRestart: true }),

4. 确保私有包的本地关联(开发场景)

如果@blabla/common是本地开发的私有包,需通过npm link或yarn link将其软链接到当前项目,这样本地修改的文件变化才能被webpack实时监听。

完成以上修改后,运行nest build --watch,当@blabla/common的文件发生变更时,webpack会自动重新编译并重启NestJS服务。

内容的提问来源于stack exchange,提问作者Tal Rofe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:55:32