简单说下entry、output,然后了解下sourcemap,这个东西还是比较重要。
git仓库:webpack-demo
入口entry我们常见的其实是简写模式,我们可以使用键值对的形式来定义它,其实默认是这样的。module.exports = {
...
// 简写
entry: "./src/index.js",
// 默认
entry: {
"main": "./src/index.js",
}
...
}
输出output中filename就是打包后指定的文件名,path就是存放的位置。还有一些其他的输出名称更改的几个点: [name]就是entry里面的key键名[hash]就是一段hash值,这个还是挺常见的。const path = require("path");
module.exports = {
mode: "development",
entry: {
"app": "./src/index.js",
},
output: {
- filename: 'bundle.js',
+ filename: '[name].bundle.[hash].js',
path: path.resolve(__dirname, "dist")
}
}
app.bundle.ee39eb0347a038bf0d2f.js
header.js、content.js、footer.js的打包为三个文件。const path = require("path");
module.exports = {
mode: "development",
entry: {
"header": "./src/header.js",
"content": "./src/content.js",
"footer": "./src/footer.js",
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, "dist")
}
}
main.js输出出去,这个时候,如果某个js文件出了错,那么在浏览器中指出的这个错误位置是跟main.js相关联的,这对我们找出错误毫无意义。src/header.js中打印一行错误。然后要去webpack.config.js中把mode: "development"这行代码注释掉,因为开发模式下,默认是开启了sourcemap的。export function createHeader() {
+ console.error('这是一行错误')
const div = document.createElement("div");
div.innerText = "头部块";
div.classList.add("header");
document.body.appendChild(div);
}
sourceMap就是解决这个问题的,当浏览器抛出错误的时候可以帮我们定位到具体的js文件和行列位置。webpack中开启sourceMap是个很简单的事情: module.exports = {
mode: 'development',
// 开启sourceMap
+ devtool: 'inline-source-map',
entry: {
main: "./src/index.js"
},
output: {
publicPath:'/',
filename: "[name].bundle.js",
path: path.resolve(__dirname, "dist")
}
...
};
ok,那devtool: 'inline-source-map'中inline-source-map是个啥意思,我这里简单扯两句。
source-map,这样打包就会生成一个.map的映射文件。inline-source-map就是会把这个.map文件直接作为DataUrl插入到main.bundle.js中。
当我们在webpack.config.js中设置完sourcemap以后,打包刷新浏览器我们就可以看到打印信息变为这样,就可以很明确的帮我们定位到问题。
sorcemap做了些什么事情呢?打包后会生成一个.map的映射文件,它会将你打包后的代码映射到源代码中,与之相关关联。这样,我们就知道在源代码中出错的位置是几行几列了。sorcemap有很多的可选值,但是不用管这么多,开发模式中我们设置为inline-source-map或者source-map,生产模式中我们将其设置为cheap-module-source-map即可,react和vue都是这么设置的。作为一名新手,模仿是最有效的学习方式了。entry算是比较简单,但是output今天文章中提及的只是冰山一角,后面根据需求再设置,下面参考链接也可以去详细了解下它的一些配置项。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/97/viewspace-2825043/ ,如需转载,请注明出处,否则将追究法律责任。