Skip to content

项目结构

顶层目录

项目的顶层目录用于组织公共静态资源、源码、项目配置等目录或文件。

名称描述
public/公共的静态资源,这些资源会被直接拷贝到构建产物目录下
src/源码目录
.web-extend/WebExtend 临时目录,存放构建信息
.env公共环境变量文件
.env.local本地的公共环境变量文件,需要添加到 .gitignore 中
.env.development环境变量文件,在 process.env.NODE_ENV 为 'development' 时有效
.env.production环境变量文件,在 process.env.NODE_ENV 为 'production' 时有效
.env.development.local本地环境变量文件,在 process.env.NODE_ENV 为 'development' 时有效,需要添加到 .gitignore 中
.env.production.local本地环境变量文件,在 process.env.NODE_ENV 为 'production' 时有效,需要添加到 .gitignore 中
.gitignoreGit 的忽略文件
package.json项目的依赖和脚本
rsbuild.config.tsRsbuild 配置文件
web-ext.config.jsweb-ext 配置文件
tsconfig.jsonTypeScript 配置文件

源码目录

项目的源码目录用于组织入口、组件、库等目录或文件。

名称描述
assets/静态资源目录,存放 icons 等文件,这些资源会被构建工具处理
backgroundbackground 入口
contentcontents单个或多个 content 入口
popuppopup 入口
optionsoptions 入口
sidepanelsidepanel 入口
devtoolsdevtools 入口
sandboxsandboxes单个或多个 sandbox 入口
newtabnewtab 入口
bookmarksbookmarks 入口
historyhistory 入口

Manifest 映射

WebExtend 中无需手动维护 manifest.json 文件,它会基于文件系统自动生成 manifest.json 中的配置项,对应的映射关系如下。

Manifest 字段映射路径
manifest_version默认为 3
namepackage.jsondisplayNamename 字段
versionpackage.jsonversion 字段
descriptionpackage.jsondescription 字段
authorpackage.jsonauthor 字段
homepage_urlpackage.jsonhomepage 字段
iconsaction.default_iconsrc/assets/icon-[size].png
action.default_popupsrc/popup.jssrc/popup/index.js
background.service_workersrc/background.jssrc/background/index.js
content_scriptssrc/content.jssrc/contents/*.js
options_ui.pagesrc/options.jssrc/options/index.js
devtools_pagesrc/devtools.jssrc/devtools/index.js
sandbox.pagessrc/sandbox.jssrc/sandboxes/*.js
chrome_url_overrides.newtabsrc/newtab.jssrc/newtab/index.js
chrome_url_overrides.bookmarkssrc/bookmarks.jssrc/bookmarks/index.js
chrome_url_overrides.historysrc/history.jssrc/history/index.js
side_panel.default_pathsrc/sidepanel.jssrc/sidepanel/index.js
_localespublic/_locales/*
web_accessible_resourcespublic/*

自定义配置

WebExtend 支持自定义项目中的源码目录、输出目录等信息。

js
import { defineConfig } from '@rsbuild/core';
import { pluginWebExtend } from '@web-extend/rsbuild-plugin';

export default defineConfig({
  plugins: [
    pluginWebExtend({
      srcDir: "src", // default: "src"
      outDir: "dist", // default: "dist/[target]-[mode]"
      manifest: {...}, // default: {}
      target: "firefox-mv2", // default: "chrome-mv3"
    }),
  ],
});

基于 MIT 许可发布