Finished creating project without using create-react-app, i.e. following 5.5.1, 5.5.2
parent
f027246188
commit
1418bb58ed
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"presets": ["@babel/preset-env", "@babel/preset-react"]
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,react
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,react
|
||||||
|
|
||||||
|
### react ###
|
||||||
|
.DS_*
|
||||||
|
*.log
|
||||||
|
logs
|
||||||
|
**/*.backup.*
|
||||||
|
**/*.back.*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
*.sublime*
|
||||||
|
|
||||||
|
psd
|
||||||
|
thumb
|
||||||
|
sketch
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
# Support for Project snippet scope
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,react
|
||||||
|
|
||||||
|
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"prettier.tabWidth": 2}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
object-assign
|
||||||
|
(c) Sindre Sorhus
|
||||||
|
@license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @license React v0.20.2
|
||||||
|
* scheduler.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @license React v17.0.2
|
||||||
|
* react-dom.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @license React v17.0.2
|
||||||
|
* react.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>React Recipes App</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script src="bundle.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
||||||
|
* This devtool is neither made for production nor for readable output files.
|
||||||
|
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
||||||
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||||||
|
* or disable the default devtool with "devtool: false".
|
||||||
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||||||
|
*/
|
||||||
|
/******/ (() => { // webpackBootstrap
|
||||||
|
/******/ var __webpack_modules__ = ({
|
||||||
|
|
||||||
|
/***/ "./src/index.js":
|
||||||
|
/*!**********************!*\
|
||||||
|
!*** ./src/index.js ***!
|
||||||
|
\**********************/
|
||||||
|
/***/ (() => {
|
||||||
|
|
||||||
|
eval("throw new Error(\"Module parse failed: Unexpected token (6:7)\\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\\n| import data from \\\"./data/recipes.json\\\";\\n| \\n> render(<Menu recipes={data} />, document.getElementById(\\\"root\\\"));\");\n\n//# sourceURL=webpack://recipes-app/./src/index.js?");
|
||||||
|
|
||||||
|
/***/ })
|
||||||
|
|
||||||
|
/******/ });
|
||||||
|
/************************************************************************/
|
||||||
|
/******/
|
||||||
|
/******/ // startup
|
||||||
|
/******/ // Load entry module and return exports
|
||||||
|
/******/ // This entry module doesn't tell about it's top-level declarations so it can't be inlined
|
||||||
|
/******/ var __webpack_exports__ = {};
|
||||||
|
/******/ __webpack_modules__["./src/index.js"]();
|
||||||
|
/******/
|
||||||
|
/******/ })()
|
||||||
|
;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"name": "recipes-app",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"build": "webpack --mode production"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"react": "^17.0.2",
|
||||||
|
"react-dom": "^17.0.2",
|
||||||
|
"serve": "^13.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.16.7",
|
||||||
|
"@babel/preset-env": "^7.16.8",
|
||||||
|
"@babel/preset-react": "^7.16.7",
|
||||||
|
"babel-loader": "^8.2.3",
|
||||||
|
"webpack": "^5.65.0",
|
||||||
|
"webpack-cli": "^4.9.1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
export default function Ingredient({ amount, measurement, name }) {
|
||||||
|
return (
|
||||||
|
<li>
|
||||||
|
{amount} {measurement} {name}
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
import React from "react";
|
||||||
|
import Ingredient from "./Ingredient";
|
||||||
|
|
||||||
|
export default function IngredientsList({ list }) {
|
||||||
|
return (
|
||||||
|
<ul className="ingredients">
|
||||||
|
{list.map((ingredient, i) => (
|
||||||
|
<Ingredient key={i} {...ingredient} />
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
)
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
export default function Instructions({ title, steps }) {
|
||||||
|
return (
|
||||||
|
<section className='instructions'>
|
||||||
|
<h2>{title}</h2>
|
||||||
|
{steps.map((s, i) => (
|
||||||
|
<p key={i}>{s}</p>
|
||||||
|
))}
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
import React from "react";
|
||||||
|
import Recipe from "./Recipe";
|
||||||
|
|
||||||
|
export default function Menu({ recipe }) {
|
||||||
|
return (
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h1>Delicious Recipes</h1>
|
||||||
|
</header>
|
||||||
|
<div className="recipes">
|
||||||
|
{recipe.map((recipe, i) => (
|
||||||
|
<Recipe key={i} {...recipe} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
)
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import React from "react";
|
||||||
|
import IngredientsList from "./IngredientsList";
|
||||||
|
import Instructions from "./Instructions";
|
||||||
|
|
||||||
|
export default function Recipe({ name, ingredients, steps }) {
|
||||||
|
return (
|
||||||
|
<section id={name.toLowerCase().replace(/ /g, "-")}>
|
||||||
|
<h1>{name}</h1>
|
||||||
|
<IngredientsList list={ingredients} />
|
||||||
|
<IngredientsList title='Cooking Instructions' steps={steps} />
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Baked Salmon",
|
||||||
|
"ingredients": [
|
||||||
|
{ "name": "Salmon", "amount": 1, "measurement": "lb" },
|
||||||
|
{ "name": "Pine Nuts", "amount": 1, "measurement": "cup" },
|
||||||
|
{ "name": "Butter Lettuce", "amount": 2, "measurement": "cups" },
|
||||||
|
{ "name": "Yellow Squash", "amount": 1, "measurement": "med" },
|
||||||
|
{ "name": "Olive Oil", "amount": 0.5, "measurement": "cup" },
|
||||||
|
{ "name": "Garlic", "amount": 3, "measurement": "cloves" }
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
"Preheat the oven to 350 degrees.",
|
||||||
|
"Spread the olive oil around a glass baking dish.",
|
||||||
|
"Add the yellow squash and place in the oven for 30 mins.",
|
||||||
|
"Add the salmon, garlic, and pine nuts to the dish.",
|
||||||
|
"Bake for 15 minutes.",
|
||||||
|
"Remove from oven. Add the lettuce and serve."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fish Tacos",
|
||||||
|
"ingredients": [
|
||||||
|
{ "name": "Whitefish", "amount": 1, "measurement": "lb" },
|
||||||
|
{ "name": "Cheese", "amount": 1, "measurement": "cup" },
|
||||||
|
{ "name": "Iceberg Lettuce", "amount": 2, "measurement": "cups" },
|
||||||
|
{ "name": "Tomatoes", "amount": 2, "measurement": "large" },
|
||||||
|
{ "name": "Tortillas", "amount": 3, "measurement": "med" }
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
"Cook the fish on the grill until cooked through.",
|
||||||
|
"Place the fish on the 3 tortillas.",
|
||||||
|
"Top them with lettuce, tomatoes, and cheese."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,6 @@
|
||||||
|
import React from "react";
|
||||||
|
import { render } from "react-dom";
|
||||||
|
import Menu from "./components/Menu";
|
||||||
|
import data from "./data/recipes.json";
|
||||||
|
|
||||||
|
render(<Menu recipes={data} />, document.getElementById("root"));
|
|
@ -0,0 +1,12 @@
|
||||||
|
var path = require("path");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
entry: "./src/index.js",
|
||||||
|
output: {
|
||||||
|
path: path.join(__dirname, "dist", "assets"),
|
||||||
|
filename: "bundle.js",
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }],
|
||||||
|
},
|
||||||
|
};
|
Loading…
Reference in New Issue