webpack-dev-server는 애플리케이션을 빠르게 개발하는 데 사용할 수 있습니다. 개발 가이드 문서를 통해 시작해 보세요.
이 페이지는 webpack-dev-server(약칭: dev-server)version >= 5.0.0의 동작에 영향을 미치는 옵션에 관해 설명합니다. v4
에서 v5
로의 마이그레이션 가이드는 여기를 참고하세요.
object
이 옵션 세트는 webpack-dev-server에서 선택하며 다양한 방식으로 동작을 변경하는 데 사용할 수 있습니다. 다음은 프로젝트 루트에 있는 public/
디렉터리의 모든 것을 gzip으로 압축하고 제공하는 기본적인 예입니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'public'),
},
compress: true,
port: 9000,
},
};
서버가 시작되면, 해석된 모듈 목록 앞에 메시지가 표시됩니다.
<i> [webpack-dev-server] Project is running at:
<i> [webpack-dev-server] Loopback: http://localhost:9000/
<i> [webpack-dev-server] On Your Network (IPv4): http://197.158.164.104:9000/
<i> [webpack-dev-server] On Your Network (IPv6): http://[fe80::1]:9000/
<i> [webpack-dev-server] Content not from webpack is served from '/path/to/public' directory
이를 통해 서버가 어디에 있고 무엇을 제공하는지에 대한 배경지식을 얻을 수 있습니다.
Node.js API를 통해 dev-server를 사용하는 경우 devServer
의 옵션은 무시됩니다. 대신 다음 옵션을 첫 번째 매개변수로 전달합니다. new WebpackDevServer({...}, compiler)
. Node.js API를 통해 webpack-dev-server를 사용하는 방법의 예는 여기를 참고하세요.
다음과 같이 CLI를 통해 webpack-dev-server를 호출할 수 있습니다.
npx webpack serve
serve
에 대한 CLI 옵션 목록은 여기에서 확인할 수 있습니다.
CLI를 통해 webpack-dev-server
를 실행하는 것이 권장되지만, API를 통해 서버를 시작하도록 선택할 수도 있습니다.
webpack-dev-server
관련 API 문서를 참고하세요.
function
'connect', 'fastify' 등과 같은 사용자 정의 서버 애플리케이션을 사용할 수 있습니다. 사용되는 기본 애플리케이션은 'express'입니다.
webpack.config.js
const connect = require('connect');
module.exports = {
//...
devServer: {
app: () => connect(),
},
};
'auto' | 'all'
[string]
개발 서버에 접근할 수 있는 서비스를 허용목록에 추가할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
allowedHosts: [
'host.com',
'subdomain.host.com',
'subdomain2.host.com',
'host2.com',
],
},
};
Django의 ALLOWED_HOSTS
를 모방하여, .
로 시작하는 값을 하위 도메인 와일드카드로 사용할 수 있습니다. .host.com
은 host.com
, www.host.com
, 및 host.com
의 다른 하위 도메인과 일치합니다.
webpack.config.js
module.exports = {
//...
devServer: {
// 이것은 새 하위 도메인이 개발 서버에 접근해야 하는 경우
// 설정을 업데이트할 필요가 없다는 보너스와 함께
// 첫 번째 예와 동일한 효과를 얻습니다
allowedHosts: ['.host.com', 'host2.com'],
},
};
CLI를 통한 사용법.
npx webpack serve --allowed-hosts .host.com --allowed-hosts host2.com
'all'
로 설정하면 호스트 검사를 무시합니다. 호스트를 확인하지 않는 앱은 DNS 리바인딩 공격에 취약하기 때문에 권장하지 않습니다.
webpack.config.js
module.exports = {
//...
devServer: {
allowedHosts: 'all',
},
};
CLI를 통한 사용법.
npx webpack serve --allowed-hosts all
'auto'
로 설정하면 항상 localhost
, host
, 및 client.webSocketURL.hostname
를 허용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
allowedHosts: 'auto',
},
};
CLI를 통한 사용법.
npx webpack serve --allowed-hosts auto
boolean = false
object
이 옵션은 시작할 때 ZeroConf 네트워크를 통해 서버를 브로드캐스트합니다.
webpack.config.js
module.exports = {
//...
devServer: {
bonjour: true,
},
};
CLI를 통한 사용법.
npx webpack serve --bonjour
비활성화 하는법.
npx webpack serve --no-bonjour
커스텀 옵션을 bonjour에 전달할 수도 있습니다. 예를 들면 아래와 같습니다.
webpack.config.js
module.exports = {
//...
devServer: {
bonjour: {
type: 'http',
protocol: 'udp',
},
},
};
'log' | 'info' | 'warn' | 'error' | 'none' | 'verbose'
브라우저에서 로그 수준을 설정할 수 있습니다. 예를 들면, 다시 로드하기 전, 오류 전 또는 Hot Module Replacement가 활성화된 경우입니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
logging: 'info',
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-logging info
boolean = true
object
컴파일러 오류 또는 경고가 있는 경우 브라우저에 전체 화면 오버레이를 표시합니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
overlay: true,
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-overlay
비활성화 하는법.
npx webpack serve --no-client-overlay
보다 세분화된 제어를 위해 다음 속성을 가진 개체를 제공할 수 있습니다.
속성 | 설명 |
---|---|
errors | 컴파일 오류 |
runtimeErrors | 처리되지 않은 런타임 오류 |
warnings | 컴파일 경고 |
모든 속성은 선택 사항이며 제공되지 않은 경우 기본값은 'true'입니다.
예를 들어 컴파일 경고를 비활성화하려면 다음 설정을 제공할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
overlay: {
errors: true,
warnings: false,
runtimeErrors: true,
},
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-overlay-errors --no-client-overlay-warnings --client-overlay-runtime-errors
발생한 오류를 기준으로 필터링하려면 error
매개변수를 허용하고 boolean 값을 반환하는 함수를 전달할 수 있습니다.
예를 들어, AbortController.abort()
에 의해 발생한 오류를 무시하려면 다음을 수행하세요.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
overlay: {
runtimeErrors: (error) => {
if (error instanceof DOMException && error.name === 'AbortError') {
return false;
}
return true;
},
},
},
},
};
boolean
브라우저에서 컴파일 진행률을 백분율로 출력합니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
progress: true,
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-progress
비활성화 하는법.
npx webpack serve --no-client-progress
boolean = true
number
클라이언트 재연결을 시도해야 하는 횟수를 dev-server에 알려줍니다. true
라면 무제한 재연결을 시도합니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
reconnect: true,
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-reconnect
false
로 설정하면 다시 연결을 시도하지 않습니다.
module.exports = {
//...
devServer: {
client: {
reconnect: false,
},
},
};
CLI를 통한 사용법.
npx webpack serve --no-client-reconnect
클라이언트가 다시 연결을 시도해야 하는 정확한 횟수를 지정할 수도 있습니다.
module.exports = {
//...
devServer: {
client: {
reconnect: 5,
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-reconnect 5
'ws' | 'sockjs'
string
클라이언트에 대한 현재 devServer
전송 모드를 개별적으로 선택하거나 커스텀 클라이언트 구현을 제공할 수 있습니다. 이를 통해 브라우저나 다른 클라이언트가 devServer
와 통신하는 방법을 지정할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketTransport: 'ws',
},
webSocketServer: 'ws',
},
};
CLI를 통한 사용법.
npx webpack serve --client-web-socket-transport ws --web-socket-server-type ws
커스텀 클라이언트 구현을 생성하려면 BaseClient
를 확장하는 클래스를 생성합니다.
호환되는 'ws'
서버와 함께 커스텀 웹 소켓 클라이언트 구현인 CustomClient.js
에 대한 경로를 사용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketTransport: require.resolve('./CustomClient'),
},
webSocketServer: 'ws',
},
};
커스텀을 사용하여, 호환 가능한 웹 소켓 클라이언트 및 서버 구현법.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketTransport: require.resolve('./CustomClient'),
},
webSocketServer: require.resolve('./CustomServer'),
},
};
string
object
웹 소켓 서버에 대한 URL을 지정할 수 있습니다. 개발 서버를 프록시하고 클라이언트 스크립트가 연결 위치를 항상 알지 못하는 경우에 유용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketURL: 'ws://0.0.0.0:8080/ws',
},
},
};
CLI를 통한 사용법.
npx webpack serve --client-web-socket-url ws://0.0.0.0:8080/ws
다음 프로퍼티들을 사용하여 객체를 지정할 수도 있습니다.
hostname
: 제공된 호스트 이름을 사용하도록 devServer에 연결된 클라이언트에 지시합니다.pathname
: devServer에 연결된 클라이언트에게 제공된 경로를 사용하여 연결하도록 지시합니다.password
: devServer에 연결된 클라이언트에게 제공된 비밀번호를 사용하여 인증하도록 지시합니다.port
: devserver에 연결된 클라이언트에게 제공된 포트를 사용하도록 지시합니다.protocol
: devserver에 연결된 클라이언트에게 제공된 프로토콜을 사용하도록 지시합니다.username
: devserver에 연결된 클라이언트에게 제공된 사용자 이름을 사용하여 인증하도록 지시합니다.webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketURL: {
hostname: '0.0.0.0',
pathname: '/ws',
password: 'dev-server',
port: 8080,
protocol: 'ws',
username: 'webpack',
},
},
},
};
boolean = true
제공되는 모든 항목에 대해 gzip 압축을 활성화합니다.
webpack.config.js
module.exports = {
//...
devServer: {
compress: true,
},
};
CLI를 통한 사용법.
npx webpack serve --compress
비활성화 하는법.
npx webpack serve --no-compress
object
Webpack 애셋을 처리하는 webpack-dev-middleware에 옵션을 제공합니다.
webpack.config.js
module.exports = {
devServer: {
devMiddleware: {
index: true,
mimeTypes: { phtml: 'text/html' },
publicPath: '/publicPathForDevServe',
serverSideRender: true,
writeToDisk: true,
},
},
};
array
function
object
모든 응답에 헤더를 추가합니다.
webpack.config.js
module.exports = {
//...
devServer: {
headers: {
'X-Custom-Foo': 'bar',
},
},
};
배열을 전달할 수도 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
headers: [
{
key: 'X-Custom',
value: 'foo',
},
{
key: 'Y-Custom',
value: 'bar',
},
],
},
};
함수를 전달할 수도 있습니다.
module.exports = {
//...
devServer: {
headers: () => {
return { 'X-Bar': ['key1=value1', 'key2=value2'] };
},
},
};
boolean = false
object
HTML5 History API를 사용할 때, index.html
페이지는 404
응답 대신 제공되어야 합니다. true
로 설정하여 devServer.historyApiFallback
을 활성화합니다.
webpack.config.js
module.exports = {
//...
devServer: {
historyApiFallback: true,
},
};
CLI를 통한 사용법.
npx webpack serve --history-api-fallback
비활성화 하는법.
npx webpack serve --no-history-api-fallback
객체를 제공하면 rewrites
와 같은 옵션을 사용하여 이 동작을 추가로 제어할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
historyApiFallback: {
rewrites: [
{ from: /^\/$/, to: '/views/landing.html' },
{ from: /^\/subpage/, to: '/views/subpage.html' },
{ from: /./, to: '/views/404.html' },
],
},
},
};
경로에 점을 사용할 때(Angular와 공통), disableDotRule
을 사용해야 할 수도 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
historyApiFallback: {
disableDotRule: true,
},
},
};
더 많은 옵션과 정보는, connect-history-api-fallback 문서를 참고하세요.
'local-ip' | 'local-ipv4' | 'local-ipv6'
string
사용할 호스트를 지정합니다. 외부에서 서버에 접근할 수 있도록 하려면, 다음과 같이 지정합니다.
webpack.config.js
module.exports = {
//...
devServer: {
host: '0.0.0.0',
},
};
CLI를 통한 사용법.
npx webpack serve --host 0.0.0.0
IPv6에서도 작동합니다.
npx webpack serve --host ::
local-ip
를 호스트로 지정하면 호스트 옵션을 사용 가능한 경우 로컬 IPv4
주소로 확인하려고 시도하고, IPv4
를 사용할 수 없는 경우 로컬 IPv6
주소를 확인하려고 시도합니다.
npx webpack serve --host local-ip
local-ipv4
를 호스트로 지정하면 호스트 옵션을 로컬 IPv4
주소로 확인하려고 시도합니다.
npx webpack serve --host local-ipv4
local-ipv6를 호스트로 지정하면 호스트 옵션을 로컬 IPv6 주소로 확인하려고 시도합니다.
npx webpack serve --host local-ipv6
'only'
boolean = true
Webpack의 Hot Module Replacement 기능을 활성화합니다.
webpack.config.js
module.exports = {
//...
devServer: {
hot: true,
},
};
CLI를 통한 사용법.
npx webpack serve --hot
비활성화 하는법.
npx webpack serve --no-hot
빌드 실패의 경우 대체로 페이지 새로 고침 없이 Hot Module Replacement를 활성화하려면 hot: 'only'
를 사용하세요.
webpack.config.js
module.exports = {
//...
devServer: {
hot: 'only',
},
};
CLI를 통한 사용법.
npx webpack serve --hot only
true
string
(host
대신) 수신할 Unix 소켓.
true
로 설정하면 /your-os-temp-dir/webpack-dev-server.sock
에서 소켓을 수신합니다.
webpack.config.js
module.exports = {
//...
devServer: {
ipc: true,
},
};
CLI를 통한 사용법.
npx webpack serve --ipc
다음을 사용하여 다른 소켓을 수신할 수도 있습니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
ipc: path.join(__dirname, 'my-socket.sock'),
},
};
boolean = true
기본적으로, dev-server는 파일 변경이 감지되면 페이지를 다시 로드하고 새로고침 합니다. liveReload
를 적용하려면 devServer.hot
옵션을 비활성화하거나 devServer.watchFiles
옵션을 활성화해야 합니다. false
로 설정하여 devServer.liveReload
를 비활성화합니다.
webpack.config.js
module.exports = {
//...
devServer: {
liveReload: false,
},
};
CLI를 통한 사용법.
npx webpack serve --live-reload
비활성화 하는법.
npx webpack serve --no-live-reload
function (devServer)
Webpack-dev-server가 포트에서 연결 수신을 시작할 때 커스텀 함수를 실행하는 기능을 제공합니다.
webpack.config.js
module.exports = {
//...
devServer: {
onListening: function (devServer) {
if (!devServer) {
throw new Error('webpack-dev-server is not defined');
}
const port = devServer.server.address().port;
console.log('Listening on port:', port);
},
},
};
boolean
string
object
[string, object]
서버가 시작된 후 브라우저를 열도록 dev-server에 지시합니다. 기본 브라우저를 열려면 true
로 설정하세요.
webpack.config.js
module.exports = {
//...
devServer: {
open: true,
},
};
CLI를 통한 사용법.
npx webpack serve --open
비활성화 하는법.
npx webpack serve --no-open
브라우저에서 지정된 페이지를 여는법.
webpack.config.js
module.exports = {
//...
devServer: {
open: ['/my-page'],
},
};
CLI를 통한 사용법.
npx webpack serve --open /my-page
브라우저에서 지정된 여러 페이지를 여는법.
webpack.config.js
module.exports = {
//...
devServer: {
open: ['/my-page', '/another-page'],
},
};
CLI를 통한 사용법.
npx webpack serve --open /my-page --open /another-page
기본 브라우저 대신 사용할 경우의 브라우저 이름 제공법.
webpack.config.js
module.exports = {
//...
devServer: {
open: {
app: {
name: 'google-chrome',
},
},
},
};
CLI를 통한 사용법.
npx webpack serve --open-app-name 'google-chrome'
객체는 모든 open 옵션을 허용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
open: {
target: ['first.html', 'http://localhost:8080/second.html'],
app: {
name: 'google-chrome',
arguments: ['--incognito', '--new-window'],
},
},
},
};
'auto'
string
number
요청을 수신할 포트 번호를 지정하세요.
webpack.config.js
module.exports = {
//...
devServer: {
port: 8080,
},
};
CLI를 통한 사용법.
npx webpack serve --port 8080
port
옵션은 null
이거나 빈 문자열일 수 없으므로, 자동으로 여유 포트를 사용하려면 port: 'auto'
를 사용하세요.
webpack.config.js
module.exports = {
//...
devServer: {
port: 'auto',
},
};
CLI를 통한 사용법.
npx webpack serve --port auto
[object, function]
별도의 백엔드 API 개발 서버가 있고 동일한 도메인에서 API 요청을 보내려는 경우 일부 URL을 프록시하는 것이 유용할 수 있습니다.
dev-server는 강력한 http-proxy-middleware 패키지를 사용합니다. 고급 사용법에 대한 문서를 확인하세요. http-proxy-middleware
의 일부 기능에서는 target
키가 필요하지 않습니다, 예를 들어 router
기능이 있지만, 여기의 설정에 target
키를 포함해야 합니다. 그렇지 않으면 webpack-dev-server
가 이를 http-proxy-middleware
에 전달하지 않습니다.
localhost:3000
의 백엔드에서, 다음을 사용하여 프록시를 활성화할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/api'],
target: 'http://localhost:3000',
},
],
},
};
/api/users
에 대한 요청은 이제 http://localhost:3000/api/users
에 대한 요청을 프록시 처리합니다.
/api
가 전달되는 것을 원하지 않으면 경로를 다시 작성해야 합니다.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/api'],
target: 'http://localhost:3000',
pathRewrite: { '^/api': '' },
},
],
},
};
유요하지 않은 인증서로 HTTPS에서 실행되는 백엔드 서버는 기본적으로 허용되지 않습니다. 원하는 경우, 다음과 같이 설정을 수정하세요.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/api'],
target: 'http://localhost:3000',
secure: false,
},
],
},
};
때로는 모든 것을 프록시로 처리하고 싶지 않을 때가 있습니다. 함수의 반환 값에 따라 프록시를 우회할 수 있습니다.
함수에서 요청, 응답 및 프록시 옵션에 접근할 수 있습니다.
null
또는 undefined
를 반환합니다.false
를 반환합니다.예를 들어 브라우저 요청의 경우 HTML 페이지를 제공하고 싶지만, API 요청의 경우 프록시를 사용하려고 할 경우 다음과 같이 할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/api'],
target: 'http://localhost:3000',
bypass: function (req, res, proxyOptions) {
if (req.headers.accept.indexOf('html') !== -1) {
console.log('Skipping proxy for browser request.');
return '/index.html';
}
},
},
],
},
};
동일한 대상에 대한 여러 특정 경로를 프록시 하려면 context
프로퍼티가 있는 하나 이상의 객체 배열을 사용할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/auth', '/api'],
target: 'http://localhost:3000',
},
],
},
};
루트에 대한 요청은 기본적으로 프록시되지 않습니다. 루트 프록시를 활성화하려면, devMiddleware.index
옵션을 거짓 값으로 지정해야 합니다.
webpack.config.js
module.exports = {
//...
devServer: {
devMiddleware: {
index: false, // 루트 프록시를 사용하도록 지정
},
proxy: [
{
context: () => true,
target: 'http://localhost:1234',
},
],
},
};
호스트 헤더의 출처는 기본적으로 프록시 될 때 유지되며, changeOrigin
을 true
로 설정하여 이 동작을 재정의할 수 있습니다. 이름 기반 가상 호스팅 사이트를 사용하는 것과 같은 경우에 유용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
proxy: [
{
context: ['/api'],
target: 'http://localhost:3000',
changeOrigin: true,
},
],
},
};
'http' | 'https' | 'spdy'
string
object
서버 및 옵션을 설정할 수 있습니다(기본값은 'http').
webpack.config.js
module.exports = {
//...
devServer: {
server: 'http',
},
};
CLI를 통한 사용법.
npx webpack serve --server-type http
자체 서명된 인증서로 HTTPS
를 통해 서비스하는법.
webpack.config.js
module.exports = {
//...
devServer: {
server: 'https',
},
};
CLI를 통한 사용법.
npx webpack serve --server-type https
자체 서명된 인증서와 함께 spdy를 사용하여 HTTP/2
통신하는 법.
webpack.config.js
module.exports = {
//...
devServer: {
server: 'spdy',
},
};
CLI를 통한 사용법.
npx webpack serve --server-type spdy
객체 구문을 사용한 고유한 인증서 제공법.
webpack.config.js
module.exports = {
//...
devServer: {
server: {
type: 'https',
options: {
ca: './path/to/server.pem',
pfx: './path/to/server.pfx',
key: './path/to/server.key',
cert: './path/to/server.crt',
passphrase: 'webpack-dev-server',
requestCert: true,
},
},
},
};
CLI를 통한 사용법.
npx webpack serve --server-type https --server-options-key ./path/to/server.key --server-options-cert ./path/to/server.crt --server-options-ca ./path/to/ca.pem --server-options-passphrase webpack-dev-server
또한 minVersion
과 같은 추가 TLS 옵션을 설정할 수 있으며 각 파일의 내용을 직접 전달할 수 있습니다.
webpack.config.js
const fs = require('fs');
const path = require('path');
module.exports = {
//...
devServer: {
server: {
type: 'https',
options: {
minVersion: 'TLSv1.1',
key: fs.readFileSync(path.join(__dirname, './server.key')),
pfx: fs.readFileSync(path.join(__dirname, './server.pfx')),
cert: fs.readFileSync(path.join(__dirname, './server.crt')),
ca: fs.readFileSync(path.join(__dirname, './ca.pem')),
passphrase: 'webpack-dev-server',
requestCert: true,
},
},
},
};
boolean = true
개발 서버를 닫고 SIGINT
및 SIGTERM
신호에서 프로세스를 종료할 수 있습니다.
webpack.config.js
module.exports = {
//...
devServer: {
setupExitSignals: true,
},
};
function (middlewares, devServer)
커스텀 함수를 실행하고 커스텀 미들웨어를 적용하는 기능을 제공합니다.
webpack.config.js
module.exports = {
// ...
devServer: {
setupMiddlewares: (middlewares, devServer) => {
if (!devServer) {
throw new Error('webpack-dev-server is not defined');
}
devServer.app.get('/setup-middleware/some/path', (_, response) => {
response.send('setup-middlewares option GET');
});
// 다른 모든 미들웨어보다 먼저 미들웨어를 실행하려면 `unshift` 메소드를 사용하세요
// 또는 `onBeforeSetupMiddleware` 옵션에서 마이그레이션 할 때 사용하세요
middlewares.unshift({
name: 'first-in-array',
// `path`는 옵셔널입니다
path: '/foo/path',
middleware: (req, res) => {
res.send('Foo!');
},
});
// 다른 모든 미들웨어 이후에 미들웨어를 실행하려면 `push` 메소드를 사용하세요
// 또는 `onBeforeSetupMiddleware` 옵션에서 마이그레이션 할 때 사용하세요
middlewares.push({
name: 'hello-world-test-one',
// `path`는 옵셔널입니다
path: '/foo/bar',
middleware: (req, res) => {
res.send('Foo Bar!');
},
});
middlewares.push((req, res) => {
res.send('Hello World!');
});
return middlewares;
},
},
};
boolean
string
object
[string, object]
디렉터리(기본적으로 'public' 디렉터리)에서 정적 파일을 제공하기 위한 옵션을 구성할 수 있습니다. 비활성화하려면 false
로 설정하세요:
webpack.config.js
module.exports = {
//...
devServer: {
static: false,
},
};
CLI를 통한 사용법.
npx webpack serve --static
비활성화 하는법.
npx webpack serve --no-static
단일 디렉터리 설정.
webpack.config.js
module.exports = {
// ...
devServer: {
static: ['assets'],
},
};
CLI를 통한 사용법.
npx webpack serve --static assets
다중 디렉터리 설정.
webpack.config.js
module.exports = {
// ...
devServer: {
static: ['assets', 'css'],
},
};
CLI를 통한 사용법.
npx webpack serve --static assets --static css
string = path.join(process.cwd(), 'public')
서버에 콘텐츠를 제공할 위치를 알려줍니다. 이것은 정적 파일을 제공하려는 경우에만 필요합니다. static.publicPath
는 번들을 제공해야 하는 위치와 우선순위를 결정하는 데 사용됩니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'public'),
},
},
};
여러 개의 정적 폴더가 있는 경우 객체 배열을 제공합니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: [
{
directory: path.join(__dirname, 'assets'),
},
{
directory: path.join(__dirname, 'css'),
},
],
},
};
object
static.directory
에서 정적 파일을 제공하기 위한 고급 옵션을 구성할 수 있습니다. 가능한 옵션은 Express 문서를 참고하세요.
webpack.config.js
module.exports = {
//...
devServer: {
static: {
staticOptions: {
redirect: true,
},
},
},
};
string = '/'
[string]
static.directory
콘텐츠를 제공할 URL을 서버에 알려주세요. 예를 들면 /serve-public-path-url/manifest.json
에서 assets/manifest.json
파일을 제공하려면, 설정은 다음과 같아야 합니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'assets'),
publicPath: '/serve-public-path-url',
},
},
};
여러 개의 정적 폴더가 있는 경우 객체 배열을 제공합니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: [
{
directory: path.join(__dirname, 'assets'),
publicPath: '/serve-public-path-url',
},
{
directory: path.join(__dirname, 'css'),
publicPath: '/other-serve-public-path-url',
},
],
},
};
boolean
object = { icons: true }
dev-server가 활성화되면 serveIndex
미들웨어를 사용하도록 지시합니다.
serveIndex
미들웨어는 index.html
파일이 없는 디렉터리를 볼 때 디렉터리 목록을 생성합니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'public'),
serveIndex: true,
},
},
};
CLI를 통한 사용법.
npx webpack serve --static-serve-index
비활성화 하는법.
npx webpack serve --no-static-serve-index
boolean
object
dev-server에게 static.directory
옵션이 제공하는 파일을 감시하도록 지시합니다. 이는 기본적으로 활성화되어 있으며, 파일 변경 시 전체 페이지가 새로고침됩니다. 이것은 watch
옵션을 false
로 설정하여 비활성화할 수 있습니다.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'public'),
watch: false,
},
},
};
CLI를 통한 사용법.
npx webpack serve --static-watch
비활성화 하는법.
npx webpack serve --no-static-watch
static.directory
에서 정적 파일을 보기 위한 고급 옵션을 구성할 수 있습니다. 가능한 옵션은 chokidar
문서를 참고하세요.
webpack.config.js
const path = require('path');
module.exports = {
//...
devServer: {
static: {
directory: path.join(__dirname, 'public'),
watch: {
ignored: '*.txt',
usePolling: false,
},
},
},
};
string
object
[string, object]
파일 변경 사항을 감시할 globs/directories/files 목록을 구성할 수 있습니다. 예를 들면 다음과 같습니다.
webpack.config.js
module.exports = {
//...
devServer: {
watchFiles: ['src/**/*.php', 'public/**/*'],
},
};
파일 감시를 위한 고급 옵션을 구성할 수 있습니다. 가능한 옵션은 chokidar
문서를 참고하세요.
webpack.config.js
module.exports = {
//...
devServer: {
watchFiles: {
paths: ['src/**/*.php', 'public/**/*'],
options: {
usePolling: false,
},
},
},
};
false | 'sockjs' | 'ws'
string
function
object
현재 웹 소켓 서버를 선택하거나 커스텀 웹 소켓 서버를 제공할 수 있습니다.
현재 기본 모드는 'ws'
입니다. 이 모드는 ws
를 서버로 사용하고, 기본 WebSocket을 클라이언트로 사용합니다.
webpack.config.js
module.exports = {
//...
devServer: {
webSocketServer: 'ws',
},
};
커스텀 서버를 구현하려면, BaseServer
를 확장하는 클래스를 생성하세요.
호환되는 'ws'
클라이언트와 함께 커스텀 WebSocket 서버가 구현되어 있는 CustomServer.js
에 대한 경로 사용법.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketTransport: 'ws',
},
webSocketServer: require.resolve('./CustomServer'),
},
};
호환 가능한 커스텀 WebSocket 클라이언트 및 서버 구현 사용법.
webpack.config.js
module.exports = {
//...
devServer: {
client: {
webSocketTransport: require.resolve('./CustomClient'),
},
webSocketServer: require.resolve('./CustomServer'),
},
};