deno.com
本页内容

打包

注意

这是一个实验性功能,需要 Deno 2.4.0 或更高版本。

deno bundle 命令会输出一个包含所有依赖项的单个 JavaScript 文件。

deno bundle 底层由 ESBuild 提供支持。

此工具对于将项目部署或分发为单个优化过的 JS 文件非常有用。

支持的特性 跳到标题

  • 解析并内联所有依赖项
  • 支持 JSX/TSX、TypeScript 和现代 JavaScript,包括 导入属性 和 CSS
  • 可选的代码压缩 (--minify) 和源映射 (--sourcemap)
  • 代码分割
  • 平台目标 (--platform,支持 Deno 和浏览器)
  • 配置后支持 JSX

基本示例 跳到标题

main.ts
import chalk from "npm:chalk";

console.log(chalk.red("Hello from `deno bundle`!"));
$ deno bundle main.ts > bundle.js

# Or with an explicit output file:

$ deno bundle -o bundle.js main.ts

上述调用会生成一个包含所有依赖项的 bundle.js 文件,从而产生一个自包含的应用程序文件

$ deno bundle.js
Hello from `deno bundle`!

在要打包的文件中可以使用 JSR、npm、http(s) 和本地导入,deno bundle 会负责收集所有源文件并生成单个输出文件。

选项概览 跳到标题

标志 描述
-o, --output <文件> 将打包输出写入文件
--minify 为生产环境压缩输出
--format <格式> 输出格式(默认为 esm
--code-splitting 启用代码分割
--platform <平台> browserdeno 打包(默认: deno
--sourcemap 包含源映射 (linked, inline, external)
--watch 文件更改时自动重建
--inline-imports 内联导入的模块 (truefalse)

为 Web 打包一个 React 页面 跳到标题

app.jsxindex.html 开始

import React from "npm:react";
import { createRoot } from "npm:react-dom/client";

function App() {
  return <h1>Hello, React!</h1>;
}

const root = createRoot(document.getElementById("root"));
root.render(<App />);
<!DOCTYPE html>
<html lang="en">
  <body>
    <div id="root"></div>
    <script type="module" src="/bundle.js"></script>
  </body>
</html>

现在,让我们打包

$ deno bundle --platform=browser app.jsx -o bundle.js
⚠️ deno bundle is experimental and subject to changes
Bundled 9 modules in 99ms
  app.bundle.js 874.67KB

此时,我们准备好提供页面服务了,让我们使用 来自 JSR 的 @std/http/file-server 来提供我们的应用服务

$ deno run -ENR jsr:@std/http/file-server
Listening on http://127.0.0.1:8000

在浏览器中访问该页面应该会显示

Image of serving bundled React app

您找到所需内容了吗?

隐私政策