Javascript Grunt生成新的node_模块
我正在创建一个grunt配置,将我所有的Typescript文件编译成Javascript。我希望将生成的所有Javascript文件保存在一个构建文件夹中,但同时保持相同的文件夹结构 例如:Javascript Grunt生成新的node_模块,javascript,node.js,typescript,gruntjs,grunt-ts,Javascript,Node.js,Typescript,Gruntjs,Grunt Ts,我正在创建一个grunt配置,将我所有的Typescript文件编译成Javascript。我希望将生成的所有Javascript文件保存在一个构建文件夹中,但同时保持相同的文件夹结构 例如: src/controllers/myController.ts将编译为:build/controllers/myController.js 我创建了一个grunt配置,它可以完成这项工作,但出于某些原因,它还可以在build目录中生成一个node_modules文件夹,这需要很多时间。我的grunt配置如
src/controllers/myController.ts
将编译为:build/controllers/myController.js
我创建了一个grunt配置,它可以完成这项工作,但出于某些原因,它还可以在build目录中生成一个node_modules文件夹,这需要很多时间。我的grunt配置如下所示:
module.exports = function(grunt) {
grunt.config.set('ts', {
dev: {
files: [
{
src: ['**/*.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');
};
有没有办法禁用节点_模块生成过程?因为我认为我不需要它们,这使得编译过程非常缓慢 您的项目中是否有tsconfig.json设置 您可能需要排除那里的节点\u模块目录(请参阅文档:) 然后可以在grunt配置中使用tsconfig.json(请参阅入门部分:) 使用相应的tsconfig.json文件,如:
{
"include": [
"src/**/*.ts*"
],
"exclude": [
"node_modules"
],
"compilerOptions": {
"target": "ES5",
"fast": "watch,
"sourceMap": false,
"module": "system",
"removeComments": true,
"outDir": "build/",
"rootDir" ".",
...
}
}
注意:使用tsconfig.json是使用TypeScript的最佳方式
希望这有所帮助?以下配置应满足您的要求。它将忽略
节点\u模块
目录,并在生成的构建
目录中复制相同的源目录结构(如src/
中所示):
module.exports=函数(grunt){
grunt.config.set('ts'{
开发人员:{
选项:{
rootDir:'src/',
目标:‘es5’,
快:“看”,
评论:错,
sourceMap:false,
failOnTypeErrors:true,
模块:“系统”,
模块解决方案:“经典”
},
src:'src/***.ts',
dest:'build/'
}
});
grunt.loadNpmTasks(“grunt-ts”);
};
注意事项:
属性被添加到rootDir
对象中,其值设置为options
'src/'
- 已从
对象中删除选项
和展平:假
展开:真
属性已替换为files
和src
属性,其值分别设置为dest
和src/***.ts
build/
。
├── src
│ ├── 另一个文件夹
│ │ └── quux.ts
│ ├── 控制器
│ │ └── myController.ts
│ └── 福茨
├── Grunfile.js
├── 节点单元
│ └── ...
└── ...
运行$grunt ts
后将产生如下结果:
。
├── 建筑
│ ├── 另一个文件夹
│ │ └── qux.js
│ ├── 控制器
│ │ └── myController.js
│ └── foo.js
├── src
│ ├── 另一个文件夹
│ │ └── quux.ts
│ ├── 控制器
│ │ └── myController.ts
│ └── 福茨
├── Grunfile.js
├── 节点单元
│ └── ...
└── ...
我已经试过了,但出于某种原因,Grunt似乎不尊重我的tsconfig.json
文件。如果我使用tsconfig.json
文件并将其添加到我的Grunt配置中,它不会做任何事情。我使用了以下grunt配置:module.exports=function(grunt){grunt.config.set('ts',{dev:{default:{tsconfig:'./tsconfig.json'},文件:[{src:['***.ts'],dest:'build/'},});grunt.loadNpmTasks('grunt-ts');}代码>尝试向src添加['**/*.ts',“!node_modules/**”]
。它应该排除node_modules目录。我不知道为什么Grunt设置不尊重tsconfig.json。你试过我提到的极简主义设置吗?正如grunt ts github页面所指出的,仅使用tsconfig.json是一种最佳实践。我尝试过,当我这样做时,不会生成节点_模块。但如果我这样做,构建文件夹结构就会变得平淡。所以我所有的Javascript文件都在同一个文件夹中。我需要构建目录的文件夹结构与src目录的文件夹结构相同,但不能确定您的确切设置。指定src
如下时会发生什么:[“src/***/*.ts”]
?它会将文件夹结构保留在outDir中吗?也许您需要将rootDir:“.”
设置为您的选项?这正是我需要的!非常感谢。我注意到的一件事是,当存在多个Typescript文件时,Grunt只会重新构造构建目录中的文件夹结构。因为我只测试了一个文件,所以它没有在build目录中创建映射。谢谢你的帮助:)
{
"include": [
"src/**/*.ts*"
],
"exclude": [
"node_modules"
],
"compilerOptions": {
"target": "ES5",
"fast": "watch,
"sourceMap": false,
"module": "system",
"removeComments": true,
"outDir": "build/",
"rootDir" ".",
...
}