webpack将打包目录下的md、html文件解析了

webpack将打包目录下的md、html文件解析了,我并没有在其他js文件中引入它们
这些解析失败的警告让我很难受

图片描述

我是不是就不应该将这些文件放在我的打包目录下?
我并没有设置这些文件的loader;

如上图的./src lazy ^\.\/.*$是从何而来的?

阅读 5.3k
1 个回答

webpack 加载不加载哪个文件, 与你把文件放在哪个目录无关, 与你设不设置 loader也无关。
webpack 打包的时候会静态代码分析:从入口文件开始, 把你require/import的文件打包。
比如 import xx from './src/xx', 那么xx.js 将会被打包,同时会打包xx.js 里面的require/import打包。
类似 ‘./src/xx’这种路径,静态分析的时候是知道文件目录的,打包没有问题。 那么假如路径里面包含变量呢? 比如

var path = ...
require('./src/' + path)

这种时候静态分析并不能确切的知道打包src下的哪个文件。此时webpack会打包src下的所有文件。 所以题主 会看到 './src ^./.*$ ' 这样的路径。
webpack内部会记录一个 文件名与 webpack内部地址的 map记录。 从而在运行的时候加载。 为了方便理解,贴一下 这种情况webpack打包之后的代码:

 (function(module, exports, __webpack_require__) {

var map = {   
    "./fd1": 0,
    "./fd1.js": 0,
    "./fd2": 1,
    "./fd2.js": 1
};
function webpackContext(req) {
    return __webpack_require__(webpackContextResolve(req));
};
function webpackContextResolve(req) {
    var id = map[req];
    if(!(id + 1)) // check for number or string
        throw new Error("Cannot find module '" + req + "'.");
    return id;
};
webpackContext.keys = function webpackContextKeys() {
    return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 4;

/***/ }),
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题