解决的问题
修改完index.js文件后需要重新执行npm run dev重新生成转换后的js步骤
运行npm install webpack-dev-server -D命令,安装支持项目自动打包的工具修改package.json->scripts中的dev命令 "scripts":{ //script节点下的脚本,可以通过npm run执行 "dev":"webpack-dev-server" } 将src->index.html中,script脚本引用路径修改为/bundle.js运行npm run dev命令,重新打包在浏览器中访问,查看自动打包效果注意
webpack-dev-server会启动一个实时打包的http服务器webpack-dev-server打包生成的输出文件,默认放到了项目根目录中,而且是虚拟的、看不见的运行npm install html-webpack-plugin -D命令,安装生成预览页面的插件
修改webpack.config.js文件的头部区域,添加如下配置信息:
//导入生成预览页面的插件,得到一个构造函数 const HtmlWebpackPlugin = require('html-webpack-plugin') const htmlPlugin = new HtmlWebpackPlugin({ //源文件 template:'./src/index.html', //生成文件(存在内存中,目录中不显示) filename:'index.html' })修改webpack.config.js文件中向外暴露的配置对象,新增如下配置节点:
module.exports={ //插件列表 plugins:[htmlPlugin] }解决的问题
需要复制地址打开浏览器访问修改package.json的配置
//package.json中的配置 //--open 打包完成后自动打开浏览器页面 //--host 配置IP地址 //--port 配置端口 "script":{ "dev":"webpack-dev-server --open --host 127.0.0.1 --port 8888" }打包css文件
运行npm i style-loader css-loader -D命令,安装处理css文件的loader在webpack.config.js的module->rules数组中,添加loader规则如下: //所有第三方文件模块的匹配规则 module:{ rules:[ //test表示匹配的文件类型 use表示对应要调用的loader {test:/\.css$/,use:['style-loader','css-loader']} ] } 注意 use数组中指定的loader顺序是固定的多个loader的调用顺序是:从后往前调用打包less文件
运行npm i less-loader less -D命令,安装处理less文件的loader在webpack.config.js的module->rules数组中,添加loader规则如下: //所有第三方文件模块的匹配规则 module:{ rules:[ //test表示匹配的文件类型 use表示对应要调用的loader {test:/\.less$/,use:['style-loader','css-loader','less-loader']} ] }打包scss文件
运行npm i sass-loader node-sass -D命令,安装处理scss文件的loader(中文路径会安装失败)在webpack.config.js的module->rules数组中,添加loader规则如下: //所有第三方文件模块的匹配规则 module:{ rules:[ //test表示匹配的文件类型 use表示对应要调用的loader {test:/\.scss$/,use:['style-loader','css-loader','sass-loader']} ] }解决的问题
浏览器前缀自动添加
步骤
运行npm i postcss-loader autoprefixer -D命令在 //导入自动添加前缀的插件 const autoprefixer = require('autoprefixer') module.exports={ //挂载插件 plugins:[autoprefixer] } 在webpack.config.js的module->rules数组中,添加loader规则如下: //所有第三方文件模块的匹配规则 module:{ rules:[ //test表示匹配的文件类型 use表示对应要调用的loader {test:/\.css$/,use:['style-loader','css-loader','postcss-loader']} ] }运行npm i url-loader file-loader -D命令
在webpack.config.js的module->rules数组中,添加loader规则如下:
//所有第三方文件模块的匹配规则 module:{ rules:[ //test表示匹配的文件类型 use表示对应要调用的loader { test:/\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use:'url-loader?limit=10284988' } ] }图片大小小于limit会被转化为base64,大于或等于不会转换为base64
安装babel转换器相关的包:npm i babel-loader @babel/core @babel/runtime -D
安装babel语法插件相关的包:npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D
在项目根目录中,创建babel配置文件babel.config.js并初始化基本配置如下:
module.exports = { presets:['@babel/preset-env'], plugins:['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties'] }在webpack.config.js的modules->rules数组中,添加loader规则如下:
//exclude为排除项,表示babel-loader不需要处理node_modules中的js文件 {test:/\.js$/,use:'babel-loader',exclude:/node_modules/}运行npm i vue-loader vue-template-compiler -D命令
在webpack.config.js配置文件中,添加vue-loader的配置项如下:
const VueLoaderPlugin = require('vue-loader/lib/plugin') module.exports = { module:{ rules:[ {test:/\.vue$/,loader:'vue-loader'} ] }, plugins:[ new VueLoaderPlugin() ] }运行npm i vue -S安装vue
在src->index.js入口文件中,通过import Vue from 'vue'来导入vue构造函数
创建vue的实例对象,并指定要控制的el区域
通过render函数渲染App根组件
//导入Vue构造函数 import Vue from 'vue' //导入App根组件 import App from './components/App.vue' const vm = new Vue({ //指定要控制的el区域 el:"#app", //通过render函数渲染App根组件 render:h=>h(App) })修改package.json文件配置打包命令
//在package.json文件中配置webpack打包命令 "scripts":{ "build":"webpack -p" }