我正在创建一个grunt配置来将我的所有Typescript文件编译为Javascript。我想将所有生成的Javascript文件保存在构建文件夹中,但也保持相同的文件夹结构。
实施例:
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');
};
有没有办法禁用node_modules生成过程?因为我认为我不需要它们,这使得编译过程非常缓慢。
答案 0 :(得分:1)
以下配置应符合您的要求。它将忽略node_modules
目录并在结果src/
目录中重现相同的源目录结构(如build
中所示):
module.exports = function(grunt) {
grunt.config.set('ts', {
dev: {
options: {
rootDir: 'src/',
target: 'es5',
fast: 'watch',
comments: false,
sourceMap: false,
failOnTypeErrors: true,
module: 'system',
moduleResolution: 'classic'
},
src: 'src/**/*.ts',
dest: 'build/'
}
});
grunt.loadNpmTasks('grunt-ts');
};
备注:强>
rootDir
属性已添加到options
对象,其值设置为'src/'
。
flatten: false
和expand: true
都已从options
对象中移除。
files
属性已替换为src
和dest
属性,其值分别设置为src/**/*.ts
和build/
。
结果目录结构示例:
以下目录结构:
.
├── src
│ ├── another-folder
│ │ └── quux.ts
│ ├── controllers
│ │ └── myController.ts
│ └── foo.ts
├── Gruntfile.js
├── node_modules
│ └── ...
└── ...
运行$ grunt ts
后会产生以下结果:
.
├── build
│ ├── another-folder
│ │ └── quux.js
│ ├── controllers
│ │ └── myController.js
│ └── foo.js
├── src
│ ├── another-folder
│ │ └── quux.ts
│ ├── controllers
│ │ └── myController.ts
│ └── foo.ts
├── Gruntfile.js
├── node_modules
│ └── ...
└── ...
答案 1 :(得分:0)
您的项目中是否有tsconfig.json设置?
您可能需要在那里排除 node_modules 目录(请参阅文档:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)。
然后,您可以在grunt配置中使用tsconfig.json(请参阅入门部分:https://github.com/TypeStrong/grunt-ts)。
module.exports = function(grunt) {
grunt.initConfig({
ts: {
default : {
tsconfig: './tsconfig.json'
}
}});
grunt.loadNpmTasks("grunt-ts");
grunt.registerTask("default", ["ts"]);
};
使用相应的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的最佳方式。
希望这有帮助吗?