@itgenio/edik-compiler
TypeScript icon, indicating that this package has built-in type declarations

0.0.18 • Public • Published

@itgenio/edik-compiler

Браузерный компилятор, собирающий CJS модули для работы с install

Для сборки JS используется esbuild-wasm.

Для сборки CSS используется less.

Файлы кода

На выходе получается файл с названием [name].[hash].js, например:

type CompilerFile = { name: string; content: string };

const someFiles: CompilerFile[] = [
  {
    name: 'index.js',
    content: `
    import { logger } from './utils/logger.js';
    console.log(logger());
  `,
  },

  {
    name: 'utils/logger.js',
    content: `
    export const logger = () => 'logs';
  `,
  },
];

const moduleFile: CompilerFile = {
  name: 'index.KLIO2BFQ.js',
  content: `edikInstall({'node_modules':{'index.KLIO2BFQ.js'(require,exports,module) {
  const logger = () => 'logs';
  console.log(logger());
}}},{extensions:['.js','.css','.less','.ts','.json']})`,
};

Файлы стилей

На выходе получается файл с названием style.css

Файлы, папки и спец. папки

В сборке участвуют следующие типы ресурсов:

  • код;
  • стили.

Эти ресурсы могут быть расположены на любом уровне вложенности.

Существуют специальные папки, которые меняют правила сборки:

  • editor - файлы внутри доступны только для сборки редактор

Как создается сборка

  1. Выбрать тип сборки;
  2. Составить список ресурсов и пакетов, необходимых для типа сборки;
  3. Конвертируем имена в относительные пути, например:
| packages/some-component/index.js  -> './packages/some-component/index.js'
| folder
|   utils.js                        -> './folder/utils.js'
| main.js                           -> './main.js'
  1. Генерируем файл entrypoint.js(невидимый), в котором импортируем все файлы. Порядок не имеет значения, так как далее будет строиться дерево зависимостей и код скомпилируется в нужном порядке.
import './packages/some-component/index.js';
import './folder/utils.js';
import './main.js';
  1. Список файлов с содержимым и entrypoint.js передаются в ESBuild чтобы собрались файлы исполнения (executable files). Эти файлы далее будут запущены на выполнение с помощью Executor-ов.
  2. Типы импортов:
  • относительный: файлы в ресурсах
  • наши пакеты: берем из ресурсов. если пакет не установлен - кидаем ошибку
  • npm пакеты:
  • url до файла?

Readme

Keywords

none

Package Sidebar

Install

npm i @itgenio/edik-compiler

Weekly Downloads

0

Version

0.0.18

License

ISC

Unpacked Size

1.04 MB

Total Files

15

Last publish

Collaborators

  • pavel-r
  • brondinar
  • asosnovskiy
  • nkroe