#typescript #webpack
#typescript #webpack
Вопрос:
В моем проекте tsconfig.json
содержится это …
"include": [
"src/**/*",
"generated**/*"
]
Есть два файла src/main.ts
и generated/data.json
Я хотел бы import data from 'data.json';
внутри src/main.ts
. Я могу заставить его работать, только если generated/data.json
он перемещен в src
.
Я использую webpack
и ts-loader
для вывода пакета.
Я пробовал как использовать rootDirs
, так и сопоставлять пути в tsconfig
, чтобы src/main.ts
можно import data from
было использовать data.json;`, но безрезультатно.
Ответ №1:
Если ваши import
инструкции не содержат относительных спецификаторов (т. Е. просто что-то вроде import data from "messages.json"
), вы будете искать в, node_modules
если ваш "moduleResolution"
есть "Node"
(что является наиболее распространенным).
Я думаю, что хорошим решением для вас может быть использование функции сопоставления путей компилятора (описанной здесь:https://www.typescriptlang.org/docs/handbook/module-resolution.html ). Затем вы можете импортировать свои данные, используя, import data from 'generated/messages.json'
если вы настроили сопоставление путей для generated
, чтобы указать, куда вы хотите. Таким образом, вы можете избежать использования относительных спецификаторов, если это то, чего вы хотите избежать.
Если это не дает вам того, что вы хотите, я бы рекомендовал выполнить синтаксический анализ здесь https://www.typescriptlang.org/docs/handbook/module-resolution.html поскольку это предоставит вам в основном все ваши варианты (если вы не хотите использовать более сложную систему сборки, такую как webpack).
Комментарии:
1. Увы, я использую
webpack
. Возможно, это объясняет, почему оба сопоставления путей, иrootDirs
не имели никакого эффекта. Я обновлю и переориентирую вопрос.