TypeScript 및 Webpack을 사용하여 처음부터 React 프로젝트 만들기
23278 단어 reacttypescriptjavascriptwebpack
전체 소스 코드는 여기에서 찾을 수 있습니다: https://github.com/alexadam/project-templates/tree/master/projects/react-app
설정
전제 조건:
프로젝트의 폴더를 만듭니다.
mkdir react-app
cd react-app
yarn을 사용하여 기본 package.json 파일을 생성합니다.
yarn init -y
React, TypeScript 및 Webpack 설치:
yarn add react react-dom
yarn add --dev @types/react \
@types/react-dom \
awesome-typescript-loader \
css-loader \
html-webpack-plugin \
node-sass \
sass-loader \
style-loader \
typescript \
webpack \
webpack-cli \
webpack-dev-server
package.json 파일에 빌드, 개발 및 정리 스크립트를 추가합니다.
....
},
"scripts": {
"clean": "rm -rf dist/*",
"build": "webpack",
"dev": "webpack serve"
}
다음을 사용하여 tsconfig.json 파일을 생성하여 TypeScript를 구성합니다.
{
"compilerOptions": {
"incremental": true,
"target": "es5",
"module": "commonjs",
"lib": ["dom", "dom.iterable", "es6"],
"allowJs": true,
"jsx": "react",
"sourceMap": true,
"outDir": "./dist/",
"rootDir": ".",
"removeComments": true,
"strict": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"experimentalDecorators": true
},
"include": [
"client"
],
"exclude": [
"node_modules",
"build",
"dist"
]
}
Webpack을 구성하려면 다음을 포함하는 webpack.config.js 파일을 만드십시오.
const path = require("path");
const app_dir = __dirname + '/client';
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HTMLWebpackPluginConfig = new HtmlWebpackPlugin({
template: app_dir + '/index.html',
filename: 'index.html',
inject: 'body'
});
const config = {
mode: 'development',
entry: app_dir + '/app.tsx',
output: {
path: __dirname + '/dist',
filename: 'app.js',
publicPath: '/'
},
module: {
rules: [{
test: /\.s?css$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}, {
test: /\.tsx?$/,
loader: "awesome-typescript-loader",
exclude: /(node_modules|bower_components)/
},
{
test: /\.(woff|woff2|ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
exclude: [/node_modules/],
loader: "file-loader"
},
{
test: /\.(jpe?g|png|gif|svg)$/i,
exclude: [/node_modules/],
loader: "file-loader"
},
{
test: /\.(pdf)$/i,
exclude: [/node_modules/],
loader: "file-loader",
options: {
name: '[name].[ext]',
},
},
]
},
plugins: [HTMLWebpackPluginConfig],
resolve: {
extensions: [".ts", ".tsx", ".js", ".jsx"]
},
optimization: {
removeAvailableModules: false,
removeEmptyChunks: false,
splitChunks: false,
},
devServer: {
port: 8080,
// open: true,
hot: true,
inline: true,
historyApiFallback: true,
},
};
module.exports = config;
예제 앱
프로젝트 폴더에 client라는 폴더를 만듭니다.
mkdir client
cd client
number.tsx 파일에서 간단한 React 구성 요소를 만듭니다.
import React, {useState} from 'react';
interface INumberProps {
initValue: number
}
const Numbers = (props: INumberProps) => {
const [value, setValue] = useState(props.initValue)
const onIncrement = () => {
setValue(value + 1)
}
const onDecrement = () => {
setValue(value - 1)
}
return (
<div>
Number is {value}
<div>
<button onClick={onIncrement}>+</button>
<button onClick={onDecrement}>-</button>
</div>
</div>
)
}
export default Numbers
app.tsx 파일에서 기본 React 구성 요소(진입점)를 만듭니다.
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import Numbers from './numbers';
ReactDOM.render(
<Numbers initValue={42} />,
document.getElementById('app') as HTMLElement
);
다음으로 index.html을 추가합니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>React TypeScript</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
그런 다음 브라우저에서 실행
yarn dev
하고 엽니다http://localhost:8080/
.이 프로젝트를 템플릿으로 사용
설정 단계를 쉘 스크립트로 저장할 수 있습니다.
#!/bin/sh
rm -rf node_modules
rm package.json
yarn init --yes
yarn add react react-dom
yarn add --dev @types/react \
@types/react-dom \
awesome-typescript-loader \
css-loader \
html-webpack-plugin \
node-sass \
sass-loader \
style-loader \
typescript \
webpack \
webpack-cli \
webpack-dev-server
# Remove the last line
sed -i.bak '$ d' package.json && rm package.json.bak
# append the scripts commads
cat <<EOT >> package.json
,"scripts": {
"clean": "rm -rf dist/*",
"build": "webpack",
"dev": "webpack serve"
}
}
node-modules 폴더를 삭제하고 새 프로젝트를 시작하려는 경우 react-app의 내용을 새 위치에 복사할 수 있습니다.
mkdir new-project
cd new-project
# copy the react-app folder content to the new project
rsync -rtv /path/to/../react-app/ .
./init.sh
Reference
이 문제에 관하여(TypeScript 및 Webpack을 사용하여 처음부터 React 프로젝트 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alexadam/create-a-react-project-from-scratch-with-typescript-and-webpack-2l18텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)