当我在output.pathinfo
中将true
设置为webpack.config.js
时,我会在输出文件中获得每个捆绑模块的深奥描述:
/* unknown exports provided */
这是什么意思?
编辑:
我一直在从typescript中找到导致webpack无法识别导出的代码(但是它能够推断出已经使用了哪些导出)。我调整了我的打字稿配置来解决这个问题(我已将module
选项设置为ES2015
)。
答案 0 :(得分:1)
output.pathinfo
为每个模块添加注释,以帮助您识别它们及其导出。您将看到模块的路径存在且在其上方,它显示模块的导出以及实际使用的模块。当模块没有导出时,它将显示onConfig
。
使用以下三个文件考虑此示例。
index.js (切入点)
unknown exports provided
<强> module.js 强>
import { one } from './module';
import printNumber from './otherModule';
printNumber(one);
<强> otherModule.js 强>
export const one = 1;
export const two = 2;
export const three = 3;
export default () => console.log('default export');
在export default number => console.log(`The number is ${number}`);
export const notUsed = 'not used';
中没有导出,评论反映了这一点。由于它没有导出,它自动意味着使用所有导出。
index.js
另一方面,/* unknown exports provided */
/* all exports used */
/*!******************!*\
!*** ./index.js ***!
\******************/
有四个导出:module.js
,default
,one
和two
。从这些导出中,只有three
用于webpack包含的任何文件中(在这种情况下,它仅在one
中导入)。评论告诉了我们这一点。
index.js
同样,/* exports provided: one, two, three, default */
/* exports used: one */
/*!*******************!*\
!*** ./module.js ***!
\*******************/
有两个导出otherModule.js
和default
,其中仅使用默认导出(再次在notUsed
中)。
index.js
请注意,/* exports provided: default, notUsed */
/* exports used: default */
/*!************************!*\
!*** ./otherModule.js ***!
\************************/
会从import X from 'module'
导入默认导出,并为其指定名称module
。
此信息在开发过程中非常有用,可以查看整个应用程序中实际使用的导出内容。在显示的示例中,很容易看到正在使用的内容,但在更大的应用程序中,您可能会发现此功能很有用。
注意:使用任何消除死代码的工具(例如UglifyJS)优化它时,将从捆绑中删除未使用的导出。