Создание deno из исходного кода
Ниже приведены инструкции по сборке Deno из исходного кода. Если вы просто хотите использовать Deno, вы можете загрузить предварительно собранный исполняемый файл (подробнее в главе Getting Started).
Клонирование репозитория
Deno использует подмодули, поэтому вы должны помнить о клонировании с помощью --recurse-submodules.
Linux(Debian)/Mac/WSL:
git clone --recurse-submodules https://github.com/denoland/deno.git
Windows:
-
Включить режим разработчика (в противном случае для символических ссылок потребуются права администратора).
-
Убедитесь, что вы используете git версии 2.19.2.windows.1 или новее.
-
Установите
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
-
Получите 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) для настольных приложений
-
Включить "Инструменты отладки для 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