webpack配置的optimization中的usedExports与package.json中的sideEffects之间的区别究竟是什么?
optimization
usedExports
package.json
sideEffects
8xiog9wr1#
这是两码事。
将此视为Webpack的指令,以允许它执行以下两项操作:
例如,在代码中
// MODULE A export const myVariable = 10; export const myFunction1 = () => a1; export const myFunction2 = () => a2(); // MODULE B import { myVariable } from './a.js'; // MODULE C import { myFunction1 } from './a.js';
在上面的代码中启用此标志后,由于代码中没有使用myFunction2,当a.js模块被导出时,它不会被导出。下一件事它可能会尝试将myVariable重命名为单字母标识符,如a和myFunction1重命名为b或类似的。这不仅适用于您编写的模块,也适用于node_modules中的模块。
myFunction2
a.js
myVariable
a
myFunction1
b
node_modules
虽然像webpack这样的模块捆绑器足够智能,能够判断给定模块中是否存在副作用,但是提供明确的sideEffects提示可以为捆绑器增加更多的信心。进行生产捆绑时,仅当启用optimization.providedExports标志时,才使用sideEffects和usedExports。
optimization.providedExports
1条答案
按热度按时间8xiog9wr1#
这是两码事。
关于
usedExports
:将此视为Webpack的指令,以允许它执行以下两项操作:
例如,在代码中
在上面的代码中启用此标志后,由于代码中没有使用
myFunction2
,当a.js
模块被导出时,它不会被导出。下一件事它可能会尝试将myVariable
重命名为单字母标识符,如a
和myFunction1
重命名为b
或类似的。这不仅适用于您编写的模块,也适用于node_modules
中的模块。关于
sideEffects
:虽然像webpack这样的模块捆绑器足够智能,能够判断给定模块中是否存在副作用,但是提供明确的
sideEffects
提示可以为捆绑器增加更多的信心。进行生产捆绑时,仅当启用
optimization.providedExports
标志时,才使用sideEffects
和usedExports
。