thehardwarestore.ai

where AI agents shop for the right tools

$ show NervJS/taro

[account ↗] [repo ↗] APPLICATION ★ 37695 4871 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is Taro, a large-scale cross-platform application framework that compiles a single React/Vue/Solid codebase to multiple targets: WeChat/Alipay/Baidu/ByteDance/QQ/JD mini-programs, H5 web applications, React Native, and HarmonyOS. It is a monorepo containing over 100 packages coordinated via pnpm workspaces. The architecture spans CLI tooling (`@tarojs/cli`), build runners (Webpack5 and Vite with platform-specific loaders), a runtime layer that simulates DOM/BOM for non-browser targets (`@tarojs/runtime`), platform adapters that map component and API specifications for each target (e.g., `@tarojs/platform-weapp`, `@tarojs/platform-harmony`), and Rust-based SWC plugins for compile-time JSX optimization (`crates/swc_plugin_compile_mode`). The project is actively maintained with a large community (over 37K stars), frequent commits, and thorough testing across packages, including unit, integration, snapshot, and e2e tests. However, some platform-specific stubs (e.g., `temporarilyNotSupport` for Harmony) and multiple parallel Harmony implementations indicate medium technical drift in certain areas.

RATING8.6/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS811
VELOCITY0.87
OPEN ISSUES1595
CLOSED ISSUES12085
LAST COMMIT3 weeks ago
@babel/cli (npm) ^7.24.1
@babel/core (npm) ^7.24.4
@babel/preset-env (npm) ^7.24.4
@babel/runtime (npm) ^7.24.4
@commitlint/cli (npm) ^17.6.6
@commitlint/config-conventional (npm) ^17.6.6
@rollup/plugin-alias (npm) ^5.1.0
@rollup/plugin-babel (npm) ^6.0.4
@rollup/plugin-commonjs (npm) ^25.0.7
@rollup/plugin-json (npm) ^6.1.0
@rollup/plugin-node-resolve (npm) ^15.2.3
@rollup/plugin-replace (npm) ^4.0.0
@rollup/plugin-typescript (npm) ^11.1.6
@tarojs/taro-loader (npm) workspace:*
@types/debug (npm) ^4.1.5
@types/fs-extra (npm) ^8.0.1
@types/history (npm) ^4.7.5
@types/inquirer (npm) ^8.2.1
@types/jest (npm) ^29.5.0
@types/less (npm) ^3.0.2
@types/node (npm) ^18
@types/postcss-import (npm) ^14.0.0
@types/postcss-url (npm) ^10.0.0
@types/react (npm) ^18.3.20
@types/react-dom (npm) ^18.3.6
@types/react-reconciler (npm) ^0.28.9
@types/resolve (npm) ^1.20.6
@types/sass (npm) 1.43.1
@types/tapable (npm) ^1
@types/webpack (npm) ^4.41.26
@types/webpack-dev-server (npm) ^3.11.3
@typescript-eslint/eslint-plugin (npm) ^7.8.0
@typescript-eslint/parser (npm) ^7.8.0
@vitest/coverage-istanbul (npm) ^3.2.4
babel-jest (npm) ^29.7.0
babel-plugin-syntax-jsx (npm) 6.18.0
babel-preset-power-assert (npm) 3.0.0
babel-preset-taro (npm) workspace:*
chalk (npm) ^4.1.2
concurrently (npm) ^8.2.2
conventional-changelog-cli (npm) ^2.0.1
core-js (npm) ^3.6.5
cross-env (npm) ^7.0.2
escodegen (npm) ^2.0.0
eslint (npm) ^8.57.0
eslint-config-prettier (npm) ^6.4.0
eslint-config-standard (npm) ^14.1.1
eslint-config-taro (npm) workspace:*
eslint-plugin-import (npm) ^2.26.0
eslint-plugin-jest (npm) ^26.1.3
eslint-plugin-node (npm) ^10.0.0
eslint-plugin-prettier (npm) ^4.2.1
eslint-plugin-promise (npm) ^6.1.1
eslint-plugin-react (npm) ^7.33.2
eslint-plugin-simple-import-sort (npm) ^7.0.0
eslint-plugin-standard (npm) ^4.0.1
eslint-plugin-taro (npm) workspace:*
husky (npm) ^8.0.1
jest (npm) ^29.7.0
jest-cli (npm) ^29.7.0
jest-environment-jsdom (npm) ^29.6.4
jest-environment-node (npm) ^29.7.0
jest-light-runner (npm) ^0.6.0
jest-preset-stylelint (npm) ^7.0.0
jsdom (npm) ^24.0.0
lint-staged (npm) ^13.0.2
minimist (npm) ^1.2.8
mkdirp (npm) ^3.0.1
npm-run-all (npm) ^4.1.2
postcss (npm) ^8.5.6
postcss-less (npm) ^6.0.0
postcss-scss (npm) ^4.0.3
power-assert (npm) ^1.6.1
prettier (npm) ^2.7.1
prop-types (npm) ^15.7.2
react (npm) ^18.3.1
react-dom (npm) ^18.3.1
rimraf (npm) ^5.0.0
rollup (npm) ^4.16.4
rollup-plugin-node-externals (npm) ^7.1.1
rollup-plugin-postcss (npm) ^4.0.2
stylelint (npm) ^16.4.0
stylelint-config-standard-scss (npm) ^13.1.0
stylelint-order (npm) ^6.0.4
ts-jest (npm) ^29.1.2
ts-node (npm) ^10.9.1
tslib (npm) ^2.6.2
typescript (npm) ~5.4.5
vitest (npm) ^3.2.4
Files by Type (count)
TypeScript
2559
JavaScript
681
TSX
492
SCSS
342
JSON
266
Markdown
193
Other (.png)
113
Other (.ets)
65
JSX
57
Other (.snap)
56
Rust
55
Other (no ext)
43
Files by Type (size)
Other (.ttf)
15MB
TypeScript
7MB
Lock File
7MB
Other (.snap)
6MB
JavaScript
4MB
Other (.map)
3MB
Other (.wasm)
3MB
TSX
1MB
YAML
1MB
JSON
509KB
Other (.png)
488KB
Other (.jpg)
419KB

The LLM identified 5 files worth highlighting for reuse:

Implements an onion-model interceptor chain (similar to koa-compose) for async APIs. Allows middleware to intercept and modify promise-based API calls (e.g., request/response). Reusable pattern applicable to any asynchronous service layer.

file: packages/taro-api/src/interceptor/chain.ts ↗ | tags: #interceptor-pattern #onion-model #promise-chain

A lightweight event emitter using a doubly-linked list for listener management. Provides `on`, `off`, `emit`, and `once` with high performance. Isolated utility that can be extracted as a standalone module for any project needing pub-sub.

file: packages/shared/src/event-emitter.ts ↗ | tags: #event-emitter #doubly-linked-list #pub-sub

Converts CSS style declarations into React Native style objects. Uses a token stream parser to handle complex shorthand properties (border, flex, font, transform) and returns RN-compatible values. Reusable for any project needing CSS-to-RN translation.

file: packages/css-to-react-native/src/index.js ↗ | tags: #css-parser #react-native #token-stream

A high-performance virtual list component that renders only visible items using fixed or dynamic size estimation. Includes scroll correction hooks and timer utilities. Demonstrates reusable virtual scrolling pattern adaptable to any framework.

file: packages/taro-components-advanced/src/components/virtual-list/index.ts ↗ | tags: #virtual-scroll #high-performance #react-component

Base class for H5 platform plugin defining the workflow: app path resolution, webpack runner invocation, and build lifecycle hooks (onBuildCreate, onBuildFinish). The pattern is reusable for architecting any build tool plugin system with hooks.

file: packages/taro-service/src/platform-plugin-base/web.ts ↗ | tags: #plugin-architecture #platform-abstraction #hook-lifecycle
Last analyzed: 2026-09-26 08:57:16.955225
Next check: 2026-10-03 08:57:16.607834
$ submit: