1.webpack基础介绍:
webpack可以看做是模块的打包机,主要做的事情是,分析项目结构,将一些项目模块找出来,打包成浏览器可以执行的js代码,并把浏览器一些不认识的拓展语言(scss,jsx,vue等)转换成符合浏览器认识的语言。
2.webpack4的基本配置项讲解:
`在package.json文件里手动配置scripts脚本中:
//--watch:时刻监听代码
"dev":"webpack -- mode development --watch",
"build":"webpack --mode production"
//(dev为开发模式,build为生产模式)`
npm run dev (出现dist文件夹)
3.入口与出口及单页面与多页面的配置文件(改文件名字)
新建一个文件:webpack.config.js
`里面内容写:
//webpack配置文件
// 导出
module.exports={
//配置入口
entry:{
//要写成绝对路径,__dirname指定路径
'index1':__dirname+"/src/main.js",
//'index2':_dirname+"/src/main2.js",
}// 可以配置多个入口
// 配置出口
output:{
//输出到哪
path:_dirname+"/dist",// 打包后的文件存放的地方
filename:"[name].js",// 打包后输出文件的文件名
// 没有dist文件夹,但生成在内存中
publicPath:"/dist/" //虚拟路径,可以访问到我们生成的文件,公共目录
}
}`
4.webpack-dev-server:自动刷新浏览器,热更新
webpack.config.js文件里面写
// localhost:8080,反向代理....
devServer:{
contentBase:'./', //根目录地址,相对路径
port:8080,
proxy:{
},
inline:true // 实时刷新
}
然后在packpack.json文件中,在scripts脚本里面添加
"start":"webpack-dev-server --mode development"
5.source-map:映射源代码,方便调试
在webpack.config.js里面写一句:
"devtool":"source-map" //映射源代码目录,方便调试
6.loaders配置:加载器,翻译器(ps:loader有很多,只挑一些常见的)
在webpack.config.js添加:
module: {
rules:[
// loader 规则
{
test:/\.css$/,
loader:'style-loader!css-loader' // 添加对样式表的处理,内联样式
// loader:'style-loader!css-loader!postcss-loader' //处理css兼容
}
]
}
安装:
cnpm i --save css-loader style-loader
在webpack.config.js添加:
module: {
rules:[
// loader 规则
{
test:/\.scss$/,
loader:'style-loader!css-loader!sass-loader' // 添加对样式表的处理,内联样式
// loader:'style-loader!css-loader!postcss-loader'
}
]
}
安装:
cnpm i --save sass-loader node-sass
在webpack.config.js添加:
module: {
rules:[
// loader 规则
{
test:/\.js$/, //随便起的test名字
exclude:/node_modules/, //排除一个
//exclude:/(node_modules|src)/, // 排除多个就这样写
loader:'babel-loader' ,
query:{
presets:['es2015']
}
}
]
}
安装:
cnpm i --save babel-loader@7 babel-core babel-preset-es2015
安装:
cnpm i --save postcss-loader postcss autoprefixer
在webpack.config.js添加:
module: {
rules:[
// loader 规则
{
test:/\.css$/,
loader:'style-loader!css-loader' // 添加对样式表的处理,内联样式
loader:'style-loader!css-loader!postcss-loader' //处理css兼容
},
{
test:/\.scss$/,
loader:'style-loader!css-loader!sass-loader' // 添加对样式表的处理,内联样式
loader:'style-loader!css-loader!postcss-loader!sass-loader'//处理css兼容
}
]
}
创建一个postcss.config.js
module.exports = {
plugins: [
// 兼到最新的100个浏览器,这样会导致代码体积变大
//require('autoprefixer')('last 100 versions')
require('aytoprefixer')(
{
browsers:[
// 兼容最新浏览器
'last 10 Chrome versions',
'last 5 Firefox versions',
'Safari >= 6',
'ie > 8',
'ios >= 8',
'Android >= 4.4'
]
}
)
]
}
在webpack.config.js添加:
//webpack配置文件
const {VueLoaderPlugin} = require("vue-loader)
module.exports={
rules: [
{
// 处理.vue文件的loader
test:/\.vue$,
use:'vue-loader'
}
]
},
//vue-loader插件:
plugins: [
new VueLoaderPlugin()
]
安装:
cnpm i --save vue-loder vue-template-compiler