Mencipta pustaka React moden memerlukan pertimbangan yang teliti terhadap alatan binaan, pengalaman pembangunan dan pengoptimuman output. Panduan ini akan membimbing anda membina pemula perpustakaan React profesional menggunakan TypeScript, SWC dan Rollup—gabungan berkuasa yang menawarkan prestasi unggul, kebolehpercayaan dan pengalaman pembangun.
Pemeriksaan Jenis Statik: Tangkap ralat semasa pembangunan dan bukannya masa jalan
Sokongan IDE Dipertingkat: Autolengkap, pemfaktoran semula dan navigasi kod yang lebih baik
Kod Pendokumentasian Kendiri: Jenis berfungsi sebagai dokumentasi hidup
Penyelenggaraan yang Diperbaiki: Menjadikan pangkalan kod yang besar lebih mudah diurus
Komuniti Berkembang: Takrif jenis yang luas untuk perpustakaan popular
mkdir react-library cd react-library npm init -y # Create essential directories mkdir src
# Core dependencies npm install react react-dom --save-peer # Development dependencies npm install --save-dev typescript @types/react @types/react-dom \ @swc/core @swc/helpers \ rollup @rollup/plugin-swc @rollup/plugin-node-resolve \ @rollup/plugin-commonjs rollup-plugin-peer-deps-external
Buat tsconfig.json:
{ "compilerOptions": { "target": "ES2018", "module": "ESNext", "lib": ["DOM", "DOM.Iterable", "ESNext"], "declaration": true, "declarationDir": "dist/types", "emitDeclarationOnly": true, "jsx": "react-jsx", "strict": true, "moduleResolution": "node", "allowSyntheticDefaultImports": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "isolatedModules": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true }, "include": ["src"], "exclude": ["node_modules", "dist"] }
Buat rollup.config.js:
import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { swc, defineRollupSwcOption } from '@rollup/plugin-swc'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; import terser from '@rollup/plugin-terser'; const packageJson = require('./package.json'); const swcConfig = defineRollupSwcOption({ jsc: { parser: { syntax: 'typescript', tsx: true, }, transform: { react: { runtime: 'automatic', development: false, refresh: false, }, }, target: 'es2018', }, minify: false, }); export default [ // ESM build { input: 'src/index.tsx', output: [ { file: packageJson.module, format: 'esm', sourcemap: true, }, ], plugins: [ peerDepsExternal(), resolve({ extensions: ['.ts', '.tsx', '.js', '.jsx'], }), commonjs(), swc(swcConfig), terser(), ], external: ['react', 'react-dom'], }, // CommonJS build { input: 'src/index.tsx', output: [ { file: packageJson.main, format: 'cjs', sourcemap: true, exports: 'auto', }, ], plugins: [ peerDepsExternal(), resolve({ extensions: ['.ts', '.tsx', '.js', '.jsx'], }), commonjs(), swc(swcConfig), terser(), ], external: ['react', 'react-dom'], }, ];
Kemas kini pakej anda.json:
{ "name": "your-library-name", "version": "1.0.0", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "types": "dist/types/index.d.ts", "files": [ "dist" ], "sideEffects": false, "scripts": { "build": "rollup -c", "types": "tsc", "prepare": "npm run types && npm run build", "lint": "eslint ." }, "peerDependencies": { "react": ">=17.0.0 <19.0.0", "react-dom": ">=17.0.0 <19.0.0" }, }
Buat src/index.tsx:
mkdir react-library cd react-library npm init -y # Create essential directories mkdir src
Sediakan apl vite untuk memberikan contoh dan menguji perubahan kod dalam repo itu sendiri. Ini juga boleh dilakukan dengan buku cerita.
# Core dependencies npm install react react-dom --save-peer # Development dependencies npm install --save-dev typescript @types/react @types/react-dom \ @swc/core @swc/helpers \ rollup @rollup/plugin-swc @rollup/plugin-node-resolve \ @rollup/plugin-commonjs rollup-plugin-peer-deps-external
tambah pakej anda dalam bahagian dependencies pada contoh package.json
{ "compilerOptions": { "target": "ES2018", "module": "ESNext", "lib": ["DOM", "DOM.Iterable", "ESNext"], "declaration": true, "declarationDir": "dist/types", "emitDeclarationOnly": true, "jsx": "react-jsx", "strict": true, "moduleResolution": "node", "allowSyntheticDefaultImports": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "isolatedModules": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true }, "include": ["src"], "exclude": ["node_modules", "dist"] }
Import komponen anda dan ujinya dalam projek contoh.
Pustaka React anda kini sedia untuk diterbitkan! ?
Jika anda ingin menyelam dengan persediaan sedia untuk digunakan, lihat templat permulaan lengkap di sini: https://github.com/Abhirup-99/react-library-starter-template. Templat ini merangkumi semua yang telah kami bincangkan dan direka bentuk untuk membantu anda memulakan pembangunan perpustakaan React anda dengan persediaan yang minimum.
Selamat mengekod!
Atas ialah kandungan terperinci Membina Perpustakaan Reaksi Moden: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!