From cd4c0b0eb3a6565c2d9f46c4872835de01bb004d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Matczuk?= Date: Wed, 28 Oct 2020 22:17:58 +0100 Subject: [PATCH 1/2] updated dependencies --- .gitignore | 2 +- app.json | 3 +- package.json | 164 +++++++++++++++++++------------------- webpack.config.js | 4 +- webpack/webpack.common.js | 20 ++--- 5 files changed, 96 insertions(+), 97 deletions(-) diff --git a/.gitignore b/.gitignore index d1bf06e..5a6a5e2 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* yarn.lock* -package-lock.json +_package-lock.json /build/bundle.js /build/index.html /build* diff --git a/app.json b/app.json index 78fc455..c72d3e3 100644 --- a/app.json +++ b/app.json @@ -3,7 +3,6 @@ "name": "reactNativeCodeResue", "slug": "codeResue", "privacy": "public", - "sdkVersion": "30.0.0", "platforms": [ "ios", "android" @@ -27,4 +26,4 @@ } }, "name": "reactNativeCodeResue" -} \ No newline at end of file +} diff --git a/package.json b/package.json index 93aec88..3e66bf6 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Resuing code for react and react native", "main": "node_modules/expo/AppEntry.js", "scripts": { - "start": "cross-env NODE_ENV=development webpack-dev-server --open", + "start": "cross-env NODE_ENV=development webpack serve --mode development --env development", "build": "cross-env NODE_ENV=production webpack", "format": "prettier --write 'packages/**/*.js'", "test": "jest --watchAll --coverage", @@ -46,92 +46,92 @@ "license": "ISC", "private": false, "engines": { - "node": ">=8", - "npm": ">=3" + "node": ">=12", + "npm": ">=6" }, "dependencies": { - "@babel/plugin-transform-react-constant-elements": "7.2.0", - "@babel/plugin-transform-react-inline-elements": "7.2.0", - "babel-plugin-transform-react-pure-class-to-function": "1.0.1", - "babel-plugin-transform-react-remove-prop-types": "0.4.24", - "lodash": "4.17.11", - "prop-types": "15.7.2", - "react": "16.8.6", - "react-dom": "16.8.6", - "react-hot-loader": "4.8.4", - "react-native": "^0.55.4", - "react-redux": "^5.1.0", - "redux": "^4.0.1" + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/plugin-transform-react-inline-elements": "^7.12.1", + "babel-plugin-transform-react-pure-class-to-function": "^1.0.1", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "lodash": "^4.17.20", + "prop-types": "^15.7.2", + "react": "16.13.1", + "react-dom": "16.13.1", + "react-hot-loader": "^4.13.0", + "react-native": "0.63.3", + "react-redux": "^7.2.2", + "redux": "^4.0.5", + "expo": "^39.0.0" }, "resolutions": { - "babel-core": "7.0.0-bridge.0" + "babel-core": "^7.0.0-bridge.0" }, "devDependencies": { - "@babel/core": "7.4.3", - "@babel/plugin-proposal-class-properties": "7.4.0", - "@babel/plugin-proposal-decorators": "7.4.0", - "@babel/plugin-proposal-export-namespace-from": "7.2.0", - "@babel/plugin-proposal-function-sent": "7.2.0", - "@babel/plugin-proposal-json-strings": "7.2.0", - "@babel/plugin-proposal-numeric-separator": "7.2.0", - "@babel/plugin-proposal-throw-expressions": "7.2.0", - "@babel/plugin-syntax-dynamic-import": "7.2.0", - "@babel/plugin-syntax-import-meta": "7.2.0", - "@babel/plugin-transform-runtime": "7.4.3", - "@babel/polyfill": "7.4.3", - "@babel/preset-env": "7.4.3", - "@babel/preset-react": "7.0.0", - "@babel/register": "7.4.0", - "@babel/runtime": "7.4.3", - "babel-core": "7.0.0-bridge.0", - "babel-eslint": "10.0.1", - "babel-jest": "24.7.1", - "babel-loader": "8.0.5", - "babel-plugin-lodash": "3.3.4", - "babel-preset-expo": "^5.0.0", - "babel-preset-react-optimize": "1.0.1", - "browserslist": "4.5.5", - "clean-webpack-plugin": "2.0.1", - "connect-history-api-fallback": "1.6.0", - "cross-env": "5.2.0", - "css-loader": "2.1.1", - "enzyme": "3.9.0", - "enzyme-adapter-react-16": "1.12.1", - "eslint": "5.16.0", - "eslint-config-airbnb": "17.1.0", - "eslint-config-prettier": "4.1.0", - "eslint-loader": "2.1.2", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-jest": "22.4.1", - "eslint-plugin-jsx-a11y": "6.2.1", - "eslint-plugin-prettier": "3.0.1", - "eslint-plugin-react": "7.12.4", - "eslint-watch": "5.0.1", - "expo": "^32.0.0", - "file-loader": "3.0.1", - "html-webpack-plugin": "3.2.0", - "husky": "1.3.1", - "identity-obj-proxy": "3.0.0", - "jest": "24.7.1", - "jest-css-modules-transform": "2.1.1", - "jest-enzyme": "7.0.2", - "jest-fetch-mock": "2.1.2", - "jsdom": "14.1.0", - "koa-connect": "2.0.1", - "lint-staged": "8.1.5", - "mini-css-extract-plugin": "0.6.0", - "node-sass": "4.11.0", - "npm-check-updates": "3.1.8", - "optimize-css-assets-webpack-plugin": "5.0.1", - "prettier": "1.17.0", - "pretty-quick": "1.10.0", - "sass-loader": "7.1.0", - "script-ext-html-webpack-plugin": "2.1.3", - "style-loader": "0.23.1", - "terser-webpack-plugin": "1.2.3", - "webpack": "4.30.0", - "webpack-cli": "3.3.0", - "webpack-dev-server": "3.3.1", - "webpack-merge": "4.2.1" + "@babel/core": "^7.12.3", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-function-sent": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-throw-expressions": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.12.1", + "@babel/polyfill": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.1", + "@babel/register": "^7.12.1", + "@babel/runtime": "^7.12.1", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.1", + "babel-loader": "^8.1.0", + "babel-plugin-lodash": "^3.3.4", + "babel-preset-expo": "^8.3.0", + "babel-preset-react-optimize": "^1.0.1", + "browserslist": "^4.14.5", + "clean-webpack-plugin": "^3.0.0", + "connect-history-api-fallback": "^1.6.0", + "cross-env": "^7.0.2", + "css-loader": "^5.0.0", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.5", + "eslint": "^7.12.1", + "eslint-config-airbnb": "^18.2.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-react": "^7.21.5", + "eslint-watch": "^7.0.0", + "eslint-webpack-plugin": "^2.1.0", + "expo": "39.0.3", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^4.5.0", + "husky": "^4.3.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^26.6.1", + "jest-css-modules-transform": "^4.0.1", + "jest-enzyme": "^7.1.2", + "jest-fetch-mock": "^3.0.3", + "jsdom": "^16.4.0", + "koa-connect": "^2.1.0", + "lint-staged": "^10.5.0", + "mini-css-extract-plugin": "^1.2.1", + "node-sass": "^4.14.1", + "npm-check-updates": "^9.2.3", + "optimize-css-assets-webpack-plugin": "^5.0.4", + "prettier": "^2.1.2", + "pretty-quick": "^3.1.0", + "sass-loader": "^10.0.4", + "script-ext-html-webpack-plugin": "^2.1.5", + "style-loader": "^2.0.0", + "terser-webpack-plugin": "^5.0.3", + "webpack": "^5.3.0", + "webpack-cli": "^4.1.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^5.2.0" } } diff --git a/webpack.config.js b/webpack.config.js index 32a1047..7068cda 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,4 @@ -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const common = require('./webpack/webpack.common'); const envs = { @@ -8,4 +8,4 @@ const envs = { /* eslint-disable global-require,import/no-dynamic-require */ const env = envs[process.env.NODE_ENV || 'development']; const envConfig = require(`./webpack/webpack.${env}.js`); -module.exports = webpackMerge(common, envConfig); +module.exports = merge(common, envConfig); diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index 0121c5a..8361a9b 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -73,16 +73,16 @@ module.exports = { }, ], }, - serve: { - add: app => { - app.use(convert(history())); - }, - content: commonPaths.entryPath, - dev: { - publicPath: commonPaths.outputPath, - }, - open: true, - }, + // serve: { + // add: app => { + // app.use(convert(history())); + // }, + // content: commonPaths.entryPath, + // dev: { + // publicPath: commonPaths.outputPath, + // }, + // open: true, + // }, resolve: { modules: ['src', 'node_modules'], extensions: ['*', '.js', '.jsx', '.css', '.scss'], From 5e5a44cd86181229f4139eb510007e730799cb29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Matczuk?= Date: Wed, 28 Oct 2020 23:13:40 +0100 Subject: [PATCH 2/2] fix minior issues fix build process --- app.json | 6 ++- .../mainContent/mainBodyComponent.js | 6 +-- assets/icon.png | Bin 2976 -> 1155 bytes .../thanosCaptionConatinerComponent.js | 4 +- .../mainContent/mainBodyComponent.jsx | 6 +-- webpack/webpack.prod.js | 39 +++++++++--------- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/app.json b/app.json index c72d3e3..ebd29dc 100644 --- a/app.json +++ b/app.json @@ -22,7 +22,11 @@ "**/*" ], "ios": { - "supportsTablet": true + "supportsTablet": true, + "bundleIdentifier": "com.mmwebx.codeResue" + }, + "android": { + "package": "com.mmwebx.codeResue" } }, "name": "reactNativeCodeResue" diff --git a/app/components/mainContent/mainBodyComponent.js b/app/components/mainContent/mainBodyComponent.js index 084636f..fd4707e 100644 --- a/app/components/mainContent/mainBodyComponent.js +++ b/app/components/mainContent/mainBodyComponent.js @@ -4,7 +4,7 @@ import React from 'react'; import { connect } from "react-redux"; import { StyleSheet, Text, View } from 'react-native'; -import { ThanosCaptionConatiner } from '../../../platform/thanosCaption/thanosCaptionConatinerComponent.js'; +import { ThanosCaptionContainer } from '../../../platform/thanosCaption/thanosCaptionConatinerComponent.js'; import HitButtonContainer from "../../../platform/thanosHitButton/hitButtonContainerComponent.js"; const styles = StyleSheet.create({ @@ -34,7 +34,7 @@ class MainComponent extends React.Component { render() { return( - + Then what are you waiting for? Go ahead and hit him @@ -57,4 +57,4 @@ const mapDispatchToProps = (dispatch) => { } }}; -export default connect(mapStateToProps,mapDispatchToProps)(MainComponent); \ No newline at end of file +export default connect(mapStateToProps,mapDispatchToProps)(MainComponent); diff --git a/assets/icon.png b/assets/icon.png index 3f5bbc0ca199c3181d1f889011c7602e2daf51b9..036b0d5e5472ba317dc8899a0499e7ab31a92027 100644 GIT binary patch literal 1155 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 diff --git a/platform/thanosCaption/thanosCaptionConatinerComponent.js b/platform/thanosCaption/thanosCaptionConatinerComponent.js index e6a144e..4504fed 100644 --- a/platform/thanosCaption/thanosCaptionConatinerComponent.js +++ b/platform/thanosCaption/thanosCaptionConatinerComponent.js @@ -1,9 +1,9 @@ import React from 'react'; import { ThanosCaptionView } from './thanosCaptionView'; -export const ThanosCaptionConatiner = () => { +export const ThanosCaptionContainer = () => { const data = "Does this guy irritates you?" return( ) -} \ No newline at end of file +} diff --git a/web/components/mainContent/mainBodyComponent.jsx b/web/components/mainContent/mainBodyComponent.jsx index 36ecaf0..8ffb4cc 100644 --- a/web/components/mainContent/mainBodyComponent.jsx +++ b/web/components/mainContent/mainBodyComponent.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { connect } from "react-redux"; -import { ThanosCaptionConatiner } from '../../../platform/thanosCaption/thanosCaptionConatinerComponent'; +import { ThanosCaptionContainer } from '../../../platform/thanosCaption/thanosCaptionConatinerComponent'; import HitButtonContainer from "../../../platform/thanosHitButton/hitButtonContainerComponent"; import "./mainComponent.css" @@ -12,7 +12,7 @@ class MainComponent extends React.Component { render() { return(
- +

Then what are you waiting for? Go ahead and hit him

@@ -28,4 +28,4 @@ const mapStateToProps = function(state){ count: state.hitButtonReducer.count }}; -export default connect(mapStateToProps,{})(MainComponent); \ No newline at end of file +export default connect(mapStateToProps,{})(MainComponent); diff --git a/webpack/webpack.prod.js b/webpack/webpack.prod.js index 6dfaddd..ab5d25f 100644 --- a/webpack/webpack.prod.js +++ b/webpack/webpack.prod.js @@ -1,12 +1,14 @@ -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const CleanWebpackPlugin = require('clean-webpack-plugin'); -const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); -const TerserPlugin = require('terser-webpack-plugin'); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); -const commonPaths = require('./paths'); +const commonPaths = require("./paths"); + +const isDevelopment = process.env.NODE_ENV !== "production"; module.exports = { - mode: 'production', + mode: "production", output: { filename: `${commonPaths.jsFolder}/[name].[hash].js`, path: commonPaths.outputPath, @@ -18,9 +20,6 @@ module.exports = { // Use multi-process parallel running to improve the build speed // Default number of concurrent runs: os.cpus().length - 1 parallel: true, - // Enable file caching - cache: true, - sourceMap: true, }), new OptimizeCSSAssetsPlugin(), ], @@ -31,13 +30,13 @@ module.exports = { cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, - name: 'vendors', - chunks: 'initial', + name: "vendors", + chunks: "initial", }, async: { test: /[\\/]node_modules[\\/]/, - name: 'async', - chunks: 'async', + name: "async", + chunks: "async", minChunks: 4, }, }, @@ -54,15 +53,15 @@ module.exports = { use: [ MiniCssExtractPlugin.loader, { - loader: 'css-loader', + loader: "css-loader", options: { - sourceMap: false, - modules: true, - camelCase: true, - localIdentName: '[local]___[hash:base64:5]', + modules: { + localIdentName: "[name]__[local]___[hash:base64:5]", + }, + sourceMap: isDevelopment, }, }, - 'sass-loader', + "sass-loader", ], }, ], @@ -74,5 +73,5 @@ module.exports = { chunkFilename: `${commonPaths.cssFolder}/[name].css`, }), ], - devtool: 'source-map', + devtool: "source-map", };