Cache
cache
boolean object
ë¹ë ìë를 í¥ììí¤ê¸° ìí´ ìì±ë webpack 모ë ë° ì²í¬ë¥¼ ìºìí©ëë¤. cache: trueë cache: { type: 'memory' }ì ë³ì¹ì
ëë¤. ìºì±ì ë¹íì±ííë ¤ë©´ false를 ì ë¬íì¸ì.
cacheì 기본ê°ì modeì ë°ë¼ ë¤ë¦
ëë¤.
| 모ë | ê¸°ë³¸ê° |
|---|---|
"production" | false |
"development" | { type: 'memory' } |
"none" | false |
webpack.config.js
export default {
// ...
cache: false,
};cache.typeì 'filesystem'ì¼ë¡ ì¤ì íë ëì ë ë§ì ìµì
ì ì¤ì í ì ììµëë¤.
cache.allowCollectingMemory
ì ì§ë ¬í를 íë ëì 미ì¬ì© í ë¹ ë©ëª¨ë¦¬ë¥¼ ìì§í©ëë¤. cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤. ì´ë¥¼ ìí´ìë ë°ì´í°ë¥¼ ë ìì ë²í¼ì ë³µì¬í´ì¼ íë©° ì±ë¥ì´ ì íë©ëë¤.
- Type:
boolean
cache.allowCollectingMemoryì 기본ê°ì modeì ë°ë¼ ë¤ë¦
ëë¤.
| 모ë | ê¸°ë³¸ê° |
|---|---|
"production" | false |
"development" | true |
"none" | false |
- 5.35.0+
webpack.config.js
export default {
cache: {
type: "filesystem",
allowCollectingMemory: true,
},
};cache.buildDependencies
object
cache.buildDependenciesë ë¹ëì ëí ì¶ê° ì½ë ëíëì ë°°ì´ì ê°ì²´ì
ëë¤. Webpackì ê° í목ì í´ìì 모ë ëíëì를 ì¬ì©íì¬ íì¼ ìì¤í
ìºì를 무í¨íí©ëë¤.
webpackì 모ë ëíëì를 ì»ê¸° ìí´ ê¸°ë³¸ê°ì webpack/libì
ëë¤.
webpack.config.js
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
export default {
cache: {
buildDependencies: {
// ì´ íì¼ì 모ë ëíëì를 ë§ëëë¤(ë¹ë ëíëì).
config: [__filename],
// 기본ì ì¼ë¡ webpackê³¼ ë¡ëë ë¹ë ëíëìì í¬í¨ë©ëë¤.
},
},
};cache.cacheDirectory
string
ìºìì 기본 ëë í°ë¦¬ì
ëë¤. 기본ê°ì node_modules/.cache/webpack ì
ëë¤.
cache.cacheDirectoryë cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ëì´ ìì ê²½ì°ë§ ì¬ì© ê°ë¥í©ëë¤.
webpack.config.js
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export default {
// ...
cache: {
type: "filesystem",
cacheDirectory: path.resolve(__dirname, ".temp_cache"),
},
};cache.cacheLocation
string
ìºìì ìì¹ì
ëë¤. 기본ê°ì path.resolve(cache.cacheDirectory, cache.name)ì
ëë¤.
webpack.config.js
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export default {
// ...
cache: {
type: "filesystem",
cacheLocation: path.resolve(__dirname, ".test_cache"),
},
};cache.cacheUnaffected
ë³ê²½ëì§ ìì 모ëì ìºì를 ê³ì°íê³ ë³ê²½ëì§ ìì 모ëë§ ì°¸ì¡°í©ëë¤. ì´ë cache.typeì´ 'memory'ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ìì¼ë©°, experiments.cacheUnaffectedê° íì±íëì´ ìì´ì¼ ì¬ì©í ì ììµëë¤.
- Type:
boolean - v5.54.0+
webpack.config.js
export default {
// ...
cache: {
type: "memory",
cacheUnaffected: true,
},
};cache.compression
false | 'gzip' | 'brotli'
ìºì íì¼ì ì¬ì©ëë ìì¶ ì íì
ëë¤. 기본ì ì¼ë¡ ì´ ê°ì false ì
ëë¤.
cache.compressionì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤..
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
compression: "gzip",
},
};cache.hashAlgorithm
string
ìê³ ë¦¬ì¦ì í´ìí¨ì를 ì¬ì©íìµëë¤. ìì¸í ì ë³´ë Node.js crypto를 ì°¸ê³ íì¸ì. 기본ê°ì md4ì
ëë¤.
cache.hashAlgorithmì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
hashAlgorithm: "md4",
},
};cache.idleTimeout
number = 60000
ë°ë¦¬ ì´ ë¨ìì ìê°ì
ëë¤. cache.idleTimeoutì ìºì ì ì¥ì´ ë°ìí´ì¼ íë 기ê°ì ëíë
ëë¤.
cache.idleTimeout ìµì
ì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ..
cache: {
type: "filesystem",
idleTimeout: 60000,
},
};cache.idleTimeoutAfterLargeChanges
number = 1000
ë°ë¦¬ ì´ ë¨ìì ìê°ì
ëë¤. cache.idleTimeoutAfterLargeChangesë ë í° ë³ê²½ ì¬íì´ ê°ì§ë ê²½ì° ìºì ì ì¥ì´ ë°ìí´ì¼ íë 기ê°ì ëíë
ëë¤.
cache.idleTimeoutAfterLargeChanges ìµì
ì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ..
cache: {
type: "filesystem",
idleTimeoutAfterLargeChanges: 1000,
},
};cache.idleTimeoutForInitialStore
number = 5000
ë°ë¦¬ ì´ ë¨ìì ìê°ì
ëë¤. cache.idleTimeoutForInitialStoreë ì´ê¸° ìºì ì ì¥ì´ ë°ìí´ì¼ íë 기ê°ì
ëë¤.
cache.idleTimeoutForInitialStore ìµì
ì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ..
cache: {
type: "filesystem",
idleTimeoutForInitialStore: 0,
},
};cache.managedPaths
[string] = ['./node_modules']
cache.managedPathsë í¨í¤ì§ ê´ë¦¬ì ì ì© ê´ë¦¬ ê²½ë¡ì ë°°ì´ì
ëë¤. Webpackì í´ì± ë° íì ì¤í¬í를 ë°©ì§íê³ ë²ì ì´ ê³ ì íê³ ì¤ë
ì·ì¼ë¡ ì¬ì©íë¤ê³ ê°ì í©ëë¤(ë©ëª¨ë¦¬ ë° íì¼ ìì¤í
ìºì 모ë).
cache.maxAge
number = 5184000000
ì¬ì©ëì§ ìì ìºì íëª©ì´ íì¼ ìì¤í ìºìì 머무를 ì ìë ë°ë¦¬ ì´ ë¨ìì ìê°ì ëë¤. 기본ê°ì 1ê°ìì ëë¤.
cache.maxAgeë cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
maxAge: 5184000000,
},
};cache.maxGenerations
number
ë©ëª¨ë¦¬ ìºììì ì¬ì©ëì§ ìë ìºì í목ì ìëª ì ì ìí©ëë¤.
-
cache.maxGenerations: 1: ì»´íì¼ ì ì¬ì©ëì§ ìì ìºìë ì ê±°ë©ëë¤. -
cache.maxGenerations: Infinity: ìºìë ììí ì ì§ë©ëë¤.
cache.maxGenerationsì cache.typeì´ 'memory'ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "memory",
maxGenerations: Infinity,
},
};cache.maxMemoryGenerations
number
ë©ëª¨ë¦¬ ìºììì ì¬ì©ëì§ ìë ìºì í목ì ìëª ì ì ìí©ëë¤.
-
cache.maxMemoryGenerations: 0: ì구 ìºìë ì¶ê° ë©ëª¨ë¦¬ ìºì를 ì¬ì©íì§ ììµëë¤. ëì¤í¬ì ì§ë ¬íë ëê¹ì§ ë©ëª¨ë¦¬ì íëª©ë§ ìºì í©ëë¤. ì§ë ¬íëë©´ ë¤ì ì½ê¸°ë ëì¤í¬ìì ë¤ì ì§ë ¬í를 í´ì í©ëë¤. ì´ ëª¨ëë ë©ëª¨ë¦¬ ì¬ì©ì ìµìííì§ë§ ì±ë¥ ë¹ì©ì´ ë°ìí©ëë¤. -
cache.maxMemoryGenerations: 1: íëª©ì´ ì§ë ¬íëê³ íë ì´ìì ì»´íì¼ì ì¬ì©ëì§ ìì¼ë©´ ë©ëª¨ë¦¬ ìºììì íëª©ì´ ì ê±°ë©ëë¤. ë¤ì ì¬ì©íë©´ ëì¤í¬ìì ì§ë ¬í í´ì ë©ëë¤. ì´ ëª¨ëë ë©ëª¨ë¦¬ ìºìì íì± í목ì ì ì§íë©´ì ë©ëª¨ë¦¬ ì¬ì©ëì ìµìíí©ëë¤. -
cache.maxMemoryGenerations: 0ë³´ë¤ í° ìì ì«ìë GC ìì ì ëí ì±ë¥ ë¹ì©ì´ ììµëë¤. ì«ìê° ì¦ê°í ìë¡ ë®ìì§ëë¤.
cache.maxMemoryGenerationsì 기본ê°ì modeì ë°ë¼ ë¬ë¼ì§ëë¤.
| 모ë | ê¸°ë³¸ê° |
|---|---|
"production" | Infinity |
"development" | 5 |
"none" | Infinity |
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
maxMemoryGenerations: Infinity,
},
};cache.memoryCacheUnaffected
ë³ê²½ëì§ ìì 모ëì ìºì를 ê³ì°íê³ ë³ê²½ëì§ ìì 모ëë§ ì°¸ì¡°í©ëë¤. ì´ë cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ìì¼ë©°, experiments.cacheUnaffectedê° íì±íëì´ ìì´ì¼ ì¬ì©í ì ììµëë¤.
- Type:
boolean - v5.54.0+
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
memoryCacheUnaffected: true,
},
};cache.name
string
ìºìì ì´ë¦ì
ëë¤. ì´ë¦ì´ ë¤ë¥´ë©´ 공존íë ìºìê° ë¬ë¼ì§ëë¤. 기본ê°ì ${config.name}-${config.mode}ì
ëë¤. ë
립ì ì¸ ìºìê° ìì´ì¼íë ì¬ë¬ê°ì ì¤ì ì´ ìì ë cache.nameì ì¬ì©íë ê²ì´ ì¢ìµëë¤.
cache.nameì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
name: "AppBuildCache",
},
};cache.profile
boolean = false
'filesystem' íì
ì ê°ë³ ìºì í목ì ëí ìì¸í íì´ë° ì 보를 ì¶ì íê³ ê¸°ë¡í©ëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
profile: true,
},
};cache.readonly
boolean 5.85.0
webpackì´ ìºì를 íì¼ ìì¤í
ì ì ì¥íì§ ëª»íëë¡ í©ëë¤. cache.type === "filesystem" ë° cache.store === 'pack'ì¸ ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
export default {
// ...
cache: {
type: "filesystem",
store: "pack",
readonly: true,
},
};cache.store
string = 'pack': 'pack'
cache.storeë íì¼ ìì¤í
ì ë°ì´í°ë¥¼ ì ì¥í ì기를 webpackìê² ìë ¤ì¤ëë¤.
'pack': 모ë ìºì ë í목ì ëí´ ì»´íì¼ë¬ê° ì í´ ìí ì¼ ë ë°ì´í° ì ì¥
cache.storeë cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
store: "pack",
},
};cache.type
string: 'memory' | 'filesystem'
cache íì
ì ë©ëª¨ë¦¬ ëë íì¼ ìì¤í
ì¼ë¡ ì¤ì í©ëë¤. memory ìµì
ì ê°ë¨íë©° webpackì ìºì를 ë©ëª¨ë¦¬ì ì ì¥íëë¡ ì§ìíê³ ì¶ê° ì¤ì ì íì©íì§ ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "memory",
},
};cache.version
string = ''
ìºì ë°ì´í°ì ë²ì ì ëë¤. ë¤ë¥¸ ë²ì ììë ìºì를 ì¬ì¬ì©íê³ ê¸°ì¡´ ì½í ì¸ ë¥¼ ì¬ì ì í ì ììµëë¤. ìºì ì¬ì¬ì©ì íì©íì§ ìë ë°©ìì¼ë¡ ì¤ì ì´ ë³ê²½ë ê²½ì° ë²ì ì ì ë°ì´í¸íì¸ì. ì´ê²ì ìºì를 무í¨íí©ëë¤.
cache.versionì cache.typeì´ 'filesystem'ì¼ë¡ ì¤ì ë ê²½ì°ìë§ ì¬ì©í ì ììµëë¤.
webpack.config.js
export default {
// ...
cache: {
type: "filesystem",
version: "your_version",
},
};Setup cache in CI/CD system
íì¼ ìì¤í ìºì를 ì¬ì©íë©´ CIì ë¹ë ê°ì ìºì를 ê³µì í ì ììµëë¤. ìºì를 ì¤ì íë ¤ë©´,
- CIìë ë¹ë ê°ì ìºì를 ê³µì íë ìµì ì´ ìì´ì¼ í©ëë¤.
- CIë ëì¼í ì ë ê²½ë¡ìì ìì ì ì¤íí´ì¼ í©ëë¤. Webpack ìºì íì¼ì ì ë ê²½ë¡ë¥¼ ì ì¥í기 ë문ì ì¤ìí©ëë¤.
GitLab CI/CD
ì¼ë°ì ì¸ ì¤ì ì ë¤ìê³¼ ê°ìµëë¤.
variables:
# "main" ë¸ëì¹ ìºì를 ì¬ì©í기 ìí í´ë°±, GitLab Runner 13.4 íì
CACHE_FALLBACK_KEY: main
# ì´ê²ì webpack ë¹ë ìì
ì
ëë¤
build-job:
cache:
key: "$CI_COMMIT_REF_SLUG" # ë¸ëì¹/íê·¸ ì´ë¦
paths:
# ìºì ëë í°ë¦¬
# ì´ ìì
ìì "npm ci"를 ì¤ííê±°ë 기본 ìºì ëë í°ë¦¬ë¥¼ ë³ê²½íì ììëì§ íì¸íì¸ì
# ê·¸ë ì§ ìì¼ë©´ "npm ci"ê° ìºì íì¼ì ì 리í©ëë¤.
- node_modules/.cache/webpack/Github actions
- uses: actions/cache@v3
with:
# ìºì ëë í°ë¦¬
path: node_modules/.cache/webpack/
key: ${{ GITHUB_REF_NAME }}-webpack-build
# "main" ë¸ëì¹ ìºì를 ì¬ì©í기 ìí í´ë°±
restore-keys: |
main-webpack-build


