webpack4.x的使用历程
第一次接触的webpack是在一个3.x的资料中 在4.x的运用中遇到了好多的坑,我就以小白的身份把我使用webpaxk的过程分享出来,其中很多不足欢迎大佬们指正
node安装不再赘述
一.安装
- npm i webpack –D(在项目中安装)"webpack": "^4.16.5"
- npm install webpack-cli –g 4.x之后要单独安装
- webpack --mode development 会自动生成一个dist文件夹并在下面生成main.js储存打包好的js文件
注意:index.js要在src文件夹在webpack默认从src文件夹下获取,不再支持 webpack a.js b.js这种方式(打包的入口文件是'./src/index.js',输出路径是'./dist/main.js')
二.初始化
npm init –y(执行默认配置) -----会生成一个package.json的文件。
三. 安装loader
*css: css-loader, css-loader;
*css中的url: url-loader(use:'url-loader?limit=??(图片大小的字节数)'), file-loader;
*字体图标:{test:/\.(ttf|eot|svg|woff|woff2)$/, use: "url-loader"},
*es6中的高级语法转换:
1.安装loader:
(1)npm i babel-core babel-loader babel-plugin-transform-runtime -D
(2)npm i babel-preset-env babel-preset-stage-0 -D
2.配置webpack
{test:/\.js$/, use: "babel-loader",exclude:/node_modules/}
3.配置babelrc
在src下新建.babelrc文件并设置
{ "presets": ["env","stage-0"], "plugins": ["transform-runtime"] }
四. vue中webpack的使用
1.安装vue的包 npm i vue -S
2.loader npm i vue-loader vue-template-compiler -D
3.新建一个vue文件并引入
import Vue from 'vue';默认引用的是vue/joson里配置的vue文 件是不全的 需要用到rende
import login from './login.vue' render: function (createElement) { return createElement(login) }//向挂载的元素中直接覆盖一个名为login的组件 简写render: c=>c(login)
五. webpack.config.js的配置
const webpack = require("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require("path");
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports ={
mode: 'development',
entry: {
index: "./src/index.js",
hw9:"./src/hw9.js"
},
output: {
filename: "js/[name]-[hash].js",
path: path.join(__dirname, "dist")
},
module: { // 处理对应模块
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader', ]//处理css
},
{test:/\.js$/, use: "babel-loader",exclude:/node_modules/},//es6
{test:/\.(jpg|png|gif|bmp|jpeg|webp|dpg)$/, use: "url-loader?limit=1079"},
{test:/\.(ttf|eot|svg|woff|woff2)$/, use: "url-loader"},
{test:/\.js$/, use: "babel-loader",exclude:/node_modules/},
{test:/\.vue$/, use: "vue-loader"}
]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new VueLoaderPlugin(),
new HtmlWebpackPlugin({ // Also generate a test.html
filename : 'index.html',
chunks : ['index'],
template: 'src/index.html'
}),
new HtmlWebpackPlugin({ // Also generate a test.html
filename : 'hw9.html',
chunks : ['hw9'],
template: 'src/hw9.html'
}),
new CleanWebpackPlugin(
['dist/!*', 'dist/!*',], //匹配删除的文件
{
root: __dirname, //根目录
verbose: true, //开启在控制台输出信息
dry: false //启用删除文件
}
)
],
devServer: {//配置此静态文件服务器,可以用来预览打包后项目
inline:true,//打包后加入一个websocket客户端
hot:true,//热加载
contentBase: path.resolve(__dirname, 'dist'),//开发服务运行时的文件根目录
host: 'localhost',//主机地址
port: 8080,//端口号
compress: true//开发服务器是否启动gzip等压缩
},
};
六. 其他详细请参考webpack 官方文档
https://webpack.github.io
https://www.webpackjs.com

浙公网安备 33010602011771号