У меня есть проект Lerna, содержащий два пакета Typescript A и B. tsconfig.json
для обоих пакетов:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"esModuleInterop": true,
"noImplicitAny": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": true,
"allowJs": false,
"resolveJsonModule": true,
"declaration": true,
"moduleResolution": "node",
"lib": ["es2015", "dom"]
},
"include": [
"src",
"test"
],
"exclude": [
"node_modules/**",
"packages/*/node_modules/**",
"examples/*/node_modules/**",
"**/*.d.ts"
]
}
Пакет А содержит следующий код:
const data = require('./myData.json');
Пакет B зависит от пакета A. Внутри пакета B выполняется вызов функции, экспортированной пакетом A, поэтому загружается приведенный выше код. Однако я получаю Error: Cannot find module './myData.json'
в этом контексте. Теперь, просматривая выходной каталог компилятора для пакета A, я не вижу файл JSON. Действительно, заглянув внутрь каталога node_modules
пакета B в пакете A, я тоже не вижу там файла.
Почему файл JSON может отсутствовать в опубликованном пакете? Есть ли что-то особенное, что нужно сделать, чтобы включить файлы ресурсов (JSON, открытый текст) в пакет Typescript?
tsc
не имеет возможности копировать файлы ресурсов; вам нужно будет использовать отдельный инструмент. Я оставлю вопрос без ответа, чтобы побудить людей предлагать свои любимые инструменты/подходы. - person Matt McCutchen   schedule 01.09.2018