diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5760be5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..0215b61 --- /dev/null +++ b/.env.test @@ -0,0 +1 @@ +# TARO_APP_ID="测试环境下的小程序appid" \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..7809e66 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,7 @@ +{ + "extends": ["taro/react"], + "rules": { + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..331e8f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +dist/ +deploy_versions/ +.temp/ +.rn_temp/ +node_modules/ +.DS_Store +.swc \ No newline at end of file diff --git a/__tests__/index.test.js b/__tests__/index.test.js new file mode 100644 index 0000000..d5d22c3 --- /dev/null +++ b/__tests__/index.test.js @@ -0,0 +1,12 @@ +import TestUtils from '@tarojs/test-utils-react' + +describe('Testing', () => { + + test('Test', async () => { + const testUtils = new TestUtils() + await testUtils.createApp() + await testUtils.PageLifecycle.onShow('pages/index/index') + expect(testUtils.html()).toMatchSnapshot() + }) + +}) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..d54a01b --- /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: false + }] + ] +} diff --git a/config/dev.js b/config/dev.js new file mode 100644 index 0000000..0c20377 --- /dev/null +++ b/config/dev.js @@ -0,0 +1,8 @@ +export default { + logger: { + quiet: false, + stats: true + }, + mini: {}, + h5: {} +} diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000..5773dc2 --- /dev/null +++ b/config/index.js @@ -0,0 +1,98 @@ +import { defineConfig } from '@tarojs/cli' + +import devConfig from './dev' +import prodConfig from './prod' + +// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数 +export default defineConfig(async (merge, { command, mode }) => { + const baseConfig = { + projectName: 'yidooplanet', + date: '2024-3-19', + designWidth: 750, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 375: 2, + 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', + output: { + filename: 'js/[name].[hash:8].js', + chunkFilename: 'js/[name].[chunkhash:8].js' + }, + miniCssExtractPluginOption: { + ignoreOrder: true, + filename: 'css/[name].[hash].css', + chunkFilename: 'css/[name].[chunkhash].css' + }, + 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 + } + } + } + } + if (process.env.NODE_ENV === 'development') { + // 本地开发构建配置(不混淆压缩) + return merge({}, baseConfig, devConfig) + } + // 生产构建配置(默认开启压缩混淆等) + return merge({}, baseConfig, prodConfig) +}) diff --git a/config/prod.js b/config/prod.js new file mode 100644 index 0000000..2ae91b8 --- /dev/null +++ b/config/prod.js @@ -0,0 +1,31 @@ +export default { + 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/env.development b/env.development new file mode 100644 index 0000000..a3f1b48 --- /dev/null +++ b/env.development @@ -0,0 +1,2 @@ +# 配置文档参考 https://taro-docs.jd.com/docs/next/env-mode-config +# TARO_APP_ID="开发环境下的小程序appid" \ No newline at end of file diff --git a/env.production b/env.production new file mode 100644 index 0000000..be6f45e --- /dev/null +++ b/env.production @@ -0,0 +1 @@ +# TARO_APP_ID="生产环境下的小程序appid" \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..2e07396 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,6 @@ +const defineJestConfig = require('@tarojs/test-utils-react/dist/jest.js').default + +module.exports = defineJestConfig({ + testEnvironment: 'jsdom', + testMatch: ['/__tests__/**/*.(spec|test).[jt]s?(x)'] +}) diff --git a/package.json b/package.json new file mode 100644 index 0000000..717b630 --- /dev/null +++ b/package.json @@ -0,0 +1,86 @@ +{ + "name": "yidooplanet", + "version": "1.0.0", + "private": true, + "description": "yidooplanet", + "templateInfo": { + "name": "default", + "typescript": false, + "css": "Sass", + "framework": "React" + }, + "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", + "build:harmony-hybrid": "taro build --type harmony-hybrid", + "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", + "dev:harmony-hybrid": "npm run build:harmony-hybrid -- --watch", + "test": "jest" + }, + "browserslist": [ + "last 3 versions", + "Android >= 4.1", + "ios >= 8" + ], + "author": "", + "dependencies": { + "@babel/runtime": "^7.21.5", + "@tarojs/components": "3.6.25", + "@tarojs/helper": "3.6.25", + "@tarojs/plugin-platform-weapp": "3.6.25", + "@tarojs/plugin-platform-alipay": "3.6.25", + "@tarojs/plugin-platform-tt": "3.6.25", + "@tarojs/plugin-platform-swan": "3.6.25", + "@tarojs/plugin-platform-jd": "3.6.25", + "@tarojs/plugin-platform-qq": "3.6.25", + "@tarojs/plugin-platform-h5": "3.6.25", + "@tarojs/plugin-platform-harmony-hybrid": "3.6.25", + "@tarojs/runtime": "3.6.25", + "@tarojs/shared": "3.6.25", + "@tarojs/taro": "3.6.25", + "@tarojs/plugin-framework-react": "3.6.25", + "@tarojs/react": "3.6.25", + "react-dom": "^18.0.0", + "react": "^18.0.0" + }, + "devDependencies": { + "@babel/core": "^7.8.0", + "@tarojs/cli": "3.6.25", + "@types/webpack-env": "^1.13.6", + "@tarojs/test-utils-react": "^0.1.1", + "@types/react": "^18.0.0", + "webpack": "5.78.0", + "@tarojs/taro-loader": "3.6.25", + "@tarojs/webpack5-runner": "3.6.25", + "babel-preset-taro": "3.6.25", + "eslint-config-taro": "3.6.25", + "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", + "postcss": "^8.4.18", + "ts-node": "^10.9.1", + "@types/node": "^18.15.11", + "@types/jest": "^29.3.1", + "jest": "^29.3.1", + "jest-environment-jsdom": "^29.5.0" + } +} diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..a3dce8b --- /dev/null +++ b/project.config.json @@ -0,0 +1,15 @@ +{ + "miniprogramRoot": "./dist", + "projectname": "yidooplanet", + "description": "yidooplanet", + "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..6ffc8d1 --- /dev/null +++ b/project.tt.json @@ -0,0 +1,9 @@ +{ + "miniprogramRoot": "./", + "projectname": "yidooplanet", + "appid": "testAppId", + "setting": { + "es6": false, + "minified": false + } +} diff --git a/src/app.config.js b/src/app.config.js new file mode 100644 index 0000000..15c683b --- /dev/null +++ b/src/app.config.js @@ -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.js b/src/app.js new file mode 100644 index 0000000..891fde4 --- /dev/null +++ b/src/app.js @@ -0,0 +1,15 @@ + +import { useLaunch } from '@tarojs/taro' +import './app.scss' + +function App({ children }) { + + useLaunch(() => { + console.log('App launched.') + }) + + // children 是将要会渲染的页面 + return children +} + +export default App diff --git a/src/app.scss b/src/app.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..2557041 --- /dev/null +++ b/src/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + yidooplanet + + + +
+ + diff --git a/src/pages/index/index.config.js b/src/pages/index/index.config.js new file mode 100644 index 0000000..12abc5f --- /dev/null +++ b/src/pages/index/index.config.js @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '首页' +}) diff --git a/src/pages/index/index.jsx b/src/pages/index/index.jsx new file mode 100644 index 0000000..c9027c7 --- /dev/null +++ b/src/pages/index/index.jsx @@ -0,0 +1,16 @@ +import { View, Text } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './index.scss' + +export default function Index() { + + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + Hello world! + + ) +} diff --git a/src/pages/index/index.scss b/src/pages/index/index.scss new file mode 100644 index 0000000..e69de29