Grunt编译TypeScript时自动生成node_modules目录如何禁用?
阻止Grunt-TS在Build目录生成node_modules文件夹的解决方案
你遇到的问题根源在于当前配置的文件匹配规则太宽泛——['**/*.ts']会递归匹配所有目录下的TypeScript文件,包括node_modules里的文件,这自然会拖慢编译速度,还会在build目录下生成完全没必要的node_modules子目录。
解决方法很简单,只需要在文件匹配规则里排除node_modules目录即可。修改你的ts任务配置如下:
module.exports = function(grunt) { grunt.config.set('ts', { dev: { files: [ { src: ['**/*.ts', '!node_modules/**/*.ts'], // 新增排除规则 dest: 'build/' } ], options: { target: 'es5', fast: 'watch', comments: false, sourceMap: false, failOnTypeErrors: true, flatten: false, expand: true, module: 'system', moduleResolution: 'classic' } } }); grunt.loadNpmTasks('grunt-ts'); };
关键说明:
!node_modules/**/*.ts:在Grunt的文件匹配语法中,!前缀表示排除指定模式的文件。这里的规则会忽略node_modules目录及其所有子目录下的.ts文件,避免它们被编译到build目录中。- 你原有配置里的
expand: true、flatten: false已经能正确保留原目录结构,修改后不会影响src目录下TS文件的编译输出路径。
这样调整后,编译过程就只会处理你自己的TypeScript文件,速度会大幅提升,同时build目录下也不会再生成多余的node_modules文件夹了。
内容的提问来源于stack exchange,提问作者Bob van 't Padje
相关产品推荐
相关产品推荐

