由于输出的灵活性,我最近从使用Web Essentials切换到grunt-ts来编译我的打字稿文件。我切换的部分原因是我不希望所有文件单独编译,我不希望将所有文件编译成单个文件。我想要两者兼而有之。由于我最近开始使用grunt完成很多任务,我想我也可以切换我的TS版本。
这是我的gruntfile
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
dirs: {
distribution: 'script/dist',
ts_root: 'script/src',
ts_controllers: 'script/src/controllers'
},
ts: {
apprunner: {
src: ['<%= dirs.ts_root %>/main.ts'],
out: '<%= dirs.distribution %>/src/main.js',
options: {
target: 'es5'
}
},
controllers: {
src: ['<%= dirs.ts_controllers %>/*.ts'],
out: '<%= dirs.distribution %>/src/controllers.js'
options: {
target: 'es5'
}
}
}
});
grunt.loadNpmTasks('grunt-ts');
grunt.registerTask('default', ['ts']);
};
在main.ts
文件中,我必须引用一个打字稿文件,这些文件在编译时构成controllers.js
文件的一部分。
所以我的main.js
文件我有以下内容:
/// <reference path="controllers/ExampleController.ts" />
var newExample = new wctApp.controllers.ExampleController();
Grunt编译我的controllers.js
文件:
var wctApp;
(function (wctApp) {
(function (controllers) {
var ExampleController = (function () {
function ExampleController() {
}
return ExampleController;
})();
controllers.ExampleController = ExampleController;
})(wctApp.controllers || (wctApp.controllers = {}));
var controllers = wctApp.controllers;
})(wctApp || (wctApp = {}));
但它在main.js
文件中编译相同的代码。
var wctApp;
(function (wctApp) {
(function (controllers) {
var ExampleController = (function () {
function ExampleController() {
}
return ExampleController;
})();
controllers.ExampleController = ExampleController;
})(wctApp.controllers || (wctApp.controllers = {}));
var controllers = wctApp.controllers;
})(wctApp || (wctApp = {}));
;
var newExample = new wctApp.controllers.ExampleController();
如果我从主文件中删除引用,它将无法构建,因为它找不到ExampleController。如何保留对此文件的引用,但不要在main.js
文件中编译。
答案 0 :(得分:0)
不要使用out
。因为out
将所有TypeScript文件合并为一个。而是使用outDir
(如果您需要重定向到其他文件夹)。或者最好不要使用任何(没有out
否outDir
),它会将生成的JS放在文件旁边。