Spec-Zone.ru › Deno 2

Создание deno из исходного кода

Ниже приведены инструкции по сборке Deno из исходного кода. Если вы просто хотите использовать Deno, вы можете загрузить предварительно собранный исполняемый файл (подробнее в главе Getting Started).

Клонирование репозитория

Примечание

Deno использует подмодули, поэтому вы должны помнить о клонировании с помощью --recurse-submodules.

Linux(Debian)/Mac/WSL:

git clone --recurse-submodules https://github.com/denoland/deno.git

Windows:

  1. Включить режим разработчика (в противном случае для символических ссылок потребуются права администратора).

  2. Убедитесь, что вы используете git версии 2.19.2.windows.1 или новее.

  3. Установите core.symlinks=true перед коммитом:

    git config --global core.symlinks true
    git clone --recurse-submodules https://github.com/denoland/deno.git
    

Предварительные требования

Rust

Примечание

Deno требует определённой версии Rust. Возможно, Deno не поддерживает сборку на других версиях или на ночных сборках Rust. Версия Rust, необходимая для конкретного релиза, указана в файле rust-toolchain.toml.

Обновить или установить Rust. Проверьте корректность установки/обновления Rust:

rustc -V
cargo -V

Нативные компиляторы и линковщики

Многие компоненты Deno требуют нативного компилятора для построения оптимизированных нативных функций.

Linux(Debian)/WSL

wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh 17
apt install --install-recommends -y cmake libglib2.0-dev

Mac

Пользователи Mac должны иметь установленные XCode Command Line Tools. (XCode уже включает XCode Command Line Tools. Запустите xcode-select --install для установки без XCode.)

CMake также требуется, но не входит в комплект Command Line Tools.

brew install cmake

Mac M1/M2

Для пользователей Apple aarch64 необходимо установить lld.

brew install llvm lld
# Add /opt/homebrew/opt/llvm/bin/ to $PATH

Windows

  1. Получите VS Community 2019 с инструментом "Разработка настольных приложений с C++" и убедитесь, что выбраны следующие необходимые инструменты, а также все инструменты C++:

    • Инструменты Visual C++ для CMake
    • Windows 10 SDK (10.0.17763.0)
    • Инструменты тестирования - базовые функции - инструменты сборки
    • Visual C++ ATL для x86 и x64
    • Visual C++ MFC для x86 и x64
    • Поддержка C++/CLI
    • Набор инструментов VC++ 2015.3 v14.00 (v140) для настольных приложений
  2. Включить "Инструменты отладки для Windows".

    • Перейдите в "Панель управления" → "Программы" → "Программы и компоненты"
    • Выберите "Windows Software Development Kit - Windows 10"
    • → "Изменить" → "Изменить" → Отметьте "Инструменты отладки для Windows" → "Изменить" →"Готово".
    • Или используйте: Инструменты отладки для Windows (Обратите внимание: файлы будут загружены, вы должны установить X64 Debuggers And Tools-x64_en-us.msi вручную.)

Компилятор Protobuf

Для сборки Deno требуется компилятор Protocol Buffers.

Linux(Debian)/WSL

apt install -y protobuf-compiler
protoc --version  # Ensure compiler version is 3+

Mac

brew install protobuf
protoc --version  # Ensure compiler version is 3+

Windows

Пользователи Windows могут загрузить последнюю двоичную версию с GitHub.

Python 3

Примечание

Deno требует Python 3 для запуска тестов WPT. Убедитесь, что суффикс-безымянный python/python.exe существует в вашей PATH и ссылается на Python 3.

Сборка Deno

Самый простой способ сборки Deno — использование предварительно скомпилированной версии V8.

Для WSL убедитесь, что в .wslconfig выделено достаточно памяти

cargo build -vv

Однако, вы также можете собрать Deno и V8 из исходного кода, если занимаетесь разработкой V8 на низком уровне или используете платформу, на которой нет предварительно скомпилированных версий V8:

V8_FROM_SOURCE=1 cargo build -vv

При сборке V8 из исходного кода может потребоваться больше зависимостей. Подробности о сборке V8 см. в README rusty_v8.

Сборка

Сборка с помощью Cargo:

# Build:
cargo build -vv

# Build errors?  Ensure you have latest main and try building again, or if that doesn't work try:
cargo clean && cargo build -vv

# Run:
./target/debug/deno run tests/testdata/run/002_hello.ts

Запуск тестов

Deno имеет полную тестовую базу данных, написанную на Rust и TypeScript. Тесты Rust можно запустить во время процесса сборки, используя:

cargo test -vv

Тесты TypeScript можно запустить, используя:

# Run all unit/tests:
target/debug/deno test -A --unstable --lock=tools/deno.lock.json --config tests/config/deno.json tests/unit

# Run a specific test:
target/debug/deno test -A --unstable --lock=tools/deno.lock.json --config tests/config/deno.json tests/unit/os_test.ts

Работа с несколькими crate

Если набор изменений охватывает несколько crates Deno, вы можете захотеть собрать несколько crates вместе. Рекомендуется проверить все необходимые crates рядом друг с другом. Например:

- denoland/
  - deno/
  - deno_core/
  - deno_ast/
  - ...

Затем вы можете использовать функцию Cargo patch для переопределения путей зависимостей по умолчанию:

cargo build --config 'patch.crates-io.deno_ast.path="../deno_ast"'

Если вы работаете над набором изменений несколько дней, вы можете добавить патч в свой файл Cargo.toml (только убедитесь, что вы удалили его перед подготовкой ваших изменений):

[patch.crates-io]
deno_ast = { path = "../deno_ast" }

Это позволит скомпилировать crate deno_ast из локального пути и скомпилировать его, вместо получения из crates.io.

Примечание: Важно, чтобы версии зависимостей в Cargo.toml соответствовали версиям зависимостей на диске.

Используйте cargo search <dependency_name> для проверки версий.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/contributing/building_from_source

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API