作为一名前端开发人员,说到脚手架的搭建,en,真香,但是真的仅仅的就会脚手架吗?No
有时候坚决自己使用webpack来搭架子,所以不说废话了,特发此文,以供大家共同学习成长
一.
1;全局安装和项目安装
1 全局安装 npm install webpack -g (不建议使用)
2:针对项目而言 先npm init初始化项目以后
2.1 npm install --save-dev webpack
2.2 npm install --save-dev webpack-cli (4.0以下的版本不用安装webpack-cli)
3:项目中新建一个src目录 里面放一个index.js里面的内容随便写
4:在package.json中配置script中加入
"scripts": {
"build": "webpack --mode production",
"test": "echo \"Error: no test specified\" && exit 1"
},
production 可以换成development 生产模式(线上要压缩处理)和开发模式(本地随便写)
写完以后启动
运行 npm run build 就会发现项目中多出一个dist文件 里面有一个main.js
手工配置webpack
5.在项目中新建一个一个webpack.config.js文件
//写入基本配置就可以修改 入口文件
module.exports = {
entry: "./src/leson.js", //如果文件 可以修改
}
设置出口文件
var path = require("path");
module.exports = {
entry: "./src/leson.js", //如果文件 可以修改
output: {
path: path.resolve(__dirname, "dist"),
filename: "leson.js"
}
}
也可以多入口 入口需要变成变成对象写法
entry: {
home: "./src/index.js",
leosn: "./src/leson.js"
},
也可以个配置出口进行hash混淆 指定hash长度 hash:8 就表示长度为8
output: {
path: path.resolve(__dirname, "dist"),
filename: "[name].[hash:8].js"
}
更可以根据模块生成不一样的hash 使用chunkHash代替hash
也可以指定webpack.congfig.js的位置 可以修改
"build": "webpack --mode production --config scripts/webpack.config.js",
二
1:安装插件html-webpack-plugin 进行页面js自动引入更新
npm install html-webpack-plugin --save-dev
就会将指定的模板页面和指定的js引入生成到指定地方中去
1:在webpack.config.js中引入
var HtmlWebpackPlugin = require("html-webpack-plugin");
2:配置
plugins: [
new HtmlWebpackPlugin({
title: "webpack",
template: "public/index.html",
chunks: ['main']
}),
]
3:使用
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
</head>
<body>
<div>我是模板页面</div>
</body>
结果
<title>
webpacktitle
</title>
</head>
<body>
<div>我是模板页面</div>
<script type="text/javascript" src="main.1e8b9d5e.js"></script></body>
三
1:新建文件index.css 里面随便写点样式
2:在index.js中引入index.css (import "./index.css")
3:引入css-loader
npm install --save-dev css-loader
npm install --save-dev style-loader
4:配置中添加
module: {
rules: [
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
],
}
然后运行 npm run build
但是css的引入会在js中 需要分离 才符合正常的阅读习惯
安装辅助 npm install --save-dev mini-css-extract-plugin
第一步引入
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
第二步配置
new HtmlWebpackPlugin({
title: 'webpacktitle',
template: "public/index.html",
chunks: ['main']
}),
new MiniCssExtractPlugin({
filename: '[name].[hash].css'
})
第三步修改配置
rules: [{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, 'css-loader']
}, ]
四
**启动服务
安装 服务
npm install webpack-dev-server --save-dev
ps:基于express的服务器
然后在package.json中修改
"scripts": {
"build": "webpack --mode production",
"dev": "webpack-dev-server --mode production",
"test": "echo \"Error: no test specified\" && exit 1"
},
启动命名 npm run dev 就可以启动启动服务
自定义端口
在配置中
devServer: {
contentBase: './dist',
port: 1234,
open: true
}**
**
五
1:安装
npm install sass-loader node-sass --save-dev
2:配置中加入 sass 重新编译就可以了
{
test: /\.s[ac]ss$/i,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader',
],
},
六.
官方文档
https://webpack.js.org/loaders/url-loader/#root
1
安装
npm install url-loader --save-dev
2使用
rules中添加
{
test: /\.(png|jpg|gif)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: false,
name: '/img/[name].[hash:8].[ext]'
},
},
],
},
3:大图片就应该使用file-loader
安装 npm install file-loader --save-dev
配置
{
test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
},
],
},
七
1:安装转换插件
npm install --save-dev babel-loader @babel/core @babel/preset-env
2:配置 在rules中
{
test: /\.js$/,
exclude: /node_modules/, // 排除的目录
// 使用babel-loader将ES6代码转为ES5,做浏览器兼容
// 同时需要建立.babelrc文件,调用@babel/preset-env插件将E6转为E5S
loader: "babel-loader"
}
3:新建一个.babelrc的文件 里面写入
{
"presets": ["@babel/preset-env"]
}
4:重新编译在看效果 又es6的地方都变成了es5的写法
八
1:安装vue
npm i vue --save
2:在main.js中引入vue
import Vue from "vue";
new Vue({
el:"#app",
data:{
username:"leson"
}
})
页面处
<div id="app">
{{username}}
</div>
3:编译以后运行会报错
vue.runtime.esm.js:620 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
(found in <Root>)
4:原因 main引入的vue的路径 不对 不是一个相对路径 需要引入node_modules中的vue的安装目录
5:解决 在webpack.config.js中配置正确路径即可
九
1:安装 用来识别.vue的文件
npm i vue-loader vue-template-compiler -D
2:在webpack.config.js引入
const VueLoaderPlugin = require(‘vue-loader/lib/plugin’);
插件配置中加入
new VueLoaderPlugin() 只加入这个即可
new VueLoaderPlugin() 只加入这个即可
完整的如下
3:在规则relus中加入
{
test:/\.vue$/,
use:["vue-loader"]
}
4:新建一个App.vue文件
5:使用在main.js中
6:public的index文件夹中
7:打包的效果为
好了基本的架子是搭建起来了,后续的操作根据自己的需求哦