📦 Ресурси
Parcel заснований на ресурсах. Ресурси можуть представляти будь-який файл, але Parcel має особливу підтримку для певних видів ресурсів, таких як JavaScript-, CSS- і HTML-файли. Parcel автоматично аналізує залежності, зазначені в цих файлах і включає їх у вихідний бандл. Ресурси аналогічних типів згруповані в один і той же вихідний бандл. Якщо ви імпортуєте ресурс іншого типу (наприклад, якщо ви імпортували CSS-файл з JS), він запускає дочірній бандл і залишає посилання на нього в батьківському. Це буде показано в наступних розділах.
JavaScript
Найбільш традиційним типом файлів для веб-пакувальників є JavaScript. Parcel підтримує синтаксис CommonJS і модулів ES6 для імпорту файлів. Він також підтримує динамічний синтаксис функції import()
для асинхронного завантаження модулів, який обговорюється в розділі Розділення коду.
// Імпортувати модуль з використанням синтаксису CommonJS
const dep = require('./path/to/dep');
// Імпорт модуля з використанням синтаксису імпорту ES6
import dep from './path/to/dep';
Ви також можете імпортувати НЕ JavaScript з JavaScript-файлу, наприклад CSS або навіть файл зображення. Коли ви імпортуєте один з цих файлів, він не вбудовується в інші бандли, як це відбувається в деяких інших пакувальників. Замість цього він поміщається в окремий бандл (наприклад CSS-файл) разом з усіма його залежностями. Коли ви використовуєте CSS Modules, експортовані класи поміщаються в бандл JavaScript. Інші типи ресурсів експортують URL-адресу в вихідний файл в бандл JavaScript, щоб ви могли посилатися на них в своєму коді.
// Імпортувати файл CSS
import './test.css';
// Імпортувати файл CSS за допомогою CSS-модулів
import classNames from './test.css';
// Імпортувати URL-адресу в файл зображення
import imageURL from './test.png';
Якщо Ви плануєте включити файл в бандл JavaScript замість посилання на його URL-адресою, ви можете використовувати для цього API Node.js fs.readFileSync
. URL-адреса має бути статично аналізована, тобто він не може мати ніяких змінних (крім __dirname
і __filename
).
import fs from 'fs';
// Читання вмісту у вигляді рядка
const string = fs.readFileSync(__dirname + '/test.txt', 'utf8');
// Читання вмісту в якості Buffer
const buffer = fs.readFileSync(__dirname + '/test.png');
CSS
Ресурси CSS можуть бути імпортовані з файлу JavaScript або HTML і можуть містити залежності, на які посилається синтаксис @import
, а також посилання на зображення, шрифти і так далі черезurl()
. Інші імпортовані файли CSS за допомогою @import
, вбудовуються в один і той же бандл CSS, посиланняurl()
переписуються на їх вихідні імена файлів. Всі імена файлів повинні ставитися до поточного файлу CSS.
/* Імпортувати інший файл CSS */
@import './other.css';
.test {
/* Посилання на файл зображення */
background: url('./images/background.png');
}
Крім звичайного CSS, також підтримуються і інші компільовані в CSS мови, такі як LESS, SASS і Stylus, які працюють подібним чином.
SCSS
Компіляція SCSS вимагає модуля node-sass
. Встановіть його через npm:
npm install node-sass
Після установки node-sass
ви можете імпортувати SCSS-файли з JavaScript-файлів.
import './custom.scss'
Залежності в файлах SCSS можна використовувати з операторами @import
.
HTML
Ресурс HTML часто є вхідним файлом, який ви надаєте Parcel, однак на нього можуть посилатися JavaScript-файли, наприклад, для надання посилань на інші сторінки. URL-адреси скриптів, стилів, мультимедійних ресурсів та інших HTML-файлів витягуються і компілюються, як описано вище. Посилання переписуються в HTML, тому вони посилаються на правильні вихідні файли. Всі імена файлів повинні ставитися до поточного файлу HTML.
<html>
<body>
<!--посилаємося на файл зображення -->
<img src="./images/header.png">
<a href="./other.html">Посилання на іншу сторінку</a>
<!--імпортуємо JavaScript бандл-->
<script src="./index.js"></script>
</body>
</html>
Help us improve the docs
If something is missing or not entirely clear, please file an issue on the website repository or edit this page.