수색…
간단한 설정
폴더 설정
이 예제는 코드가 src/
있고 출력이 out/
에 들어갈 것으로 가정합니다. 이와 같이 폴더 구조는 다음과 유사해야합니다.
example/
|-- src/
| |-- index.js
| `-- ...
|-- out/
`-- package.json
패키지 설정
설정 npm 환경을 가정 할 때, 먼저 React 코드를 es5 호환 코드로 바꾸기 위해 babel을 설정해야합니다.
$npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react
위의 명령은 npack에게 webpack과 함께 사용할 기본 babel 라이브러리와 로더 모듈을 설치하도록 지시합니다. 또한 JSX 및 es6 모듈 코드를 이해하기 위해 es6 및 반응식 사전 설정을 설치합니다. (사전 설정에 대한 자세한 내용은 Babel 사전 설정에서 확인할 수 있습니다.)
$npm i -D webpack
이 명령은 webpack을 개발 종속성으로 설치합니다. ( i 는 설치의 줄임말이고 -D 는 --save-dev의 줄임말입니다)
또한 추가 webpack 패키지 (추가 로더 또는 webpack-dev-server 확장자)를 설치하려는 경우,
마지막으로 실제 반응 코드가 필요합니다.
$npm i -D react react-dom
웹팩 설정
의존성 설정을 통해 webpack.config.js 파일을 통해 webpack에게 무엇을 할 것인지 알려줄 것입니다.
간단한 webpack.config.js :
var path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'out'),
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /(node_modules)/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
이 파일은 webpack에게 index.js 파일 (src /에 있다고 가정)로 시작하여 out
디렉토리의 단일 bundle.js 파일로 변환하도록 지시합니다.
module
블록은 webpack에게 정규 표현식에 대해 발생한 모든 파일을 테스트하도록 지시하고 일치하면 지정된 로더를 호출합니다. (이 경우 babel-loader
) 또한 exclude
regex는 webpack에 node_modules
폴더의 모든 모듈에 대해이 특수 로더를 무시하도록 알려주기 때문에 추출 프로세스의 속도를 높이는 데 도움이됩니다. 마지막으로, query
옵션은 babel에 전달할 매개 변수를 webpack에 알려주고 이전에 설치 한 사전 설정을 전달하는 데 사용됩니다.
설정 테스트
이제 남아있는 것은 src/index.js
파일을 만들고 애플리케이션을 포장하는 것입니다.
src / index.js :
'use strict'
import React from 'react'
import { render } from 'react-dom'
const App = () => {
return <h1>Hello world!</h1>
}
render(
<App />,
document. getElementById('app')
)
이 파일은 일반적으로 간단한 <h1>Hello world!</h1>
헤더를 'app'이라는 id로 html 태그에 렌더링하지만, 현재로서는 코드를 한 번만 번역하면 충분합니다.
$./node_modules/.bin/webpack .
로컬로 설치된 webpack 버전을 실행합니다 (-g를 사용하여 webpack을 전역으로 설치 한 경우 $webpack
사용하십시오)
이렇게하면 내부에 transpilation 된 코드가있는 out/bundle.js
파일이 만들어지고 예제가 끝납니다.
webpack-dev-server 사용
설정
webpack을 사용하는 간단한 프로젝트를 설정 한 후, $npm i -g webpack-dev-server
를 발급하고 $npm i -g webpack-dev-server
하면 더 빨리 개발할 수 있도록 개발 http 서버가 설치됩니다.
webpack.config.js 수정
var path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'out'),
publicPath: '/public/',
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /(node_modules)/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}
]
},
devServer: {
contentBase: path.resolve(__dirname, 'public'),
hot: true
}
};
수정 내용은
output.publicPath
우리 번들을 제공 할 경로를 설정합니다 (자세한 내용은 Webpack 구성 파일 참조).devServer
-
contentBase
정적 파일을 제공하는 기본 경로 (예 :index.html
) -
hot
은 webpack-dev-server가 디스크의 파일에 변경이있을 때 뜨거운 재로드로 설정합니다.
-
마지막으로 우리는 간단한 index.html을 사용하여 앱을 테스트해야합니다.
index.html :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>React Sandbox</title>
</head>
<body>
<div id="app" />
<script src="public/bundle.js"></script>
</body>
</html>
이 설정을 실행하면 $webpack-dev-server
가 포트 8080에서 로컬 http 서버를 시작하고 연결시 <h1>Hello world!</h1>
포함 된 페이지를 렌더링해야합니다.