Как импортировать файл json в компонент stencil

#stenciljs

#stenciljs

Вопрос:

Я хочу импортировать файл json с данными в StencilJS, например:

 const data = await import('./data.json')

// OR
import data from './data.json'

// OR
import * as data from './data.json'

// OR
const data = require('./data.json')
  

Но ни один из них не работает.

Чего я хочу добиться, так это иметь динамически загружаемый модуль json с разделением кода или, альтернативно, статически построенный модуль json (не разделенный кодом, но связанный по определенным путям).

Ответ №1:

Обновление 2/2021

Это также можно сделать без плагина, просто включив resolveJsonModule in tsconfig.json (с дополнительным бонусом выведенных типов).

 // tsconfig.json

{
  "compilerOptions": {
    "resolveJsonModule": true,
    // ...
  }
}
  
 import { version } from '../package.json';
  

( .json В этом случае важно указать расширение.)


Оригинальный ответ

Вы можете использовать @rollup/plugin-json для этого, который преобразует .json файлы в модули ES6.

 npm i -D @rollup/plugin-json
  
 // stencil.config.ts

import json from '@rollup/plugin-json'

export const config: Config = {
  plugins: [json()],
  // ...
};
  

Тогда все первые три ваших оператора импорта должны работать или даже именованный импорт
(нравится import { version } from './package' ).

Комментарии:

1. Я продолжаю получать Cannot find module './package' or its corresponding type declarations ошибку, также добавленную "resolveJsonModule": true, в мой файл tsconfig.json