rtaro-ui是基于taro开发的第三方组件库,可以在taro脚手架可以直接使用,在React脚手架里使用需要修改配置。
公司自研脚手架gem-mine
示例详见gitlab(2019-09-18更新),具体使用步骤如下:
引入相关依赖包
"dependencies": {"rtaro-ui": "^1.4.22","@rtarojs/react-adapter": "^1.3.20"}
在文件babel.config.js增加按需加载配置
['import',{libraryName: 'rtaro-ui',style: name => {return name.replace('h5', 'style')},// style:false,// 样式按需暂时不支持变量自定义主题,可以人工引入每个组件的样式来做按需customName: function(name) {return `rtaro-ui/dist/h5/components/${name.replace('at-','')}`}}]
在gem-mine.config中修改webpack配置
const { proxyConfig } = require('./src/config/request/proxy')const { setChainWebpack, getMainFields } = require('@rtarojs/react-adapter')module.exports = {hardSource: true,bundleAnalyzer: false,/*** 本地开发时,需要代理转发的请求*/proxyConfig,chainWebpack(config) {setChainWebpack(config)},configureWebpack: {// normal webpack configresolve: {mainFields: getMainFields()}}}
社区常用脚手架
示例详见gitlab(2019-09-18更新),具体使用步骤如下:
引入相关依赖包
"devDependencies": {"babel-plugin-import": "^1.12.0","customize-cra": "^0.4.1","node-sass": "^4.12.0","react-app-rewired": "^2.1.3","react-scripts": "^3.0.1"},"dependencies": {"@rtarojs/react-adapter": "^1.3.20","create-react-class": "^15.6.3","prop-types": "^15.7.2","rtaro-ui": "^1.4.22",}
新增babel.config.js
module.exports = {presets: ['@babel/preset-react',['@babel/preset-env',{targets: {ie: '9'},useBuiltIns: 'entry',corejs: 3,modules: 'cjs'}]],plugins: ['@babel/plugin-transform-runtime','@babel/plugin-syntax-dynamic-import',['@babel/plugin-proposal-decorators', { legacy: true }],['@babel/plugin-proposal-class-properties', { loose: true }]]}
新增config-overrides.js修改webpack配置
const path = require('path')const {override,fixBabelImports,addWebpackAlias,addWebpackResolve,addPostcssPlugins} = require('customize-cra')const { getPostcssPlugins, getBabelRules, getMainFields } = require('@rtarojs/react-adapter')const addBabelRules = rule => config => {if (!config.module) {config.module = {}}config.module.rules.push(rule)return config}module.exports = override(addWebpackResolve({ mainFields: getMainFields() }),addBabelRules(getBabelRules()),addPostcssPlugins(getPostcssPlugins()),fixBabelImports('rtaro-ui', {style: name => {return `${name.replace('h5', 'style')}.scss`},customName: function(name) {return `rtaro-ui/dist/h5/components/${name.replace('at-', '')}`}}))
