news 2026/9/19 6:08:07

PixiJS v8 项目脚手架实战指南:用 create-pixi CLI 从零搭建与集成 WebGL/WebGPU 应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PixiJS v8 项目脚手架实战指南:用 create-pixi CLI 从零搭建与集成 WebGL/WebGPU 应用

PixiJS v8 项目脚手架实战指南:用 create-pixi CLI 从零搭建与集成 WebGL/WebGPU 应用

【免费下载链接】pixijsThe HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.项目地址: https://gitcode.com/gh_mirrors/pi/pixijs

create pixi.js是 PixiJS v8 官方提供的项目脚手架 CLI,用于在几秒钟内生成一个可直接运行的 PixiJS 工程,也支持通过npm install pixi.js向既有项目增量集成 PixiJS。本文以官方技能文档 skills/pixijs-create/SKILL.md 为主线,完整覆盖 npm/yarn/pnpm/bun 四种包管理器的创建命令、交互式与非交互式两种流程、四类模板预置的选择逻辑、脚手架后的开发脚本,并深入仓库源码验证Application的初始化链路,帮助你快速上手并避开常见的坑。

Quick Start:两条命令完成项目搭建

交互式创建一个全新 PixiJS 项目:

npm create pixi.js@latest

或者在命令行直接指定项目名与模板,跳过所有提示:

npm create pixi.js@latest my-game -- --template bundler-vite

随后进入项目目录、安装依赖并启动开发服务器:

cd my-game npm install npm run dev

脚手架要求Node.js 18+ 或 20+。个别模板(尤其是creation-webframework-react)可能对 Node 版本要求更高,包管理器会在检测到版本不匹配时给出 "engines" 警告,升级 Node 后重跑 CLI 即可。

向现有项目添加 PixiJS

如果项目已经配置好了打包器(Vite、Webpack、esbuild 等)或框架(React 等),不必使用 CLI,直接安装 npm 包:

npm install pixi.js

然后从pixi.js导入并构造Application即可:

import { Application } from "pixi.js"; const app = new Application(); await app.init({ resizeTo: window, background: "#1099bb" }); document.body.appendChild(app.canvas);

CLI 模板只是新项目的一种便捷启动方式,并没有给库本身添加任何npm install pixi.js给不了的能力——两者最终使用的是同一个pixi.js包。当前仓库的 package.json 可以印证这一点:pixi.js主包通过main: "lib/index.js"/module: "lib/index.mjs"/types: "lib/index.d.ts"暴露入口,并利用exports字段提供pixi.js/apppixi.js/gifpixi.js/filters等按需子路径(见 package.json),任何打包器都能直接消费。

选择包管理器:同一命令的四种写法

create pixi.js对四种主流包管理器使用相同形状的命令:

npm create pixi.js@latest yarn create pixi.js pnpm create pixi.js bun create pixi.js

npm 7+ 有一个关键差异:在 npm 7 及更高版本中,包说明符之后的标志会被 npm 自身消费,必须用--分隔符把参数转发给 CLI,否则--template会被忽略、退回到交互式提示:

npm create pixi.js@latest my-game -- --template bundler-vite

Yarn、pnpm 和 bun 不需要额外的分隔符:

yarn create pixi.js my-game --template bundler-vite pnpm create pixi.js my-game --template bundler-vite bun create pixi.js my-game --template bundler-vite

另外,使用.作为项目名可以把脚手架写入当前目录(见下文"在现有目录中脚手架")。

交互式流程:跟着提示走

不带任何参数运行create pixi.js会依次弹出如下提示:

  1. 项目名(默认pixi-project);
  2. 框架 / 模板类别
  3. 变体(适用时选择 TypeScript 还是 JavaScript);
  4. 是否立即安装依赖(部分运行器会询问)。

流程结束时,CLI 会打印与调用它的包管理器相对应的cd+ 安装 + dev 命令,直接复制执行即可。

非交互式流程:面向脚本与 CI

在 CI、自动化脚本或快速上手文档中,更推荐用项目名加--template跳过全部提示:

npm create pixi.js@latest my-game -- --template bundler-vite

这种形式输出稳定、可重复,适合放进 Makefile、GitHub Actions 或任何流水线任务中。

可用模板预置:四类选择逻辑

模板分为四类,先明确类别再选具体预置:

  • Bundler 模板bundler-*):用你选择的打包器接好通用 PixiJS 工程。适合想自己决定项目结构的情况。
  • Creation 模板creation-*):面向平台定制的启动器,已经接好额外能力(AssetPack 资源打包、音效、UI、场景路由)。适合想要"开箱即用全家桶"的情况。
  • Framework 模板framework-*):把 PixiJS 嵌入宿主框架(如 React)中。
  • Extension 模板extension-*):用于搭建可复用的 PixiJS 扩展/包。

对大多数新项目,bundler-vite是推荐起点。完整预置列表如下:

模板内容
bundler-viteVite + TypeScript PixiJS 工程,默认的首选模板
bundler-vite-jsVite + 纯 JavaScript
bundler-webpackWebpack + TypeScript
bundler-webpack-jsWebpack + 纯 JavaScript
bundler-esbuildesbuild + TypeScript
bundler-esbuild-jsesbuild + 纯 JavaScript
bundler-import-map无打包器方案,使用浏览器 import map(适合学习/演示)
creation-webPixiJS Creation Engine Web 模板,内置基于场景的游戏脚手架、AssetPack、音效与 UI 集成
framework-reactReact + TypeScript + PixiJS(通过@pixi/react包)
framework-react-jsReact + 纯 JavaScript + PixiJS
extension-default构建可复用 PixiJS 扩展/包的启动器

实时模板清单维护在create-pixi仓库;如果不确定当前有哪些选项,直接不带参数运行npm create pixi.js@latest,交互菜单会展示最新列表。

脚手架后的开发流程

每个模板都内置相同的三步上手流程:

cd my-game npm install npm run dev

npm run dev会在默认端口启动本地开发服务器(Vite 默认 5173、webpack 默认 8080 等,模板自带 README 中有精确端口)。修改src/下的代码会热更新,无需整页刷新。

其余常用脚本(不同预置的名称可能略有差异):

  • npm run build:在dist/生成生产构建;
  • npm run preview/npm run serve:在本地预览生产构建;
  • npm run lint:运行模板配置的 linter(如果模板自带了)。

仓库中的真实 Vite 工程可以印证这套工作流:playground使用 playground/vite.config.ts 配置 Vite,其中通过aliaspixi.js直接指向lib/index.mjs以便本地调试(playground/vite.config.ts),并把build.target设为esnext(playground/vite.config.ts)——这正是 Vite + PixiJS 工程的典型形态,可作为bundler-vite模板落地后的对照样本。

在现有目录中脚手架

把项目名写成.即可将脚手架写入当前工作目录:

mkdir my-game cd my-game npm create pixi.js@latest . -- --template bundler-vite

注意:如果目录非空且存在与脚手架冲突的文件,CLI 会拒绝执行,除非你在确认提示中同意覆盖。

源码验证:app.init()背后发生了什么

脚手架生成的入口文件(src/main.ts)通常就是两件事:new Application()await app.init(...)。从当前仓库源码可以完整还原这条链路。

在 src/app/Application.ts 中,Application构造函数不接受任何参数——传入选项只会触发 v8 弃用警告(src/app/Application.ts),这是 v8 相对 v7 最重要的 API 变化:

public async init(options?: Partial<ApplicationOptions>) { options = { ...options }; this.stage ||= new Container(); this.renderer = await autoDetectRenderer(options as ApplicationOptions) as R; Application._plugins.forEach((plugin) => { plugin.init.call(this, options); }); }

(见 src/app/Application.ts)。也就是说:

  1. app.stage是一个普通的Container(在 src/app/Application.ts 声明),所有场景对象都挂在它下面;
  2. app.rendererautoDetectRendererpreferencewebgl/webgpu/canvas或数组形式)自动探测创建;
  3. 所有注册的ApplicationPlugin会依次以 Application 实例为this调用init,把resizeToautoStartsharedTicker等选项落到实处。

默认安装的两个插件在 src/app/init.ts 中注册:ResizePluginTickerPlugin(src/app/init.ts)。TickerPlugin会在init完成后自动把app.render()挂到每帧循环上(对应选项autoStart: false可关闭);ResizePlugin监听resize事件并调用renderer.resize()同步画布尺寸。

app.canvasapp.screen等属性都是对 renderer 的只读转发:canvas返回渲染器的HTMLCanvasElement(src/app/Application.ts),screen返回描述可见区域的Rectangle(src/app/Application.ts)。销毁时,插件按注册的逆序销毁,随后stage.destroy(options)renderer.destroy(rendererDestroyOptions)(src/app/Application.ts)——这就是脚手架生成的入口在app.init()之后可以立刻使用app.canvas/app.renderer/app.screen的底层保证。

Common Mistakes:三个高频坑

[HIGH] npm 7+ 上漏写--分隔符

错误写法:

npm create pixi.js@latest my-game --template bundler-vite

正确写法:

npm create pixi.js@latest my-game -- --template bundler-vite

原因:npm 7+ 会消费包说明符之后的标志,除非用--转发。缺少分隔符时 CLI 会忽略--template并退回交互式提示。Yarn、pnpm、bun 不需要分隔符。

[MEDIUM] 在过旧的 Node 版本上运行

PixiJS 要求 Node 18+ 或 20+,部分模板(framework-reactcreation-web)对工具链还有更高的版本预期。看到包管理器报 "engines" 警告时,先升级 Node 再重跑 CLI。

[MEDIUM] Vite 生产构建中模块顶层的await app.init()失效

在 Vite 版本<=6.0.6上,顶层await在开发环境正常,但在生产构建中会出问题,因此bundler-vite工程如果在模块顶层这样做,npm run build之后会失败:

const app = new Application(); await app.init({ resizeTo: window }); // 生产构建的模块顶层会失败

把初始化包进 async IIFE 即可:

(async () => { const app = new Application(); await app.init({ resizeTo: window }); document.body.appendChild(app.canvas); })();

把 Vite 升级到 6.0.6 以上也能解决,但 IIFE 写法在所有版本上都安全,并且与 PixiJS 官方快速上手指南一致。

Next Steps:脚手架之后的系统学习路径

npm run dev启动后,模板会打开一个空白或 bunny-sprite 场景。按以下顺序继续深入:

  1. 阅读 skills/pixijs-application/SKILL.md,理解模板入口中new Application()+await app.init(...)的完整选项体系,以及app.stage/app.renderer/app.canvas/app.screen的关系,还有ResizePluginTickerPlugin的默认行为;
  2. 阅读 skills/pixijs-core-concepts/SKILL.md 建立渲染器与渲染循环的心智模型;
  3. 在添加第一个有规模的场景前,阅读 skills/pixijs-scene-core-concepts/SKILL.md,提前了解"容器 vs 叶子节点"的规则;
  4. 需要加载真实美术资源时,通过 skills/pixijs-assets/SKILL.md 学习如何把纹理、字体和 bundle 放进模板约定的public/src/assets/目录。

仓库中的 examples 目录提供了大量可直接参考的运行示例(如 examples/animated-sprite_animation.ts、examples/container_blend-modes_comparison.ts、examples/graphics_basic_shapes.ts 等),它们是验证bundler-vite模板中Application用法的最佳对照资源。

【免费下载链接】pixijsThe HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.项目地址: https://gitcode.com/gh_mirrors/pi/pixijs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 6:07:14

Yew 基准测试结果处理器 process-benchmark-results 原理与 CI 实战

Yew 基准测试结果处理器 process-benchmark-results 原理与 CI 实战 【免费下载链接】yew Rust / Wasm framework for creating reliable and efficient web applications 项目地址: https://gitcode.com/gh_mirrors/ye/yew 导读 process-benchmark-results 是 Yew 仓库…

作者头像 李华
网站建设 2026/9/19 6:07:10

纳米材料四大效应与工程应用:从催化剂到隐身材料

简介&#xff1a;纳米技术作为21世纪前沿科技&#xff0c;已深入材料、化工等多个领域。这份《纳米技术与纳米材料》资料面向材料、化学等相关专业学习者及对纳米科技感兴趣的读者&#xff0c;系统讲解纳米技术与纳米材料的核心概念&#xff0c;包括纳米尺度范围、纳米材料的定…

作者头像 李华
网站建设 2026/9/19 6:05:48

MathType嵌入Word完整教程:从安装到踩坑排查全记录

干了这么多年文档工程&#xff0c;我对MathType和Word这对搭档太熟了。你要是理工科出身&#xff0c;写论文、出报告、整教材&#xff0c;十有八九躲不开公式排版。Word自带的公式编辑器其实够用&#xff0c;但真到了要写长文档、公式带编号、批量改格式的时候&#xff0c;Math…

作者头像 李华
网站建设 2026/9/19 6:04:24

PFC6.0柔性三轴体变监测工具开发与应用

1. 项目背景与核心价值最近在岩土工程数值模拟领域&#xff0c;PFC6.0&#xff08;Particle Flow Code&#xff09;作为一款基于离散元方法的专业软件&#xff0c;其强大的颗粒流分析能力一直备受工程师和研究人员的青睐。而其中的"柔性三轴"模块更是模拟土体力学行为…

作者头像 李华
网站建设 2026/9/19 6:04:23

401 invalid_api_key?TaoToken + Cline 这样验证模型 ID

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华