Webassets + Typescript, не может разрешать символы / модули
У меня есть проект колбы со следующей структурой:
├─ app.py
├─ project
| ├─ __init__.py
| └─ static
| └─ typescript
| └─ app.ts
└─ typings
├─ globals
| └─ ... # multiple imported ts libraries
└─ index.d.ts
Я использую интеграцию веб-упаковщика под названием Flask Assets. Я настроил компиляцию так (в __init__.py
)
ts = get_filter('typescript')
ts.load_paths = [
#os.path.join(config.APP_ROOT, '..', 'typings'), # doesn't do anything :/
os.path.join(app.static_folder, 'typescript')
]
assets.register('javascript', Bundle(
'typescript/app.ts',
filters = (ts, 'jsmin'),
output = 'js/app-%(version)s.js'
))
Мой app.ts, более или менее,
class SomeClass {
... various class methods, using things like jQuery and CryptoJS
}
нет импорта - я не совсем уверен, нужны ли они мне или нет.
Конкретная ошибка, которую я получаю,
Cannot find name 'JQuery'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(7,17): error TS2503: Cannot find namespace 'CryptoJS'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(10,27): error TS2304: Cannot find name '$'.
... a bunch more about other symbols
1 ответ
Я вроде решил это...
glob_string = os.path.join(config.APP_ROOT, '..', 'typings', '*', '*', '*.d.ts')
assets.register('javascript', Bundle(
glob.glob(glob_string),
'typescript/app.ts',
filters = ('typescript', 'jsmin'),
output = 'js/app-%(version)s.js'
))
в основном я просто "вручную" добавляю все файлы определений в пакет (используя glob). Недостаточно просто добавить index.d.ts
в корне DIR набрав как фильтр машинописи копирует .ts
во временный файл (в /tmp
) до компиляции и пути в index.d.ts
относительны
Следует также отметить, что ts.load_paths
ничего не делает...