Я использую typescript и requirejs. Я хочу импортировать код своей библиотеки в виде модулей, чтобы не делать все вокруг глобальным. Моя проблема в том, что любое использование импорта или экспорта в машинописном файле превращает весь файл в модуль. В случае кода моего приложения это означает, что его нельзя вызвать напрямую.
Вот пример приложения.
index.html
<!DOCTYPE html>
<html>
<head>
<title>My Test App</title>
<script src="require.js"></script>
<script src="app1.js"></script>
<script src="app2.js"></script>
</head>
</html>
tsconfig.json
{
"compilerOptions": {
"module": "amd",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false
}
}
приветствие.ts
export function greet(name: string) {
alert(`Hello ${name}`);
}
app1.ts
import { greet } from './greeter';
greet('alice');
app2.ts
import { greet } from './greeter';
greet('bob');
tsc
запускается без проблем, но вот один из файлов, которые я получаю в качестве вывода.
вывод tsc: app1.js
define(["require", "exports", './greeter'], function (require, exports, greeter_1) {
"use strict";
greeter_1.greet('alice');
});
Это не работает. Из require.js
Обязательно загрузите все скрипты, которые вызывают define() через RequireJS API. Не кодируйте вручную теги сценариев в HTML для загрузки сценариев, в которых есть вызовы define().
Итак, как я могу убедить компилятор машинописного текста производить вывод без вызова define()
в нем. В app1.ts я не собираюсь определять модуль, просто использую другие модули. require()
кажется более подходящим для этого. Есть ли способ компилировать import
в require()
?