基本零配置的 Webextension 脚手架,用 React TypeScript Sass 开发浏览器扩展

Create React Typescript Sass Webextension

Build Status Dependencies DevDependencies

Greenkeeper badge Commitizen friendly Conventional Commits Standard - JavaScript Style Guide

灵活强大的零配置 Webextension 开发脚手架。html

  • 支持 React, TypeScript 和 Sass
  • Jest 测试,内含 sinon-chrome
  • 提供虚拟浏览器扩展环境,方便开发 UI
  • 自动生成 Webpack 入口
  • 支持任意浏览器导出,能够用不一样的 Manifest

安装

<pre>
git clone git@github.com:crimx/create-react-typescript-sass-webextension.git 你的仓库名
cd 你的仓库名
git remote set-url git@github.com:你的用户名/你的仓库名.git
yarn install
</pre>react

使用

大多数状况下你只须要处理 src 下的文件:git

  • 这个模板自带一个典型扩展的三个主要部分: backgroud, contentpopup 。不须要的话直接删除就行,Webpack 入口会自动生成。
  • 若是须要输出更多的页面或脚本,只需在 src 中新建目录,目录名会被用做入口名。目录中应包含一个 index.(js|jsx|ts|tsx) 文件。若是须要输出页面的话再添加个 index.html 做为模板。能够参考 popup 页面。
  • background, components, assetsmanifest 是预留名称。github

    • background 用于生成背景脚本,用其它的名字做入口的话虚拟扩展环境不会加载。
    • components 放共用的组件。
    • assets 放静态文件。
    • manifest 用于生成 manifest.jsonweb

      • 不要删除 common.manifest.json。若是你不但愿合并设置,把它的内容改为空 JSON {}
      • 支持任意浏览器,添加相应文件便可,如 edge.manifest.json
  • 若是须要在 src 目录下添加目录,却又不但愿其生成入口,用 _ 开头的目录名。

命令

构建

  • yarn start 加载虚拟浏览器扩展环境,调整页面样式时有用。ajax

    • 因扩展的安全政策,在真实的扩展环境中开发会很不方便。框架的 devtool 用不了,热加载和自动刷新也很麻烦…… 因此我写了个模拟环境,主要实现了 runtime message 和 storage 两大块,跟真实行为基本一致。若是须要更多,在 config/fake-env/webextension-page.js 中添加。
    • 默认加载 popup 页面。 若是要换其它入口,好比 options 页面,能够运行 yarn start --main=options
    • background 脚本会默认加载 (若是存在的话)。
    • 修改 config/fake-env/fake-ajax 拦截 ajax 请求。
  • yarn devyarn start 同样。
  • yarn test 模块测试。chrome

    • yarn test --coverage 查看 coverage 结果。
    • 内含 sinon-chrome ,TypeScript 类型已调好,直接写代码就行。
  • yarn build 完整构建项目。typescript

    • 分别输出 Chrome 和 Firefox 结果到 build 目录中。
    • 要得到更新后的版本号,先 yarn release 再构建。
  • yarn devbuild 不压缩代码快速构建项目,检测文件变化。json

    • 默认 chrome ,对于其它浏览器,如 Firefox ,运行 yarn devbuild --firefox
    • 浏览器对应的 manifest 文件必须存在 manifest 下,如 opera.manifest.json
  • 在命令后添加 --debug 能够开启 process.env.DEBUG_MODE

Git

  • yarn commit 使用 conventional 风格 commit 代码。 VSCode 用户还能够用 vscode-commitizen 扩展。
  • yarn release 自动计算增长版本号并更新 CHANGELOG 日志。

高级配置

自动更新依赖

能够设置 travis CIgreenkeeper 来自动更新依赖。浏览器

若是须要一并更新 lockfile ,使用 greenkeeper-lockfile

Commit 风格

本模板使用 conventional 风格。如需更换,参考 commitlintcommitizen 配置。

代码风格

本模板使用 TypeScript 版本的 Standard JavaScript 代码风格,能够在 tslint.json 中修改。

更多配置

参考 create-reate-app ,大部分支持。

相关文章
相关标签/搜索