npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cra-template-jbt-pc

v1.0.2

Published

jbt react pc template

Downloads

1

Readme

cra-template-jbt-pc

金贝塔 react pc 项目模板脚手架

说明

React 的项目脚手架 create-react-app 被广泛使用,但是 CRA 使用 react-scripts 的定制性并不好,大多情况下需要通过 eject 来修改配置,造成后面 react-scripts 有功能更新的时候不能同步升级。

本脚手架采用 react-app-rewiredcustomize-cra 对 react 项目进行配置修改,不需要 eject 后续可以享受 react-scripts 的功能升级,同时包括必要的生态整合,代理配置,EsLint 代码检查配置,prettier 代码格式化,git 提交前的检查,支持 Less 和 Sass,集成包分析工具等。

安装

// 从 npm
npx create-react-app my-app --template jbt-pc

安装完之后,由于 create-react-app 默认装最新版的 react,而 react 17 和 icestore 版本限制冲突,需要手动安装 icestore

npm install --save @ice/store

安装后如果要启用 git pre-commit 代码检查需要配置相应钩子,只用执行一次即可:

npm run prepare

启用 pre-commit 检查后,如果遇到紧急清空需要绕过检查 git commit --no-verify

配置说明

config-overrides.js

react-app-rewired 的配置文件在根目录的 config-overrides.js 其中主要做了以下配置更改

  • 增加 webpack 别名 ~ 对应 src 目录
  • 增加 antd 的按需引入
  • 开发时增加 source map 方便 debug,生产包去掉 source map 减少不必要请求
  • 添加 less-loader 支持 less 编译
  • 添加 webpack 插件 progressbar 方便看编译耗时
  • 添加 Dev Server 基本配置
  • 去掉 TerserPlugin 在打生产包的时候会生成 LICENSE.txt 功能

如果需要比较复杂的 Dev Server 功能,可以在 src 目录下增加 setupProxy.js 文件,使用 http-proxy-middleware 来进行配置,详见文档 https://create-react-app.dev/docs/proxying-api-requests-in-development/#configuring-the-proxy-manually

.env

一些环境变量的配置文件,优先级低于命令中的环境变量配置。CRA 相关的环境变量见文档 https://create-react-app.dev/docs/advanced-configuration/

其中 Webpack Dev Server 的 HOST 和 PORT 配置以及生产包不生产 source map 的配置都在这个文件

.prettierrc

prettier 的配置文件,相关配置项见文档:https://prettier.io/docs/en/options.html,配置方法:https://prettier.io/docs/en/configuration.html

tsconfig.json

TypeScript 的配置文件,编译选项相关配置见 https://www.tslang.cn/docs/handbook/compiler-options.html, 其中如果要增加模块对应的别名,应该在 tsconfig.paths.json 文件中修改,不要直接在 tsconfig.json 中增加。

.eslintrc

EsLint 的配置文件,相关规则参考 https://cn.eslint.org/docs/rules/

.husky

husky 主要是用来做提交前的代码检查的,在 pre-commit 时会去执行 npx lint-staged 命令,执行 package.jsonlint-staged 相关的处理。

生态整合

统一不同技术栈,主要是整合 Router,状态管理,样式初始化,API 请求工具。

React Router

集成 React Router,官方文档 https://reactrouter.com/web/guides/quick-start

状态管理 -- icestore

轻量化的基于 Hooks 的状态管理。需要注意 icestore 内部是通过调用 immer 来实现可变状态的。 Immer 只支持对普通对象和数组的变化检测,所以像字符串或数字这样的类型需要返回一个新值。

const count = {
  state: 0,
  reducers: {
    add(state) {
      state += 1;
      return state;
    },
  },
}

文档: https://github.com/react-boilerplate/react-boilerplate-cra-template

样式初始化 -- normalize.css

使用 normalize.css 对 html 元素自带样式进行重置,使用时在 index.tsx 文件使用其它样式之前引入即可。

import 'normalize.css'
import '~/styles/index.less'

API 请求工具 -- Axios

通用 Ajax 请求工具,文档见 https://github.com/axios/axios

包分析工具

默认集成 webpack-bundle-analyzersource-map-explorer 作为包分析工具。

使用 webpack-bundle-analyzer:

npm run analyze

会自动生成 report.html 可以查看每个包的依赖内容,以及大小。

使用 source-map-explorer:

npm run analyze-sourcemap

生成相应的 source map 浏览页面。

注意: source-map-explorer 命令会在生产包生成 source map,不要直接发生产。

通用工具

待补充