Commit Graph

276 Commits

Author SHA1 Message Date
alexander.akait 0798a75f71 refactor: update comments 2023-06-13 23:48:58 +03:00
alexander.akait 5f56793ad7 test: more 2023-06-13 20:09:30 +03:00
alexander.akait 3c4c535dd0 test: more 2023-06-13 19:34:05 +03:00
alexander.akait 805b9b61d4 fix: prefer relative 2023-06-13 19:15:16 +03:00
alexander.akait 57318df065 test: more 2023-06-13 19:07:42 +03:00
alexander.akait fcbbacf730 refactor: logic 2023-06-12 21:55:52 +03:00
Burhanuddin Udaipurwala dcfa51869b fix: resolver options 2023-06-12 19:27:38 +05:30
Burhanuddin Udaipurwala 8234b14935 fix: move resolution to by dependency 2023-06-08 09:39:15 +05:30
Burhanuddin Udaipurwala 4db1194c3b fix: dont resolve css field 2023-06-07 21:53:19 +05:30
Burhanuddin Udaipurwala 9e896d2b0b feat: style field resolution 2023-06-07 20:53:54 +05:30
alexander.akait 615af4a47b feat: allow to setup dynamic import in worker 2023-05-31 18:00:08 +03:00
alexander.akait 65ee99d136 feat: support `environment` in loader context 2023-05-31 17:59:55 +03:00
Sean Larkin 557ea853ef
Merge pull request #15470 from webpack/feat/add-readonly-cache-mode
feat: add readonly cache mode
2023-05-31 07:43:51 -07:00
alexander.akait 5c55c19c9b fix(types): regression with mini-css-extract-plugin 2023-05-25 19:41:29 +03:00
Shipov Mikhail 85a963a67b feat: add readonly flag for filesystem cache 2023-05-25 03:28:35 +03:00
alexander.akait 8f860a32d7 refactor: `strict` for config 2023-05-24 00:25:06 +03:00
Burhanuddin Udaipurwala ace1d93503 docs: add comment for todo 2023-05-16 10:05:58 +05:30
Burhanuddin Udaipurwala 8d75f3f751 feat: update defaults 2023-05-16 10:02:17 +05:30
Sean Larkin e958ac552b refactor(types): Improve module type strictness and refactor module type string usages in module subclasses 2023-05-04 23:19:11 +00:00
Michael Zlatkovsky 2203e24900 Add option to continue on trusted-types policy-creation failure
Webpack already allows for specifying a trusted-types policy name. However, its current implementation is such that if a call to trustedTypes.createPolicy fails, the code will immediately stop executing. This isn't necessarily desirable, as an application could be in the early phases of rolling out trusted types, and thus have the CSP rule for trusted-types LibraryA LibraryB etc, BUT have require-trusted-types-for 'script' be in "report only" mode (Content-Security-Policy-Report-Only). In such a configuration, and when the webpacked code is dynamically-loaded into an application, adding the policy name to the webpack config will break old versions.

This PR keeps the original behavior, but introduces a new option for onPolicyCreationFailure: "continue" | "stop" (with "stop" remaining the default). If a developer chooses the "continue" option, the policy-creation will be wrapped in a try/catch. There is no security risk to this, since for host applications that DO have strict enforcement of trusted-types, the code will simply fail when the dangerous sink is used (e.g., when doing parseFromString). And likewise, wrapping in try/catch and doing nothing on catch is OK, because the code already deals with the possibility of the trustedTypes API not being available on the browser.
2023-05-02 10:12:56 -07:00
Sean Larkin fa4cbf11a1 add more module type constants, use them across codebase 2023-03-31 10:56:32 -07:00
Thomas Tay 895df2a5a1 Worker public path changes 2022-10-21 16:30:43 -07:00
Ivan Kopeykin 1857792032 fix normalization 2022-07-09 03:23:21 +10:00
Ivan Kopeykin c82dc1eee4 Merge branch 'main' into support-create-require
# Conflicts:
#	declarations/WebpackOptions.d.ts
#	lib/config/defaults.js
#	schemas/WebpackOptions.check.js
#	schemas/WebpackOptions.json
#	test/Defaults.unittest.js
#	test/__snapshots__/Cli.basictest.js.snap
#	types.d.ts
2022-05-10 13:48:43 +03:00
Tobias Koppers e2df0ddd92
Merge pull request #15494 from webpack/feature/global-options-for-dynamic-import
add parser options for dynamic import
2022-05-10 12:44:52 +02:00
Ivan Kopeykin d6d6fb584d Merge branch 'main' into feature-14072
# Conflicts:
#	lib/DependencyTemplate.js
#	lib/javascript/JavascriptGenerator.js
#	schemas/WebpackOptions.check.js
#	types.d.ts
2022-04-05 09:34:50 +03:00
Ivan Kopeykin ee911c6aae add createRequire javascript parser option 2022-03-28 17:16:31 +03:00
Ivan Kopeykin 5a9ead926a fix discussion 2022-03-15 16:47:07 +03:00
Tobias Koppers f43047c4c2
Merge pull request #15002 from TrickyPi/fix-14927
Fix 14927
2022-03-15 11:44:23 +01:00
Ivan Kopeykin 62d50bad4b add parser options for dynamic import
- add dynamicImportMode for ContextModule
- add dynamicImportPrefetch for prefetch order
- add dynamicImportPreload for preload order
2022-03-09 10:27:02 +03:00
Tobias Koppers bd35396503 handle more cases with an regexp 2022-02-10 13:06:10 +01:00
TrickyPi d575996433 fix: exclude [name] placeholder when getting uniqueName 2022-02-09 11:11:46 +08:00
Ivan Kopeykin 75838c3f70 fix discussion 2022-02-04 17:56:47 +03:00
Ivan Kopeykin b254f350a7 update dynamicImport default, add test case 2022-02-03 15:11:43 +03:00
Ivan Kopeykin 3f10a17e2f set output.environment.module=true when output.module enabled 2022-02-02 10:13:20 +03:00
Ivan Kopeykin 232403c5e8 fix discussions 2022-01-28 12:00:53 +03:00
Ivan Kopeykin c09e82fcfe add importMeta to JavascriptParserOptions:
- enable/disable import.meta parsing
- when disabled insert output.importMetaName
2022-01-27 22:54:47 +03:00
pavelsavara 73bb43139d - add new config section importMeta
- use it in ImportMetaPlugin to switch it off as necessary
2022-01-25 16:08:56 +01:00
Tobias Koppers 1489b91a98 allow to generate only exports for css in node
add more options to the DeterministicModuleIdsPlugin to allow to opt-in into a fixed mode

optimize module iterations for module id assignment
2022-01-19 15:17:01 +01:00
Tobias Koppers 16784692d3 add `output.cssChunkFilename` 2021-12-17 12:18:01 +01:00
Tobias Koppers 453e5cac05 add support for :export {} block 2021-12-14 16:21:32 +01:00
Tobias Koppers 77b5589c1a css generation and hmr 2021-12-03 08:46:22 +01:00
Ivan Kopeykin c243a4b022 Merge branch 'main' into feature-14072
# Conflicts:
#	schemas/WebpackOptions.check.js
2021-11-30 13:56:01 +03:00
Ivan Kopeykin 3feab5bc72 set hashDigestLength=16 for futureDefaults 2021-11-29 22:12:02 +03:00
Tobias Koppers 81f6c5b61c
Merge pull request #14718 from webpack/fix-managed-path
fix regexp in managed paths
2021-11-12 14:42:05 +01:00
Ivan Kopeykin adea157a91 fix regexp in managed paths 2021-11-12 15:36:03 +03:00
Tobias Koppers 9bb5651e6a add `asyncChunks: boolean` option to disable creation of async chunks 2021-11-10 15:04:44 +01:00
Mark Molinaro 0f22db981d Fix names of options to match the exported types 2021-11-06 00:01:21 +00:00
Tobias Koppers f9e6b682ab make exportsPresence strict by default in future 2021-11-05 16:13:49 +01:00
Tobias Koppers 7afcc5d4ff allow to disable some deprecations
add `experiments.backCompat: false` (default in `experiments.futureDefaults`)
remove unused `experiments.asset`
enable `experiments.topLevelAwait` and `experiments.asyncWebAssembly` by default in `experiments.futureDefaults`
2021-11-05 09:54:51 +01:00
Tobias Koppers d9c592738a refactor and add test cases
add `parser.exportPresence`, `parser.importExportPresence`, `parser.reeexportExportPresence` `"error" | "warn" | "auto" | false`
2021-11-02 18:29:47 +01:00
Tobias Koppers e189971705 Merge branch 'main' into mamolin/allow-ignore 2021-11-02 13:46:25 +01:00
Ivan Kopeykin 166be712c0 Merge branch 'main' into feature-14072
# Conflicts:
#	lib/dependencies/CachedConstDependency.js
#	schemas/WebpackOptions.check.js
2021-10-30 21:36:39 +03:00
Tobias Koppers ae52a74802 improve buildHttp
allow multiple configurations to write to the same lockfile
add allowedUris for allowlisting
add schema validation
2021-10-19 09:21:05 +02:00
Tobias Koppers 5e16d642ad allow RegExp as managed and immutable paths
add all node_modules as managedPaths in futureDefaults
2021-10-18 22:56:41 +02:00
Mark Molinaro b422943d2a Limit scope of changes to just HarmonyExportImportedSpecifierDependencies 2021-10-07 20:55:49 +00:00
Tobias Koppers 3b48429eb5 add MemCache for memory caching per module which is invalidated when module or any referenced modules changes
add `experiments.cacheUnaffected`
add `cache.cacheUnaffected` (type: memory) resp `cache.memoryCacheUnaffected` (type: filesystem)
2021-09-24 15:23:29 +02:00
Tobias Koppers da8e93af33 use xxhash64 for future defaults 2021-09-23 15:04:22 +02:00
Ivan Kopeykin 6c3a04d5ce add node-module option for node.__file/dirname
evaluate __filename and __dirname for common js modules when output.module to
fileURLToPath(import.meta.url) and fileURLToPath(import.meta.url + "/..") respectively
2021-09-14 16:50:03 +03:00
Ivan Kopeykin 5592f6616f add experiments.futureDefaults
futureDefaults applies next major defaults
adds node.global=warn
node.__filename=warn-mock
node.__dirname=warn-mock
2021-09-14 11:29:57 +03:00
Tobias Koppers 60408e1136 add importModule to loader context by default
always enable experiments.executeModule and remove it
2021-09-02 16:27:39 +02:00
Tobias Koppers abe5005aec disable cache compression by default
it has a negative performance impact in many cases
2021-08-10 13:04:43 +02:00
Tobias Koppers b6609a4f6b add `experiments.buildHttp`
allows to build remote resources
stores remote resources in a lockfile
2021-08-05 15:47:18 +02:00
Sven Sauleau 6c50c81350 Revert "Revert "Merge pull request #12278 from xtuc/sven/import-assertions""
This reverts commit 61946b7c46.
2021-07-24 23:28:30 +01:00
Tobias Koppers 61946b7c46 Revert "Merge pull request #12278 from xtuc/sven/import-assertions"
This reverts commit df02bc6c0a, reversing
changes made to a6f341e243.
2021-07-16 21:54:21 +02:00
Tobias Koppers 7f22e4721f match on asserts
change Map to Record
improve test case
2021-07-16 13:17:20 +02:00
Sven Sauleau b166f46f2c parse import assertions 2021-07-16 13:14:54 +02:00
Tobias Koppers 492055ae90 add cache compression 2021-07-02 07:05:13 +02:00
Tobias Koppers f7766875bc
Merge pull request #13649 from webpack/cache/automatic-store
store cache after large changes
2021-06-28 17:35:14 +02:00
Tobias Koppers 142bc5610f store cache after large changes
detect larger changes automatically and use shorter timeout
2021-06-28 11:35:14 +02:00
Tobias Koppers 15408018cb partially fix test cases 2021-06-24 10:05:37 +02:00
Tobias Koppers 4da99d8254 add `module` library support, test and example
add test cases for `experiments.outputModule`
2021-06-23 14:49:14 +02:00
Tobias Koppers 973edfbd1b support data urls as input in `new URL` 2021-05-19 11:30:09 +02:00
Tobias Koppers b0fa9ccada pretty files 2021-05-11 09:31:46 +02:00
Tobias Koppers 88da3f8ed2 normalize output.trustedTypes to an object 2021-05-10 10:34:21 +02:00
Tobias Koppers bb8ba1cd05 disable trustedTypes by default
allow to pass a boolean as trustedTypesPolicy
2021-05-10 09:02:46 +02:00
Krzysztof Kotowicz c816c135ca Removed a deprecated createURL function reference. 2021-05-04 16:06:37 +02:00
Tobias Koppers 9b57c3cb56 avoid complex "by exports" splitting for splitChunks in development mode 2021-04-28 09:10:44 +02:00
Tobias Koppers 766be5a3fd add cache.profile flag for more info about (de)serialization timings 2021-04-28 09:10:43 +02:00
Tobias Koppers be66dc6242 collect memory cache faster when using filesystem cache 2021-04-20 15:40:06 +02:00
Tobias Koppers 177736f59c avoid leaking unused memory in buffer backing stores in development mode 2021-04-20 15:22:16 +02:00
Tobias Koppers 21bc6e715b add support for a pseudo `.webpack[type]` extension allows to set module type when no other type is set from module.rules 2021-04-12 12:27:54 +02:00
Tobias Koppers f64f837629 tty detection uses provided stream 2021-04-06 15:23:22 +02:00
Tobias Koppers 4e117781e8 improvements
add appendOnly flag
add custom console
add custom stream
2021-04-06 15:20:27 +02:00
Hyeonmin Park 72ba68cc78 feat: add colors flag to infrastructureLogging 2021-04-04 14:28:31 +09:00
Tobias Koppers c84329f73c add GC to the memory cache and make it configurable
memory GC happens by default when persistent cache is enabled and in development mode
otherwise memory cache is kept forever

make maxAge for persistent cache configurable
GC the oldest content file even if it's not touched (to keep cache size small)

filesystem cache will now no longer cache in memory, but restore items from disk again when it was persisted
2021-04-01 17:12:53 +02:00
Tobias Koppers c18b3c53e5
Merge pull request #12832 from webpack/bugfix/array-default-fallback
fix array expansion when using "..."
2021-03-08 10:51:34 +01:00
Tobias Koppers e63e733713 fix array expansion when using "..." 2021-03-08 09:41:11 +01:00
Tobias Koppers 8dcb90dbbd avoid making the package.json in context a build dependency 2021-03-06 16:36:14 +01:00
Tobias Koppers 44b4e25b98 fixes for electron target
electron has `importScripts` in worker
only choose a chunkLoading which fits to the chunkFormat
prefer fetch wasm loading over node wasm loading
2021-02-15 17:19:08 +01:00
Tobias Koppers 0e63c0db0a fix infinite loop in defaulting 2021-02-05 20:09:50 +01:00
Bogdan Chadkin 2fa807ee42 Fix paren 2021-02-02 16:22:36 +03:00
Bogdan Chadkin 93ac58c64e Find package.json manually 2021-02-02 16:01:20 +03:00
Bogdan Chadkin 5717d826fc Suppress type error 2021-01-31 17:14:53 +03:00
Bogdan Chadkin b837b4c6d5 Replace pkg-dir with escalade
Escalade is small alternative to pkg-dir, find-up etc. without
dependencies. It's already used by browserslist.
2021-01-30 19:05:46 +03:00
Tobias Koppers 013ca3bdd7 add commonjsMagicComments options
move javascript related options from 'module' to 'module.parser.javascript'
2021-01-20 20:19:49 +01:00
Tobias Koppers aac7f2e619 allow to configure parsers and generators globally
get plugin schemas from root schema
normalize module.parser/generator
add test case
2021-01-05 12:08:30 +01:00
Tobias Koppers d46f945572 fix problem when HMR and different runtimes
allow HMR to work in WebWorkers too
2020-11-28 13:53:32 +01:00
Tobias Koppers e1b5a78a24 add optimization.sideEffects: "flag" and use this by default
analysing for side effects cause unnecessary changes in parent modules and we want to avoid that in development
2020-10-27 06:50:07 +01:00
Maya 906a447fab Fix require handling with electron; fixes #11599 2020-10-08 01:06:31 +02:00
Tobias Koppers 68f0dbe748 allow plugins to modify the default size types for splitChunks 2020-09-29 14:34:59 +02:00
Tobias Koppers 4ea79e0683 update enhanced-resolve and webpack-sources
add resolve.preferRelative
set preferRelative for new URL() and new Worker() to fix relative requests
2020-09-28 20:43:03 +02:00
Tobias Koppers 7597fe3baf make browserslist the default target when browserslist config is available 2020-09-28 13:48:13 +02:00
Tobias Koppers d6c7adf3fb throw error when no browserslist config found 2020-09-28 11:39:52 +02:00
Sergey Melyukov eb7e5c0fe9 (fix): remove path to browserslist module 2020-09-24 15:08:09 +03:00
Sergey Melyukov 3996c7d6d4 (fix): remove browserslist from default 2020-09-24 14:50:08 +03:00
Sergey Melyukov bdf3529021 (feat): improve browserslist support 2020-09-24 14:33:09 +03:00
Tobias Koppers f263359fd8 use output.importMetaName for import.meta 2020-09-18 10:55:37 +02:00
Tobias Koppers 5cf0b8288c improve detection when auto publicPath can be used 2020-09-18 10:31:07 +02:00
Ivan Kopeykin 580de0873a update publicPath
- support option output.publicPath="auto"
- add test cases
- render import.meta.url for output.scriptType="module"
2020-09-15 00:27:38 +03:00
Tobias Koppers bbdb33a5cf rename output.environment.import -> output.environment.dynamicImport 2020-09-11 23:11:02 +02:00
Tobias Koppers 7e85649492 improve target options
infer target properties from different targets and fill defaults from that

custom targets can now be created via `target: false` and a plugin (similar to the other options)

add stubs from universal chunk/wasm loading and module chunk format

add externalsPresets.electron and externalsPresets.electronRenderer

node.__file/dirname: "eval-only"
2020-09-10 11:42:09 +02:00
Tobias Koppers 48010fb955 replace output.ecmaVersion with output.environment and more detailed flags 2020-09-10 11:12:28 +02:00
Tobias Koppers 730aefef37
Merge pull request #11412 from webpack/experiments/enable-mjs
enable mjs experiment
2020-09-10 10:57:36 +02:00
Tobias Koppers eec6fbdd7c extract loader.target from target option 2020-09-09 19:04:30 +02:00
Tobias Koppers 817c1bf9c7 move default externals from target into externalsPresets option 2020-09-09 15:18:59 +02:00
Tobias Koppers aa67a435a4 refactor wasm loading from target into output.wasmLoading option
allow entry specific wasm loading
2020-09-09 11:20:37 +02:00
Tobias Koppers ed06a7f83a new Worker() support
add support for async anonymous entrypoints from inside the codebase
add worker example
move entry options into Entrypoint and receive them from there
2020-09-08 07:37:20 +02:00
Tobias Koppers 2d4c9da6a6 enable mjs experiment 2020-09-07 23:15:24 +02:00
Tobias Koppers 0111405198 enable asset experiment 2020-09-03 14:19:09 +02:00
Tobias Koppers 312e2ab587 Merge branch 'master' into feature/asset-url 2020-08-28 20:54:50 +02:00
Tobias Koppers 3c94cad7f1 use import-scripts chunk loading for webworker target 2020-08-28 11:27:32 +02:00
Tobias Koppers d5d2e3f244 use "self" as globalObject for web-like targets 2020-08-28 11:27:31 +02:00
Tobias Koppers 07d863e14c implement enabledChunkLoadingTypes approach
allow chunkLoading per entry
allow custom library/chunkLoading types
2020-08-28 10:59:37 +02:00
Tobias Koppers 805d26b0ae unify config options for jsonpFunction and chunkLoadFunction to chunkLoadingGlobal
rename hotUpdateFunction to hotUpdateGlobal
2020-08-28 10:58:00 +02:00
Tobias Koppers d6e637f33c add "snapshot" configuration to allow to configure how snapshots are created
expose snapshot options for module, resolve, buildDependencies and resolveBuildDependencies
move managedPaths and immutablePaths from config.cache to config.snapshot
add timestamp + hash snapshotting mode
use timestamp + hash mode by default in production and for buildDependencies
2020-08-26 01:27:13 +02:00
Tobias Koppers db36afea4d
Merge pull request #11333 from chenxsan/feature/output-charset
add output.charset option
2020-08-19 15:01:06 +02:00
Tobias Koppers b929d4cdce calculate real content hash for assets after asset processing 2020-08-18 22:07:24 +02:00
Tobias Koppers 71cf7f4dc8 add support for reexporting in CommonJS
and necessary refactoring + fixes for that
2020-08-17 21:32:47 +02:00
chenxsan fd19fa90b8 add output.charset option 2020-08-17 20:25:27 +08:00
Ivan Kopeykin 4157166263 Merge branch 'master' into feature/asset-url
# Conflicts:
#	test/Defaults.unittest.js
2020-08-16 15:47:05 +03:00
Ivan Kopeykin 69d69d6003 fix defaults: remove test condition for dependency=url 2020-08-06 21:07:18 +03:00
Ivan Kopeykin fcac182805 match dependency with Rule 2020-08-06 02:08:06 +03:00
Ivan Kopeykin ddc83b0d70 feat: url assets 2020-08-05 00:55:38 +03:00
Tobias Koppers a348f9558d
Merge pull request #10457 from webpack/feat-support-query-for-asset-modules
feat: support `[query]` for asset modules
2020-08-04 16:00:55 +02:00
Tobias Koppers dfc8e35f2d enable experiments.importAsync by default
remove experiments.importAwait
2020-08-04 00:47:08 +02:00
evilebottnawi 70b44a7f86 feat: support `[query]` for asset modules 2020-08-03 23:08:01 +02:00
Tobias Koppers e16bdfda6c refactor used exports analysis, hashing, code generation, optimizations
to keep track of runtimes, used exports depending on runtime

modules can have different hashes and generated code depending on runtime
chunks are only considered as equal for MergeDuplicateChunks and SplitChunks when exports used in contained modules are equal
added `optimization.usedExports: "global"` to opt-out from used exports analysis per runtime
added `splitChunks.usedExports` and `splitChunks.cacheGroups[x].usedExports` to enable/disable used exports comparing for modules
`splitChunks.usedExports` defaults to `true` in production
2020-07-27 22:40:44 +02:00
Tobias Koppers 1179a3eaab
Merge pull request #11188 from webpack/feature/mjs
improve compatibly with node.js ESM
2020-07-20 12:18:21 +02:00
Tobias Koppers f65adade96 deprecate optimization.noEmitOnErrors in favor of optimization.emitOnErrors 2020-07-20 08:40:31 +02:00
Tobias Koppers abb2a29748 improve wasm + mjs handling, remove .mjs from extensions 2020-07-17 15:57:56 +02:00
Tobias Koppers 205bbb4c0d improve compatibly with node.js ESM
improve experiments.mjs to be more compatibly with node.js ESM
  - add support for `type: "module"` in package.json
  - add support for `*.cjs`
  - enable strict ESM for data uris with `text/javascript` or `application/javascript`
  - disallow not fully specified requests in imports `*.mjs` or `type: "module"`

add `descriptionData` rule condition to match package.json info
fix passing resolveOptions along context modules
2020-07-17 13:58:29 +02:00
Tobias Koppers 336715f878 Only apply default js extensions when using a JS dependencyType 2020-07-15 14:13:34 +02:00
Tobias Koppers 565724a045 type fixes 2020-07-15 14:13:33 +02:00
Tobias Koppers 4e32a3f3de performance improvements
only add `browser` condition on web targets
default options should not share objects
check for "..." from reverse as this is more likly
2020-07-15 14:13:33 +02:00
Tobias Koppers 0d857e3942 Improve cleverMerge to respect byDependency order correctly
Allow to use "..." in `option.resolve` too
Add "..." to schema when needed

Apply dependency specific mainFields, aliasFields and conditionNames only
for cjs and esm dependencies or when none is specified for backward-compat.
2020-07-15 14:13:31 +02:00
Tobias Koppers b60fb2742a adjust splitChunks defaults for http/2 2020-07-13 10:13:55 +02:00
Tobias Koppers 6014ca7e86 splitChunks improvements
add new splitChunks.enforceSizeThreshold option
enforces splitting on certain size (ignoring maxRequests and minRemainingSize)

reduce default for splitChunks.minSize to 20k
set default for splitChunks.enforceSizeThreshold to 50k

fix bug where sorting didn't work for minSize: 0
2020-07-13 10:12:17 +02:00
Tobias Koppers 3d36f75f88
Merge pull request #11143 from vankop/add-roots
add roots option
2020-07-09 13:15:30 +02:00
Tobias Koppers 1de9e16858 create new array in defaults 2020-07-09 08:55:15 +02:00