From fa3b76de1fbdfc1b5026610af436eff7bf5650e8 Mon Sep 17 00:00:00 2001 From: eric Date: Sat, 12 Nov 2022 14:46:03 +0200 Subject: [PATCH] feat: init --- babel.config.js | 10 ++++ config/dev.js | 9 ++++ config/index.js | 82 +++++++++++++++++++++++++++++++++ config/prod.js | 37 +++++++++++++++ package.json | 77 +++++++++++++++++++++++++++++++ project.config.json | 15 ++++++ project.tt.json | 9 ++++ src/app.config.ts | 11 +++++ src/app.less | 0 src/app.ts | 18 ++++++++ src/index.html | 17 +++++++ src/pages/index/index.config.ts | 3 ++ src/pages/index/index.less | 0 src/pages/index/index.tsx | 24 ++++++++++ tsconfig.json | 27 +++++++++++ types/global.d.ts | 19 ++++++++ 16 files changed, 358 insertions(+) create mode 100644 babel.config.js create mode 100644 config/dev.js create mode 100644 config/index.js create mode 100644 config/prod.js create mode 100644 package.json create mode 100644 project.config.json create mode 100644 project.tt.json create mode 100644 src/app.config.ts create mode 100644 src/app.less create mode 100644 src/app.ts create mode 100644 src/index.html create mode 100644 src/pages/index/index.config.ts create mode 100644 src/pages/index/index.less create mode 100644 src/pages/index/index.tsx create mode 100644 tsconfig.json create mode 100644 types/global.d.ts diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..f3acb81 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,10 @@ +// babel-preset-taro 更多选项和默认值: +// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md +module.exports = { + presets: [ + ['taro', { + framework: 'react', + ts: true + }] + ] +} diff --git a/config/dev.js b/config/dev.js new file mode 100644 index 0000000..6821bf8 --- /dev/null +++ b/config/dev.js @@ -0,0 +1,9 @@ +module.exports = { + env: { + NODE_ENV: '"development"' + }, + defineConstants: { + }, + mini: {}, + h5: {} +} diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000..6a9b209 --- /dev/null +++ b/config/index.js @@ -0,0 +1,82 @@ +const config = { + projectName: 'myApp', + date: '2022-11-12', + designWidth: 750, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2 + }, + sourceRoot: 'src', + outputRoot: 'dist', + plugins: [], + defineConstants: { + }, + copy: { + patterns: [ + ], + options: { + } + }, + framework: 'react', + compiler: 'webpack5', + cache: { + enable: false // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache + }, + mini: { + postcss: { + pxtransform: { + enable: true, + config: { + + } + }, + url: { + enable: true, + config: { + limit: 1024 // 设定转换尺寸上限 + } + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + } + }, + h5: { + publicPath: '/', + staticDirectory: 'static', + postcss: { + autoprefixer: { + enable: true, + config: { + } + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + } + }, + rn: { + appName: 'taroDemo', + postcss: { + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + } + } + } +} + +module.exports = function (merge) { + if (process.env.NODE_ENV === 'development') { + return merge({}, config, require('./dev')) + } + return merge({}, config, require('./prod')) +} diff --git a/config/prod.js b/config/prod.js new file mode 100644 index 0000000..e148666 --- /dev/null +++ b/config/prod.js @@ -0,0 +1,37 @@ +module.exports = { + env: { + NODE_ENV: '"production"' + }, + defineConstants: { + }, + mini: {}, + h5: { + /** + * WebpackChain 插件配置 + * @docs https://github.com/neutrinojs/webpack-chain + */ + // webpackChain (chain) { + // /** + // * 如果 h5 端编译后体积过大,可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。 + // * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer + // */ + // chain.plugin('analyzer') + // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) + + // /** + // * 如果 h5 端首屏加载时间过长,可以使用 prerender-spa-plugin 插件预加载首页。 + // * @docs https://github.com/chrisvfritz/prerender-spa-plugin + // */ + // const path = require('path') + // const Prerender = require('prerender-spa-plugin') + // const staticDir = path.join(__dirname, '..', 'dist') + // chain + // .plugin('prerender') + // .use(new Prerender({ + // staticDir, + // routes: [ '/pages/index/index' ], + // postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') }) + // })) + // } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b68f113 --- /dev/null +++ b/package.json @@ -0,0 +1,77 @@ +{ + "name": "myApp", + "version": "1.0.0", + "private": true, + "description": "city", + "templateInfo": { + "name": "default", + "typescript": true, + "css": "less" + }, + "scripts": { + "build:weapp": "taro build --type weapp", + "build:swan": "taro build --type swan", + "build:alipay": "taro build --type alipay", + "build:tt": "taro build --type tt", + "build:h5": "taro build --type h5", + "build:rn": "taro build --type rn", + "build:qq": "taro build --type qq", + "build:jd": "taro build --type jd", + "build:quickapp": "taro build --type quickapp", + "dev:weapp": "npm run build:weapp -- --watch", + "dev:swan": "npm run build:swan -- --watch", + "dev:alipay": "npm run build:alipay -- --watch", + "dev:tt": "npm run build:tt -- --watch", + "dev:h5": "npm run build:h5 -- --watch", + "dev:rn": "npm run build:rn -- --watch", + "dev:qq": "npm run build:qq -- --watch", + "dev:jd": "npm run build:jd -- --watch", + "dev:quickapp": "npm run build:quickapp -- --watch" + }, + "browserslist": [ + "last 3 versions", + "Android >= 4.1", + "ios >= 8" + ], + "author": "", + "dependencies": { + "@babel/runtime": "^7.7.7", + "@tarojs/components": "3.5.7", + "@tarojs/helper": "3.5.7", + "@tarojs/plugin-platform-weapp": "3.5.7", + "@tarojs/plugin-platform-alipay": "3.5.7", + "@tarojs/plugin-platform-tt": "3.5.7", + "@tarojs/plugin-platform-swan": "3.5.7", + "@tarojs/plugin-platform-jd": "3.5.7", + "@tarojs/plugin-platform-qq": "3.5.7", + "@tarojs/router": "3.5.7", + "@tarojs/runtime": "3.5.7", + "@tarojs/shared": "3.5.7", + "@tarojs/taro": "3.5.7", + "@tarojs/taro-h5": "3.5.7", + "@tarojs/plugin-framework-react": "3.5.7", + "@tarojs/react": "3.5.7", + "react-dom": "^18.0.0", + "react": "^18.0.0" + }, + "devDependencies": { + "@babel/core": "^7.8.0", + "@tarojs/cli": "3.5.7", + "@types/webpack-env": "^1.13.6", + "@types/react": "^18.0.0", + "webpack": "5.69.0", + "@tarojs/webpack5-runner": "3.5.7", + "babel-preset-taro": "3.5.7", + "eslint-config-taro": "3.5.7", + "eslint": "^8.12.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", + "react-refresh": "^0.11.0", + "eslint-plugin-react": "^7.8.2", + "eslint-plugin-import": "^2.12.0", + "eslint-plugin-react-hooks": "^4.2.0", + "stylelint": "^14.4.0", + "@typescript-eslint/parser": "^5.20.0", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "typescript": "^4.1.0" + } +} diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..87c1be3 --- /dev/null +++ b/project.config.json @@ -0,0 +1,15 @@ +{ + "miniprogramRoot": "./dist", + "projectname": "myApp", + "description": "city", + "appid": "touristappid", + "setting": { + "urlCheck": true, + "es6": false, + "enhance": false, + "compileHotReLoad": false, + "postcss": false, + "minified": false + }, + "compileType": "miniprogram" +} diff --git a/project.tt.json b/project.tt.json new file mode 100644 index 0000000..ad3a036 --- /dev/null +++ b/project.tt.json @@ -0,0 +1,9 @@ +{ + "miniprogramRoot": "./", + "projectname": "myApp", + "appid": "testAppId", + "setting": { + "es6": false, + "minified": false + } +} diff --git a/src/app.config.ts b/src/app.config.ts new file mode 100644 index 0000000..15c683b --- /dev/null +++ b/src/app.config.ts @@ -0,0 +1,11 @@ +export default defineAppConfig({ + pages: [ + 'pages/index/index' + ], + window: { + backgroundTextStyle: 'light', + navigationBarBackgroundColor: '#fff', + navigationBarTitleText: 'WeChat', + navigationBarTextStyle: 'black' + } +}) diff --git a/src/app.less b/src/app.less new file mode 100644 index 0000000..e69de29 diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000..709bc23 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,18 @@ +import { Component, PropsWithChildren } from 'react' +import './app.less' + +class App extends Component { + + componentDidMount () {} + + componentDidShow () {} + + componentDidHide () {} + + render () { + // this.props.children 是将要会渲染的页面 + return this.props.children + } +} + +export default App diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..899a8b8 --- /dev/null +++ b/src/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + myApp + + + +
+ + diff --git a/src/pages/index/index.config.ts b/src/pages/index/index.config.ts new file mode 100644 index 0000000..12abc5f --- /dev/null +++ b/src/pages/index/index.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '首页' +}) diff --git a/src/pages/index/index.less b/src/pages/index/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx new file mode 100644 index 0000000..6fb1b95 --- /dev/null +++ b/src/pages/index/index.tsx @@ -0,0 +1,24 @@ +import { Component, PropsWithChildren } from 'react' +import { View, Text } from '@tarojs/components' +import './index.less' + +export default class Index extends Component { + + componentWillMount () { } + + componentDidMount () { } + + componentWillUnmount () { } + + componentDidShow () { } + + componentDidHide () { } + + render () { + return ( + + Hello world! + + ) + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0fc6d47 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es2017", + "module": "commonjs", + "removeComments": false, + "preserveConstEnums": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "noImplicitAny": false, + "allowSyntheticDefaultImports": true, + "outDir": "lib", + "noUnusedLocals": true, + "noUnusedParameters": true, + "strictNullChecks": true, + "sourceMap": true, + "baseUrl": ".", + "rootDir": ".", + "jsx": "react-jsx", + "allowJs": true, + "resolveJsonModule": true, + "typeRoots": [ + "node_modules/@types" + ] + }, + "include": ["./src", "./types"], + "compileOnSave": false +} diff --git a/types/global.d.ts b/types/global.d.ts new file mode 100644 index 0000000..36087b0 --- /dev/null +++ b/types/global.d.ts @@ -0,0 +1,19 @@ +/// + +declare module '*.png'; +declare module '*.gif'; +declare module '*.jpg'; +declare module '*.jpeg'; +declare module '*.svg'; +declare module '*.css'; +declare module '*.less'; +declare module '*.scss'; +declare module '*.sass'; +declare module '*.styl'; + +declare namespace NodeJS { + interface ProcessEnv { + TARO_ENV: 'weapp' | 'swan' | 'alipay' | 'h5' | 'rn' | 'tt' | 'quickapp' | 'qq' | 'jd' + } +} +