什么是 entry,output
entry
告诉webpack使用哪个文件作为构建依赖图的起点,比如指定app.js作为entry,webpack会分析app.js使用到的模块,并解析模块中使用到的模块以此类推,最终将前端静态资源按一定规则打包成一个或多个静态文件。
多个entry
一个项目可能有多个入口,首先多页面程序可能有多个entry,SPA应用也可能有多个入口(框架代码一个entry,业务代码一个entry)
entry的值
可以是 字符串 || 数组 || 对象 无论采用何种方式,entry都是入口的文件路径。
webpack.conf.js
module.exports ={
// entry: './app.js' //字符串
//entry: ['./app.js', './index.js'] 数组形式
// 推荐对象格式 更加清晰和灵活
entry: {
Index:'./index.js',
app:'./app.js'
}
}
output
一个模块化开发项目开发完成后到上线前,一般需要借助webpack打包生成dist目录,比如我们使用vue-cli工具执行npm run build后会在项目的主目录下生成dist目录(如果不了解vue-cli没关系,暂时知道这个事实即可),那么这个dist目录以及打包后的文件名就是借助vue-cli已经内置好的webpack配置文件,指定了dist目录,和打包后生成的文件名。
简单来说,output就是告诉webpack通过入口entry按照模块依赖关系将打包好后的文件输出到哪里(指定文件夹或位置)以及文件名(打包后的文件bundles叫什么)。
最后线上环境会使用打包好的文件。
const config = {
entry: {
app: './xx/app.js' // 入口文件路径 并不一定是'./app.js'
},
output: {
path: '/home/xx', // 绝对路径
// filename: 'bundle.js'
filename: '[name].[hash:7].js' //采用hash动态生成文件名
}
}