Как импортировать не-машинописные ресурсы из файла TypeScript с помощью Parcel

#javascript #html #css #typescript #parceljs

#javascript #HTML #css #typescript #parceljs

Вопрос:

Вот выдержка из документов Parcel:

Вы также можете импортировать ресурсы, отличные от JavaScript, из файла JavaScript, например CSS, HTML или даже файла изображения. Когда вы импортируете один из этих файлов, он не является встроенным, как в некоторых других пакетах. Вместо этого он помещается в отдельный пакет (например, файл CSS) вместе со всеми его зависимостями. При использовании модулей CSS экспортированные классы помещаются в пакет JavaScript. Другие типы ресурсов экспортируют URL-адрес в выходной файл в пакете JavaScript, чтобы вы могли ссылаться на них в своем коде.

 // Import a CSS file
import './test.css'

// Import a CSS file with CSS modules
import classNames from './test.css'

// Import the URL to an image file
import imageURL from './test.png'

// Import an HTML file
import('./some.html')
// or:
import html from './some.html'
// or:
require('./some.html')
  

Если вы хотите встроить файл в пакет JavaScript вместо
ссылайтесь на него по URL, вы можете использовать Node.js fs.readFileSync API для выполнения
это. URL-адрес должен быть статически анализируемым, что означает, что он не может иметь
любые переменные в нем (кроме __dirname и __filename).

 import fs from 'fs'

// Read contents as a string
const string = fs.readFileSync(__dirname   '/test.txt', 'utf8')

// Read contents as a Buffer
const buffer = fs.readFileSync(__dirname   '/test.png')

// Convert Buffer contents to an image
;<img src={`data:image/png;base64,${buffer.toString('base64')}`} />
  

Я пытался выполнить некоторые из них, но из файла TypeScript, и, похоже, это не работает.

Вот пример того, чего я пытаюсь достичь:

component.html

 <h1>Some really big text</h1>
<p>Some much smaller text</p>
  

component.css

 h1 {
  font-size: 80px;
  text-align: center;
}

p {
  font-size: 10px;
}
  

component.ts

 import { styles } from './component.css;
import { html } from './component.html;

class Component extends HTMLElement {
  constructor() {
  super();

  // Append the styles and html to shadowRoot on element
}

customElements.define('app-root', Component);
  

Идея состоит в том, чтобы определить пользовательские элементы, используя их собственные отдельные файлы html, css и ts. Затем корневой index.html файл может указывать на файл main.ts, а main.ts может импортировать все файлы компонентов. Как я могу заставить это работать?

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

1. у вас отсутствует апостроф после ./component.css и ./component.html

2. А также, сделайте это следующим образом: импортируйте * как стили из ‘./component.css’;