使用Gulp构建TypeScript项目时如何正确启用ts-node ESM?
解决Gulp构建时启用ts-node ESM的问题
以下是可行的解决步骤:
修改package.json,声明ESM模块类型
在package.json中添加:"type": "module"这是Node.js识别ESM模块的基础标识。
调整tsconfig.json的编译配置
把compilerOptions里的module从commonjs改为ESNext(或ES2020及以上版本),因为ESM模式下需要对应的模块编译目标,同时建议补充模块解析配置:"compilerOptions": { "module": "ESNext", "rootDir": ".", "allowJs": true, "moduleResolution": "node" }同时确认
ts-node配置无误:"ts-node": { "esm": true }调整Gulp文件与启动方式
- 将Gulp配置文件命名为
gulpfile.ts,并使用ESM语法编写(比如用import gulp from 'gulp'代替const gulp = require('gulp'))。 - 绕过Gulp CLI默认的CommonJS加载逻辑,直接通过ts-node启动Gulp,修改package.json的scripts:
之后运行"scripts": { "build": "ts-node --esm node_modules/gulp/bin/gulp.js build" }npm run build即可。
- 将Gulp配置文件命名为
检查依赖版本兼容性
确保ts-node版本在10.x及以上(对ESM支持更完善),typescript版本建议4.5+,可通过以下命令更新:npm install ts-node@latest typescript@latest --save-dev
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

