我已经阅读了很多次文档,但我仍然感到困惑的是,我希望(或不想要)在webpack配置中使用recordsPath
条目。有人可以用更多的外行来解释吗?
对于webpack 1.x与2.x的上述不同,答案也是如此?
答案 0 :(得分:3)
来自文档:
从/向json文件存储/加载编译器状态。这将导致 模块和块的持久ID。
预计会有绝对路径。 recordsPath用于recordsInputPath 和recordsOutputPath,如果它们未定义。
在多个之间使用热码替换时,这是必需的 调用编译器。
https://webpack.github.io/docs/configuration.html#recordspath-recordsinputpath-recordsoutputpath
举一个例子,假设一个具有以下结构的简单应用程序:
./src
├── index.js
└── test.js
./src/index.js
的位置:
require('./test.js');
和./src/test.js
只是一个空文件。
使用node.js API编译文件,例如
const webpack = require('webpack');
const webpackConfig = {
entry: {
'app': [
path.resolve(__dirname, './src')
]
},
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].js'
},
recordsPath: path.resolve(__dirname, './recordsPath.json')
};
const compiler = webpack(webpackConfig, () => {});
它会生成./recordsPath.json
:
{
"modules": {
"byIdentifier": {
"src/index.js": 0,
"src/test.js": 1
},
"usedIds": {
"0": 0,
"1": 1
}
},
"chunks": {
"byName": {
"app": 0
},
"byBlocks": {},
"usedIds": {
"0": 0
}
}
}
要了解模块ID的用例,您需要熟悉webpack捆绑脚本的方式。在上述申请的情况下,输出将等同于:
(function(modules) {
// Module resolution logic.
// Excluded for brevity.
})
([
function(module, exports, __webpack_require__) {
// ./index.js
__webpack_require__(1);
},
function(module, exports) {
// ./test.js
}
]);
正如您所看到的,在内部,webpack使用ID来引用模块。 recordsPath
公开了这些ID。