Я разрабатываю библиотеку типов и хочу использовать его в своем веб-приложении.Создание машинописных файлов зависит от порядка файлов
Я хотел бы скомпилировать все файлы библиотеки в один файл library.js.
Я попытался использовать ts-компилятор с файлом tsconfig.json, а также скомпилировать с помощью задачи gulp, но в обоих случаях у меня возникают проблемы с порядком классов в выходном файле.
Также сгенерированный код имеет много IIFE
var MyLibrary;
(function (MyLibrary) {
.....
})(MyLibrary || (MyLibrary = {}));
Я предполагаю, что это должно быть там только один раз, а не для каждого класса, не так ли?
Моего tsconfig.json:
{
"compilerOptions": {
"module": "amd",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "dist/js/floor-map-designer.js",
"sourceMap": true
},
"exclude": [
"node_modules",
"dist",
"src/app.ts"
]
}
и задача глотка конфигурация:
var tsProject = ts.createProject({
declarationFiles: true,
noExternalResolve: false,
module: 'AMD',
removeComments: true,
outFile: "my-library.js",
exclude: ["app.ts", "config.ts"]
});
var paths = {
npm: './node_modules/',
lib: "./lib/vendor/",
tsSource: ['./src/MyLibrary/**/*.ts', "./lib/typings/tsd.d.ts"],
tsOutput: "./dist/js/",
tsDef: "./lib/typings/"
};
gulp.task('ts-compile', function() {
var tsResult = gulp.src(paths.tsSource)
.pipe(ts(tsProject));
return merge([
tsResult.dts.pipe(gulp.dest(paths.tsDef)),
tsResult.js.pipe(gulp.dest(paths.tsOutput))
]);
});
Я помню последний раз я использовал машинопись я использовал для создания автоматически сформированного отпечатком с большим количеством
/// <reference path="...."
и добавить /// <ts:autoRef="referencesFile.ts">
ко всем файлам .ts.
Но я заметил, что компилятор TS больше не должен зависеть от порядка файлов, а моя IDE больше не требует его, поэтому я бы хотел, если это возможно, избежать его.
Я также заметил, что использование опции -out считается плохим (по крайней мере, на этом сайте: https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md), но как его заменить?
Я использую машинописную версию 1.7.
Хорошо, я попробую. Означает ли это, что мне придется добавлять импорт даже для внутренних зависимостей модулей? Пример: класс A расширяет B - мне нужно импортировать B? – Klinki
Да. Если вы этого не сделаете, вам нужно управлять заказом самостоятельно таким образом, который отключен от фактического источника (например, массив файлов, хакеры файлов ссылок и т. Д.) – basarat
Спасибо за совет, я попытался использовать модули RequireJS и AMD, но это не так «Я очень хорошо работаю для меня. RequireJS, похоже, очень глючит в Google Chrome (он даже не загружает основной файл данных, когда консоль разработчика открыта). И я бы предпочел, чтобы моя библиотека была объединена в один файл. Думаю, для меня было бы нормально загружать этот конкатенированный файл с помощью requireJS, но я не хочу загружать каждый отдельный класс и интерфейс. – Klinki