前端开发
在新建或已有项目中接入 PixiJS v8:用…
适用于搭建 PixiJS v8 新项目、向现有项目添加 PixiJS,以及排查 create-pixi 模板、TypeScript WebGPU 类型和 Vite 生产构建问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在新建或已有项目中接入 PixiJS v特定
解决思路
- 使用 create pixi.js 官方 CLI 搭建新的 PixiJS v8 项目:用 npm、yarn、pnpm 或 bun 运行,从交互菜单选择模板,或传 --template 跳过提示;它会写出一个自包含项目文件夹,然后 cd 进去、安装依赖并运行 dev 脚本。
- 快速开始(交互):运行 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-web 和 framework-react)可能需要更新 Node,包管理器会警告。
- 向已有项目添加 PixiJS 时跳过 CLI,直接运行 npm install pixi.js。
- 在已有项目中从 pixi.js 导入并构造 Application(具体见 pixijs-application)。
- CLI 模板只是新项目便利,不会提供 npm install pixi.js 之外的能力。
- 选择包管理器时命令形状相同:npm create pixi.js@latest;yarn create pixi.js;pnpm create pixi.js;bun create pixi.js。
- npm 7+ 必须在 CLI flags 前传 --,否则 npm 会消费这些 flags: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。
- 使用 . 作为项目名可脚手架到当前目录。
- 交互流程:无参数运行后按提示依次选择项目名(默认 pixi-project)、框架/模板类别、变体(适用时 TypeScript vs JavaScript)、是否立即安装依赖(部分运行器)。
- 交互流程结束时,CLI 会打印与你调用时所用包管理器对应的 cd + install + dev 命令。
- 非交互流程:传项目名和 --template 可跳过所有提示;这是脚本、CI 和 quickstart 文档应使用的形式。
- 选择模板时按类别决定:bundler-* 是用所选 bundler 接好的通用 PixiJS 设置;creation-* 是平台定制 starter,已接入 AssetPack、声音、UI、场景路由;framework-* 是把 PixiJS 嵌入 React 等宿主框架;extension-* 是构建可复用 PixiJS 包的脚手架。
- 大多数新项目推荐从 bundler-vite 开始。
- 模板 bundler-vite:Vite + TypeScript PixiJS 项目,默认首选模板。
- 模板 bundler-vite-js:Vite + 纯 JavaScript。
- 模板 bundler-webpack:Webpack + TypeScript。
- 模板 bundler-webpack-js:Webpack + 纯 JavaScript。
- 模板 bundler-esbuild:esbuild + TypeScript。
- 模板 bundler-esbuild-js:esbuild + 纯 JavaScript。
- 模板 bundler-import-map:无 bundler,使用浏览器 import map;适合学习/演示。
- 模板 creation-web:PixiJS Creation Engine web 模板,带基于场景的游戏脚手架、AssetPack、声音和 UI 集成。
- 模板 framework-react:React + TypeScript + PixiJS,通过 @pixi/react 包。
- 模板 framework-react-js:React + 纯 JavaScript + PixiJS。
- 模板 extension-default:构建可复用 PixiJS 扩展/包的 starter。
- 实时模板列表维护在 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(如果自带)。
- 脚手架到已有目录:mkdir my-game; cd my-game; npm create pixi.js@latest . -- --template bundler-vite;如果存在非空且冲突的文件,CLI 会拒绝运行,除非确认提示。
- TypeScript 设置:PixiJS 支持 WebGPU,其类型声明依赖 WebGPU 类型;这些类型来源取决于 TypeScript 版本。
- TypeScript 5:没有内置 WebGPU 类型,PixiJS 会为你添加 @webgpu/types;无需额外设置。
- TypeScript 6 和 7:WebGPU 类型内置在 "dom" library 中,但某些发布缺少部分类型,例如 GPUTextureUsage;使用 @types/web(完整集合)替代 "dom";如果 types 中有 @webgpu/types,要删除它,因为它与内置类型冲突。
- 安装 @types/web:npm install --save-dev @types/web。
- tsconfig 设置:{"compilerOptions":{"lib":["esnext"],"types":["@types/web"]}}。
- npm run dev 启动后,模板会打开空白或 bunny-sprite 场景。通常进展:阅读 pixijs-application,理解模板入口点如何构造 new Application() 并调用 await app.init(...),app.stage / app.renderer / app.canvas 如何关联,以及 ResizePlugin 和 TickerPlugin 的默认行为。
- 阅读 pixijs-core-concepts,了解渲染器和渲染循环的心智模型。
- 在添加第一个非平凡场景之前,阅读 pixijs-scene-core-concepts,提前了解 container-vs-leaf 规则。
- 准备加载真实美术时,通过 pixijs-assets 加载纹理、字体和 bundles,模板预期你把它们放到 public/ 或 src/assets/。
- 修复 npm 7+ 缺少 -- 分隔符:错误写法 npm create pixi.js@latest my-game --template bundler-vite;正确写法 npm create pixi.js@latest my-game -- --template bundler-vite;否则 CLI 忽略 --template 并回到交互提示。
- 修复旧 Node 版本:PixiJS 要求 Node 18+ 或 20+;framework-react、creation-web 等模板期待更新 Node;如果包管理器给出 engines 警告,先升级 Node 再重跑 CLI。
- 修复 Vite 生产构建中的顶层 await:Vite <=6.0.6 时,模块顶层 await app.init() 在 dev 可用但生产构建失败;改用 async IIFE 包裹: (async () => { const app = new Application(); await app.init({ resizeTo: window }); document.body.appendChild(app.canvas); })(); 升级 Vite 超过 6.0.6 也可解决,但 IIFE 模式在所有版本安全并匹配 PixiJS quick-start。
- 修复 TypeScript 6/7 中 types 仍保留 @webgpu/types:不要写 {"compilerOptions":{"types":["@webgpu/types"]}};应移除 "@webgpu/types" 条目并保留其他条目。TypeScript 6 和 7 在内置 "dom" library 中声明 WebGPU 类型,保留 @webgpu/types 会重复声明;当 skipLibCheck: false 时产生大量冲突声明错误。只应在 TypeScript 5 保留,且 PixiJS 会为你加载。
- 修复 TypeScript 6 或 7 中 Cannot find name 'GPUTextureUsage':截至 TypeScript 6.0.3 和 7.0.2,内置 "dom" library 没有 WebGPU flag 常量(GPUBufferUsage、GPUColorWrite、GPUMapMode、GPUShaderStage、GPUTextureUsage),原始 WebGPU 代码使用它们会报 TS2552;安装 @types/web 0.0.352 或更高,去掉 lib 中的 "dom",并在 types 中加入 "@types/web" 与现有条目并列。
- 修复 moduleResolution: "node" 破坏子路径导入:不要设置 {"compilerOptions":{"moduleResolution":"node"}};正确设置 {"compilerOptions":{"module":"esnext","moduleResolution":"bundler"}}。"node"(也叫 "node10")会忽略 PixiJS package.json 的 exports 字段,导致 import 'pixi.js/advanced-blend-modes' 等子路径导入无法解析;TypeScript 6 对它们报 TS2882 并弃用该设置(TS5107),TypeScript 7 移除它(TS5108);使用 bundler 时用 "bundler",否则用 "nodenext"。
适用边界 · 注意事项
- 已有现成项目、打包器或框架时,不要用 CLI 模板;直接运行 npm install pixi.js 即可。
- 不打算使用 PixiJS v8、create-pixi CLI,或无法/不愿升级到 Node 18+ 或 20+ 时,不适用。