Хватит grunt-ts от компиляции ссылок
Недавно я перешел от использования 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();
Хрюканье компилирует мой 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
файл.
1 ответ
Не использовать out
, Так как out
объединяет все файлы TypeScript в один. Вместо этого используйте outDir
(если вам нужно перенаправить в другую папку). Или лучше ничего не использовать (нет out
нет outDir
) и он поместит сгенерированный JS рядом с файлом.