0.0.18 • Published 1 year ago

@itgenio/edik-compiler v0.0.18

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

@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 до файла?
0.0.18

1 year ago

0.0.17

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.3

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago