설정
context
입력 옵션을 해결하기위한 기본 디렉토리 (절대 경로!) 입니다. output.pathinfo가 설정되면 포함 된 pathinfo가 설정해놓은 congtext 디렉토리로 단축됩니다. Default
: process.cwd()
entry
번들을 설정하기 위한 진입점 입니다.
String
: 문자열이 들어오는 경우 시작시 로드되는 모듈로 해석Array
: 시작시 모든 모듈이 로드됩니다. 마지막 하나가 내보내집니다.Object
: 다중 항목 번들이 작성됩니다. key는 청크되는 파일의 이름입니다. 값은 문자열 또는 배열이 가능합니다.output
파일 번들링에 영향을 주는 옵션입니다. 번들링 옵션은 webpack에 컴파일된 파일을 디스크에 작성하는 방법을 알려줍니다. 다중 진입점이 있을 수 있으나, 디스크 작성에 관련된 경로는 하나의 구성만 지정됩니다.
해싱([hash] 또는 [chunkhash])를 사용하는 경우 모듈에 일관된 순서가 있어야 합니다. 순서를 사용하기 위해
OccurrenceOrderPlugin
또는recordsPath
를 사용해야 합니다.1) filename
디스크의 작성될 파일 이름을 지정합니다.
해당 옵션에 절대 경로를 지정하면 안됩니다.
output.path
옵션은 팡리이 기록되는 디스크상의 위치를 결정합니다.filename
은 개별 파일의 이름을 짓기 위해서만 사용됩니다.
Single entry 경우 예
Multiple 설정일 경우의 예 번들링 구성에 있어 여러개의 진입점이 있거나, CommonsChunkPlugin과 같은 플러그인을 사용할 때 하나 이상의 청크파일이 생성되면 각 파일에 고유한 이름이 생성되는지 확인해봐야 합니다.
[name]
은 청크의 이름으로 바뀝니다.[hash]
는 컴파일 해시로 바뀝니다.[chunkhash]
는 청크의 해시로 대체됩니다.
2) path
출력 경로는 절대경로(필수) 입니다. [hash]
는 컴파일된 해시로 전환됩니다.
3) publicPath
publicPath
는 브라우저에서 참조될때 출력 파일의 공용 URL 주소를 지정합니다.<script>
태그,<link>
태그 또는 이미지와 같은 참조 에셋을 포함하는 로더의 경우, publicPath는 디스크에서 path에 지정된 위치와 다른 경우 파일에 대한 href 또는 url() 로 사용됩니다.이 기능은 다른 도메인이나 CDN에서 일부 또는 모든 출력 파일을 호스팅하려는 경우 유용할 수 있습니다.
Webpack Dev Server는 또한 해당 option을 사용하여 출력파일이 제공될 것으로 예상되는 경로를 결정합니다. 경로와 마찬가지로 더 나은 캐싱 프로파일을 위해서
[hash]
로 대체할 수 있습니다.Example
config.js
index.html
asset에 CDN과 해시를 사용하는 예입니다.
config.js
출력되는 파일의 최종 publicPath가 컴파일에 알려지지 않는 경우, 공백으로 남겨두고 런타임시 엔트리 포인트 파일에서 동적으로 설정할 수 있습니다. 컴파일하는 동안 publicPath를 모르는 경우에는 이를 생략하고 진입점에서 webpack_public_path를 설정할 수 있습니다.
```js
webpack_public_path = myRuntimePublicPath
// rest of your application entry
Example:
2) preLoaders, postLoaders
module.loaders
와 같은 구문입니다.pre loader, post loader의 배열값입니다.
3) noParse
정규식(RegExp 또는 RegExps) 배열과 일치하는 파일을 파싱하지 않습니다.
전체 처리된 요청과 일치합니다.
이렇게 설정하면 큰 라이브러리를 무시할때 성능이 향상될 수 있습니다.
파일 내에는 require, define 또는 이와 유사한 호출이 없어야 합니다. 해당 모듈들은 export와 module.exports를 사용할 수 있습니다.
4) 자동 생성 컨텍스트인 defaults - module.xxxContentXxxx
자동으로 생성되는 컨텍스트의 기본값을 구성하는데에는 여러가지 옵션이 있습니다. 아래와 같이 자동으로 생성된 세가지 유형의 컨텍스트를 차별화 합니다.
exprContext
: 의존 관계로서의 표현 (i.e., require(expr))wrappedContext
: 표현식에 접두사와 / 또는 접미사가 붙은 문자열 (i.e. require("./templates/" + expr))unknownContext
: require의 해석이 불가능한 다른 사용법 (i.e. require)
자동으로 생성되는 컨텍스트에는 아래와 같이 네가지 옵션이 가능합니다.
requires: 컨텍스트에 대한 요청
recursive: 하위 디렉토리를 순회
regExp: 정규표현식
critical: dependency에서 중요하게 고려되는 유형 (경로를 내보냅니다.)
모든 옵션과 default: unknownContextRequest = "."
, unknownContextRecursive = true
, unknownContextRegExp = /^\.\/.*$/
, unknownContextCritical = true
wrappedContextRegExp = /.*/
, wrappedContextRecursive = true
, wrappedContextCritical = false
참고: module.wrappedContextRegExp
는 전체 정규식 가운데 부분만 참조합니다. 나머지는 prefix와 suffix에서 생성됩니다.
Example:
resolve
모듈을 해석하는데 있어 영향을 미치는 옵션입니다.
1) alias
모듈을 다른 모듈이나 경로로 교체합니다.
key가 모듈이름인 객체를 만듭니다. value는 새 경로입니다. 대체와 비슷하나 더 영리하게 처리합니다. 키가 $로 끝나면 $가 없는 정확한 일치값만 교체합니다.
값이 상대 경로이면 require를 포함하는 파일에 상대적으로 적용됩니다. Examples: 다른 별칭을 설정하여 /abc/entry.js에서 require를 호출함.
alias:
require("xyz")
require("xyzzy/file.js")
{}
/abc/node_modules/xyz/index.js
/abc/node_modules/xyz/file.js
{ xyz: "/absolute/path/to/file.js" }
/absolute/path/to/file.js
error
{ xyz$: "/absolute/path/to/file.js" }
/absolute/path/to/file.js
/abc/node_modules/xyz/file.js
{ xyz: "./dir/file.js" }
/abc/dir/file.js
error
{ xyz$: "./dir/file.js" }
/abc/dir/file.js
/abc/node_modules/xyz/file.js
{ xyz: "/some/dir" }
/some/dir/index.js
/some/dir/file.js
{ xyz$: "/some/dir" }
/some/dir/index.js
/abc/node_modules/xyz/file.js
{ xyz: "./dir" }
/abc/dir/index.js
/abc/dir/file.js
{ xyz: "modu" }
/abc/node_modules/modu/index.js
/abc/node_modules/modu/file.js
{ xyz$: "modu" }
/abc/node_modules/modu/index.js
/abc/node_modules/xyz/file.js
{ xyz: "modu/some/file.js" }
/abc/node_modules/modu/some/file.js
error
{ xyz: "modu/dir" }
/abc/node_modules/modu/dir/index.js
/abc/node_modules/dir/file.js
{ xyz: "xyz/dir" }
/abc/node_modules/xyz/dir/index.js
/abc/node_modules/xyz/dir/file.js
{ xyz$: "xyz/dir" }
/abc/node_modules/xyz/dir/index.js
/abc/node_modules/xyz/file.js
index.js
는 package.json
에 정의된 경우 다른 파일로 해석될 수 있습니다.
/abc/node_modules
도 /node_modules
에서 확인할 수 있습니다.
2) root
모듈을 포함하는 절대경로의 디렉토리 입니다. 해당 값은 디렉토리의 배열일 수 있습니다. 이 설정은 검색 경로에 디렉토리를 추가하는데 사용되어야 합니다. 참고) 절대 경로만 사용하셔야 합니다! 상대경로로 사용하지 마십시오
Example:
3) moduleDirectories
현재 디렉토리 뿐만 아니라 그 상위의 디렉토리로 해석되고 모듈을 검색할 디렉토리 이름의 배열입니다. 이것은 node에서 node_modules
디렉토리를 찾는것과 유사하게 기능합니다. 예를들어 값이 ["mydir"] 이면, webpack은 ./mydir
, ../mydir
, ../../mydir
등을 찾습니다. | Default: ["web_modules", "node_modules"] 참고: '../someDir'., 'app', '.' 여기서 절대 경로는 필요하지 않습니다. 경로가 아닌 디렉토리 이름만 사용하십시오. 이러한 폴더 내에 계층 구조가 있을 것으로 예상되는 경우에만 사용하십시오. 그렇지 않으면 resolve.root 옵션을 대신할 수 있을 것입니다.
4) fallback
webpack이 resolve.root
또는 resolve.modulesDirectories
에는 없는 모듀을 찾아야만 하는 디렉토리 (또는 디렉토리의 절대 경로가 포함된 배열)
5) extensions
모듈을 처리하는데 사용해야 하는 확장에 관련된 배열입니다. 예를들어 CoffeeScript 파일을 찾으려면, 배열에 ".coffee" 문자열이 포함되어 있어야 합니다. | Default: ["", ".webpack.js", ".web.js", ".js", ".json"]
중요
: 이 옵션을 설정하면 기본값보다 우선적으로 해당 옵션이 적용됩니다. 즉, webpack은 기본 확장명을 사용하여 모듈을 더이상 처리하지 않습니다. 확장명이 필요한 모듈 (예를들면 require('./somefile.ext'))을 올바르게 처리하려면 배열에 빈 문자열을 포함해야 합니다.
마찬가지로 확장자가 필요없는 모듈 (예를들면 require('underscore'))을 확장자가 .js인 파일로 처리하려면 배열에 .js
를 포함해야 합니다.
6) packageMains
package.json
의 적절한 파일을 해당 필드에서 찾습니다. | Default: ["web pack", "browser", "web", "browserify", ["jam". "main"], "main"] 참고: 해당 옵션은 webpack2의 resolve.mainFields로 변경되었습니다.
7) packageAlias
package.json
에서 객체를 확인합니다. 키-값의 쌍은 사양에 따라 별칭으로 처리됩니다. Example: "browser"
는 browser필드에서 체크합니다.
8) unsafeCache
파일의 일부를 처리하기 위해 공격적이지만 안전하지 않은 캐싱방법을 사용합니다. 캐시된 경로를 변경하면 오류가 발생할 수 있습니다. (이러한 경우는 드물게 발생합니다.) RegExps의 배열은 RegExp 또는 true (모든 파일)만 예상됩니다. 해결된 경로가 일치하면 캐시됩니다. | Default: []
resolveLoader
resolve
와 유사한 loader입니다.
resolveLoader에 alias
를 사용하고 다른 기능을 사용할 수 있습니다. 예를 들어, {txt: 'raw-loader'}
는 raw-loader를 사용하기 위해 txt!templates/demo.tx
를 shim 합니다.
1) moduleTemplates
이 옵션은 resolveLoader의 고유 속성입니다. 처리하기 위한 모듈 이름의 대안을 설명합니다. | Default: ["x-webpack-loader", "x-web-loader", "x-loader", "*"]
externals
webpack에의해 번들되어서는 안되지만, 대신 번들 결과에 의해 요청된 종속성을 나타냅니다. 요청된 기술은 output.libraryTarget
에 의해서 지정된대로 또는 key-value 쌍으로 된 객체 정의를 사용하여 종속성별로 수정됩니다.
결과적으로 externals의 값은 문자열, 객체, 함수, RegExp 또는 배열일 수 있습니다.
string: 정확히 일치하는 의존성 요청을 output.libraryTarget이 규정한 기술로 변환합니다.
object: 개별 종속성의 처리를 설명하는 사전 object를 제공합니다. key는 연관된 종속성 요청과 정확하게 일치해야 하며, externalization 요청을 무시하고 어떻게 되던 종속성을 연결하려면 해당값이 false가 되어야 합니다. output.libraryTarget에 지정된 기술을 사용하여 종속성을 연결하는 경우 값은 true입니다. 또는 outputlibraryTarget 당 요청 기법을 참조하는 두개의 공백으로 구분된 이름을 포함하는 문자열 및 연관된 키와 다를 수 있는 종속성을 참조합니다.
function: function (context, request, callback (err, result))으로 이루어진 이 함수는 각 의존성에 대해 호출되게 됩니다. 결과가 콜백함수 (callback(에 전달되면 이 값은 객체의 속성값처럼 처리가 됩니다.
RegExp: 일치되는 모든 종속성 모듈은 외부처리 됩니다. 일치하는 텍스트들은 외부 종속성에 대한 요청으로 사용됩니다. 요청은 외부 코드의 Hook을 생성하는데 사용된 정확한 코드이므로, commonjs 패키지 (예: '.../some/package.json')와 일치하는 경우 함수 대신 외부화 전략을 사용하는 것이 좋습니다. 그런 다음 require('" + 요청 + "') 선언 후, module.exports = require('.../some/package.js') 및 콜백(null, require)를 사용하여 웹팩 컨텍스트내의 패키지를 가져올 수 있습니다.
array: 복수의 schema에 대한 value 입니다 (재귀적임)
Example:
type
value
import code 결과
"var"
"abc"
module.exports = abc;
"var"
"abc.def"
module.exports = abc.def;
"this"
"abc"
(function () { module.exports = this["abc"]})
"this"
["abc", "def"]
(function() { module.exports = this["abc"]["def"];})());
"commonjs"
["abc", "def"]
module..exports = require("abc").def;
"amd"
"abc"
define(["abc"], function (x) { module.exports = X; })
"amd"
"abc"
amd에 모든것 해당
외부 값으로 amd 또는 umd를 적용하면 amd 또는 umd 대상으로 컴파일하지 않으면 중단됩니다.
target
web
: web 브라우저 환경에서 사용하기 위해 컴파일합니다. (기본값)webworker
: webworker로 컴파일합니다.node
: node.js와 같은 환경에서 사용하기 위해 컴파일 합니다. (chunk load에 require 사용)async-node
: node.js와 같은 환경에서 사용하기 위해 컴파일 합니다. (fs 및 VM을 사용하여 청크를 비동기적으로 로드합니다.)node-webkit
: node webkit에서 사용하기 위해 컴파일 하고, jsonp 청크 로딩을 사용하지만 node.js 모듈에서 빌드를 지원합니다. (require("nw.gui")(experimental))electron
: Electron에서 사용하기 위해 컴파일합니다. (node-webkit 특성 모듈을 요구합니다.)electron-renderer
: electron 렌더러 프로세스를 컴파일하고, jsonpTemplatePlugin을 사용하여 타겟을 제공하고, 브라우저 환경을 위해 FunctionModulePlugin을 구현합니다. 또한 commonjs및 built-in 모듈을 위해 NodeTargetPlugin 및 ExternalsPlugin을 제공합니다. (참고: web pack >= 1.12.15가 필요합니다.)
bail
첫번째 오류를 허용합니다. 대신에 하드한 오류로 보고합니다.
profile
각 모듈에 대한 타이밍 정보를 캡쳐합니다. | 힌트 : analyze tool을 사용하여 시각화 하십시오. --json 또는 stats.toJson()은 JSON으로 시각화 통계를 제공합니다.
cache
빌드의 성능을 향상시키기 위해서 모듈 및 청크를 생성합니다.
해당 옵션은 watch 모드에서 기본적으로 활성화 됩니다.
false를 설정하여 해당 옵션을 비활성화 할 수 있습니다.
객체를 전달하여 cache를 활성화하고 webpack이 전달된 객체를 캐시로 사용하게 할 수 있습니다. 이렇게 하면 여러 컴파일러 호출간에 캐시 객체를 공유할 수 있습니다.
debug
loader들을 debug mode로 전환합니다.
watch
file 변화를 감지합니다. 해당 옵션은 webpack-stream과 함께 사용할 수 있습니다.
devtool
디버깅을 활성화 하는 개발자 도구를 선택합니다.
eval
: 각 모듈은 eval 및 @sourceURL과 함께 실행됩니다.source-map
: sourcemap이 output에 출력됩니다. output.sourceMapFilename을 참조하십시오hidden-source-map
:source-map
과 같지만 번들에 참조 주석을 추가하지 않습니다.inline-source-map
: sourcemap은 javascript 파일에 DataUrl로 추가됩니다.eval-source-map
: 각 모듈은 eval과 함께 실행되고 SourceMap은 DataUrl로 eval에 추가됩니다.cheap-source-map
: 열 매핑이 없는 SourceMap 입니다. 로더의 SourceMaps는 사용되지 않습니다.cheap-module-source-map
: 열 매핑이 없는 SourceMap 입니다. 로더의 SourceMaps는 한줄에 하나의 매핑으로 단순화 됩니다.
접두사(prefix) @
, #
또는 #@
는 pragma 스타일을 적용합니다. (기본값은 webpack 1에서는 @, webpack 2에서는 # 이며, # 사용이 권장됩니다.)
조합이 가능합니다. 숨겨진 인라인, eval 및 pragma 스타일은 독점적입니다.
devtool
build speed
rebuild speed
production supported
quality
eval
+++
+++
지원안함
생성된 코드
cheap-eval-source-map
+
++
지원안함
변환된 코드 (줄만)
cheap-source-map
+
o
지원
변환된 코드 (줄만)
cheap-module-eval-source-map
o
++
지원안함
원본소스 (줄만)
cheap-module-source-map
o
-
지원
원본소스 (줄만)
eval-source-map
--
+
지원안함
원본소스
source-map
--
--
지원함
원본소스
Example :
devServer
webpack config가 webpack-dev-server CLI에 전달될 때 webpack-dev-server의 동작을 구성하는 데 사용할 수 있습니다.
Example:
node
다양한 Node 항목에 대해 polyfill 이나 정보를 포함합니다.
console
: true or falseglobal
: true or falseprocess
: true, 'mock' or falseBuffer
: true or false__filename
: true (컨텍스트 옵션과 관련된 실제 파일 이름) or 'mock' (index.js) 또는 false (일반 node__dirname
)__dirname
: true (컨텍스트 옵션과 관련된 실제 dirname), 'mock' (/) 또는 false (일반 node.js__dirname
): true, 'mock', 'empty' or false
amd
require.amd 및 define.amd의 값을 설정합니다. 예) amd: {jQuery: true} (jquery의 1.x amd 버전)
loader
loader 콘텍스트 내의 커스텀 값
recordsPath, recordsInputPath, recordsOutputPath
json 파일에서 /로 컴파일러 상태를 저장 또는 로드합니다. 이로인해 모듈과 청크 id가 영구적으로 유지됩니다.
해당 옵션은 절대 경로가 필요합니다. recordsPath는 recordsInputPath 및 recordsOutputPath에 대해 정의되지 않은 상태로 사용됩니다.
이는 컴파일러에 대한 여러 호출간에 핫코드 대체를 사용할 때 필요합니다.
Last updated
Was this helpful?