|
我们常用的webpack估计只是在vue的脚手架中进行一些简单的webpack更改,看到大段的webpack内容感到头大,但是当下越来越多的公司在岗位要求上都加上了一条能够熟悉webpack的配置,在找工作的这段时间里我决定啃一啃webpack这块老骨头。
图片:clipboard.png ![]() 我们在上边图片中能看到简单的webpack分为上述五大块。那么我们就来详细讲一下每一个是用做什么的 一、entry entry是用作webpack的入口文件,因为webpack是一个模块打包器,所以会把一切资源都当成是一个一个的模块(js、html、css图片等),会根据入口文件寻找其依赖关系,形成一颗依赖树,在遍历完成这个依赖树之后才会生成打包之后的一些资源; entry分为两种,单入口文件和多入口文件,单入口文件的写法是: module.exports = {
entry:'./src/index.js'
}多入口文件的写法是:module.exports = {
entry:{
index:'./src/index.js',
search:'./src/search.js'
}
}二、output output用来告诉webpack如何将编译后的文件输出到磁盘; output也分为单入口和多入口写法: 单入口: const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
entry:'./src/index.js', //入口文件
output:{
path:path.join(__dirname,'dist'),
filename:'index.js'
},
};多入口:const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
entry:{
indexx:'./src/index.js',
seee:'./src/search.js'
}, //入口文件
output:{
path:path.join(__dirname,'dist'),
filename:'[name].js'
},
};不同之处在于多入口文件中filename是使用了一个[name]的占位符,这个占位符是和entry对象的键名对应;三、loaders webpack开箱即用只支持JS和JSON两种文件类型,通过Loaders可以去支持其他文件类型并把他们转成有效的模块,并且添加到依赖图中;loaders本身是一个函数,接受源文件作为参数,并且返回转换的结果;loaders的写法是: const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
entry:{
indexx:'./src/index.js',
seee:'./src/search.js'
}, //入口文件
output:{
path:path.join(__dirname,'dist'),
filename:'[name].js'
},
mode:'production',
module:{
rules:[
{
test:/.js$/,
use:'babel-loader'
},
{
test:/.vue$/,
use:'vue-loader'
}
]
},
};module对象中包含一个rules的数组,数组中分为test代表编译的后缀,use是使用的loader名称四、plugins 插件用于打包输出文件的优化,资源管理和环境变量注入,plugins作用于整个构建过程;可以理解为任何loaders没办法完成的任务可以让plugins去完成; 图片:plugins.png ![]() 五、mode Mode是用来指定当前打包的环境,里边有三个值:production(生产阶段)、development(开发阶段)、none。 接下来我们写一个能够解析vue文件的webpack配置: 首先我们安装webpack 第一步:我们需要先安装node,这里我就不多做演示;第二步:我们通过 npm init -y进行安装,这里的-y是我们默认全部选择yes进行安装,安装完之后会发现目录中会出现一个package.json文件 第三步:我们安装webpack及webpack的脚手架 npm install webpack webpack-cli --save-dev第四步:我们使用 ./node_modules/.bin/webpack -v来查看我们的webpack安装版本 然后我们进行webpack的配置 第一步:创建webpack.config.js文件 第二步:安装vue、vue-loader vue-template-comiler,使用命令 npm i vue vue-loader vue-template-compiler -D进行安装 第三步:创建src文件夹,在其中创建vue文件,这里我们创建一个app.vue文件 <template>
<div class="app">
pw_msg
</div>
</template>
<script>
export default {
data(){
return {
msg:'我是一个保安'
}
}
}
</script>第四步,在src文件夹下边创建index.js文件import vue from 'vue';
import App from './app.vue';
const root = document.createElement('div');
document.body.appendChild(root);
new vue({
render:(h)=>h(App)
}).$mount(root)第五步:在我们的webpack.config.js中进行配置module.exports = {
entry:'./src/index.js',
output:{
path:path.join(__dirname,'dist'),
filename:'main.js'
},
module:{
rules:[
{
test:/.vue$/,
use:'vue-loader'
}
]
},
plugins:[
new VueLoaderPlugin()
]
}第六步:我们可以使用如下命令进行打包./node_modules/.bin/webpack但是我们看到这条代码又长还不好记,那么我们应该咋办呢? 我们可以在package.json中做如下改动 "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},我们在script下新增一条build,如上代码然后我们使用如下代码进行打包,是不是看着就很舒服了呢? npm run build打包完成之后,如何检测我们打包的是否正确呢?我们可以在dist文件夹下边创建一个html文件,将dist文件夹下的main.js通过script标签引入进去,在浏览器中即可看到效果。 这篇文章写完了,你学会了吗? |
|
| |
|
沙发#
发布于:2020-03-13 16:18
楼主写的很详细哦,666
|
|
|
|
板凳#
发布于:2020-03-13 12:45
|
|
