订阅博客
收藏博客
微博分享
QQ空间分享

美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场

频道:民生新闻 标签:单县哥撸妹 时间:2020年02月14日 浏览:108次 评论:0条

一、WebPack

webpack的两大特色:1模块化 2打包

效果:

1将sass/less 等预编译的css言语转化成阅读器识其他css文件

2能够将多个预编译文件打包成一个文件

3 打包image/styles/assets/scrips/等前端常用的文件

4 建立开发环境敞开服务器

5 监督文件改动,热布置。

6 将单文件组件(*.vue)类型的文件,转化成阅读器识其他内容

1. 装置webpack:

 $ npm i -D webpack webpack-cli //-D 装置在开发环境仿制代码

WebPack 4.X 支撑零装备 (都市鉴宝达人咱们先来测验一下webpack怎样完结打包布置)

$ npx webpack //依据npx履行了webpack指令,而这个指令便是完结打包布置的
查找次序:
- 找到node_modules/.bin - 要求咱们得有 webpack.cmd 的文件 - 履行 webpack.cmd 仿制代码

知识点:自npm5.2.0开端今后,主动装置了npx( npx 会帮你履行依靠包里的二进制文件)

举个比如:(在npx韩漫h没有呈现之前)

npm i webpack -D //非大局装置//假如要履行 webpack 的指令./no黄旻翔de_modules/.bin/webpack -v仿制代码

有了npx后

npm i webpack -D //非大局装置npx webpack -v 仿制代码

npx 会主动查找当时依靠包中的可履行文件,假如找不到,就会去 PATH 里找。假如仍然找不到卫宫士郎的女儿,就会帮你装置。

2. webpack 自界说装备

尽管webpack支撑零装备,可是日常开发中咱们也会依据需求来自己界说根底装备

在根目录下创立webpack.config.js文件:

/* * 在这个文件中设置咱们自界说的打包规矩 * 1.一切的规矩都写在module.exports={}中 */
//由于需求用node中的path内置模块(内置模块,无需下载)
let path = require('path');
module.exports = {
/美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场/=>打包方式 开发环境development 出产环境production
mode: 'production',
//=>进口
entry: './src/index.js',
//=>输出
output: {
//=>输出文件的文件名
filename: 'bundle.min.[hash].js',
//=>输出目录的"绝对路径"
path: path.resolve(__dirname, 'dist')
}
}仿制代码

3. 自界说装备文件名

咱们能够在根目录下package.json文件中

//package.json
"scripts": {
"serve": "webpack-dev-server --config webpack.config.development.海派医药有限公司js", "build": "webpack --config webpack.config.development.js"}
//这样咱们今后就能够经过 yarn或许npm直接履行 serve/build 了,便利了许多仿制代码

4. webpack-dev-server:

是一个用来快速建立本地运转环境的东西。美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场指令简略webpack-dev-server或装备指令脚本便利运转(在3中 现已装备了serve,咱们今后能够直接运转 serve)

装置

$ yarn add webpack-dev-server -D仿制代码
//=>关于webpack-dev-server的一些装备 履行指令:webpack-dev-server --config xxx.js(特色:服务器发动后,默许是不封闭的,当咱们修正SRC中的文件时,它会主动进行编译,然后主动改写阅读器) devServer: { port: 3000, //=>创立服务指定的端口号 progress: true, //=>显现打包编译的进展 contentBase: './build', //=>指定当时服务处理资源的目录 open: true //=>编译完结后会主动翻开阅读器 }仿制代码
$ npm run serve 直播采蘑菇遇腐尸$ yarn serve $ npx webpack-dev-ser洛克王国幽暗蟹ver仿制代码

5. html-webpack-plugin:

html-webpack-plugin 插件是用于编译 Webpack 项目中的 html 类型的文件,假如直接将 html 文件置于 ./src 目录中,用 屈炫希Webpack 打包时是不会编译到出产环境中的。由于 Webpack 编译任何文件都需求依据装备文件先行装备的。

Webpack 插件运用三步曲:装置>引进>装备

npm&yarn 装置

$ npm install --save-dev html-webpack-plugin仿制代码
$ yarn add html-webpack-plugin --dev仿制代码

引进(接着在webpack.config.js 开端的当地引进)

let HtmlWebpackPlugin = require('html-webpack-plugin');仿制代码

装备

module.exports = {
...,
//=>在webpack中运用插件
plugins: [
//由于导入的插件是一个类,所以咱们用的时分需求new 一下
new HtmlWebpackPlugin({
//=>指定自己的模板
template: './src/index.html',
//=>输出的文件名
filename: 'index.html',
//=>给引进的文件设置HASH戳(清苹果以旧换新除缓存的),也能够在output中设置 filename: '我和校花bundle.[hash].js' 来生成不同的文件
hash: true,
//=>操控是否以及以何种办法最小化输出
//=>https://github.com/kangax/html-minifier
//操控紧缩
minify: {
collapseWhitespace: true,
removeComments: true,
removeAttributeQuotes: true,
removeEmptyAttributes: true
}
})
]
}
仿制代码

6. 运用加载器loader处理规矩(处理款式)

官网: www.webpackjs.com/api/loaders…

装置

$ yarn add css-loader style-loader less less-loader autoprefixer postcss-loader (等等) -D仿制代码

装备

module.exports = {
//=>装备模块加载器LOADER
module: {
//=>模块规矩:运用加载器(默许从右向左履行,从下向上)
rules: [{
test: /\.(css|less)$/, //=>依据正则表达式匹配哪些模块需求处理
use: [
"style-loader", //=>把CSS刺进到HEAD中
"css-loader", //=>编译解析@import/URL()这种语法
"postcss-loader", //=>设置前缀
{
loader: "less-loader",
options: {
//=>加载器额定的装备
}
}
]
}]
}
}
仿制代码

在 postcss.config.js 文件中

//这个文件需求合作postcss-loader运用
module.exports = {
plugins: [
require('autoprefixer')
]
};
仿制代码

在 package.json 文件的结尾参加

//像这些" > 1%", "last 2 versions" 都是查询参数
"browserslist": [
"> 1%",
"last 2 versions"
]
仿制代码

7. mini-css-extract-plugin 抽离CSS内容 (独自把css阻隔出来并紧缩)

装置

$ yarn add mini-css-extract-plugin optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin -D仿制代码

引进

let MiniCssExtractPlugin = require('mini-css-extract-plugin'),
OptimizeCssAssetsWebpackPlugin = require('optimizeuniform-css-assets-webpack-plugin'),
UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin');仿制代码

装备

module.exports = {
//=>设置优化项
optimization: {
//=>设置紧缩办法
minimizer: [
//=>紧缩CSS(可是有必要指定JS的紧缩办法)
new OptimizeCssA美人脱光衣服ssetsWebpackPlugin(),
//=>紧缩JS
new UglifyjsWebpackPlugin({
cache: true, //=>是否运用缓存
parallel: true, //=>是否是并发编译
sourceMap: true, //=>发动源码映射(便利调试)
})
]
},
plugin牙s: [
//=>运用插件
new MiniCssExtractPlugin({
//=>设置编译后的文件姓名
filename: 'main.css'
})
],
module: {
rules: [{
test: /\.(css|less)$/,
use: [
// "style-loader",
//=>运用插件中的LOADER替代STYLE办法
MiniCssExtractPlugin.loader,
"css-loader",
"postcss-loader",
"less-loader"
]
}]
}
}
仿制代码

8. 依据babel完结ES6的转化和ESLint语法检测

(当咱们需求关于ES6中的一些语法进行处理)

装置

$ yarn add babel-loader @babel/core @babel/preset-env @babel/plugin-proposal-class-properties @babe美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场l/plugin-proposal-decorators @babel/plugin-transf360帮手orm-runtime -D仿制代码
$ yarn add @babel/runtime @babel/polyfill仿制代码
$ yarn add eslint eslint-loader -D仿制代码

装备

module.exports = {
...,
module: {
rules: [...,{
test: /\.js$/,
use: [{
loader: 'babel-loader',
options: {
//=>转化的语法预设(ES6->ES5)
presets: [
"@babel/preset-env"
],
//=>依据插件处理ES6/ES7中CLASS的特别语法
plugins: [
["@babel/plugin-proposal-decorators", {
"legacy": true
}],
["@babel/plugin-proposal-class-properties", {
"loose": true
}],
"@babel/plugin-transform-runtime"
acer]
}
}], //=>, "eslint-loader"
//=>设置编译时疏忽的文件和指定编译目录
includ美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场e: p树叶贴画ath.resolve(__dirname, 'src'),
exclude: /node_modules/
}]
}
}
仿制代码

9. 露出全约会大作战簿本局 loader

(假如你想直接运用 jQuery或许 $)

装置

$ yarn add expose-loader -D仿制代码

装备

//=>内联加载器
import jquery from 'expose-loader?$!jquery'; //这句话的意思便是将jquery以$的方式露出给window
{
//=>只需引进JQUERY就在大局注入$
test: require.resolve('jquery'),
use: ['expose-loader?$']
}
仿制代码
let webpack = require('webpack');
module.美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场exports = {
plugins: [
//=>在每个模块中都注入$
new webpack.ProvidePlugin({
'$': 'jquery'
})
],
}
//=>页面中
console.log($);//这样就不会报错了
仿制代码

10. webpack中图片的处理和分目录分发

(当咱们js中创立img,css设置图片以及HTML页面中写入的图片,能够依据此办法紧缩)

装置

$ yarn add file-loader url-loader html-withimg-loader -D仿制代码

装备

module.exports = {
...,
module: {
//=>模块规矩:运用加载器(默许从右向左履行)
rules: [..., {
//还有许多图片格式。。。
test: /\.(png|jpg|gif)$/i,
use: [{
//=>把指定巨细内的图片BASE64
loader: 'url-loader',
options: {
limit: 200 * 1024,//=>只需图片是小于200KB,在处理的时分直接给BASE64
outputPath:'/images'//操控打包后图片地点的目录
}
}],
include: path.resolve(__dirname, 'src'),
exclude: /node_modules/
}, {
//=>处理HTML文件中导入的IMG图片
test: /\.html$/,
use: ['html-withimg-loader']
}]
}
}
仿制代码

11翡翠台. 文件分目录发布

module.exports = {
output: {
//=>装备引证前缀(一切资源前加这个地址)
publicPath: './'
},
plugins: [
new MiniCssExtractPlugin({
filename: 'css/main.css'
})
],
module: {
//=>模块规矩:运用加载器(默许从右向左履行)
rules: [...,{
test: /\.(png|jpg|gif)$/i,
use: [{
options: {
outputPath: 'images'
}
}]
}]
}
}仿制代码

到此 webpack 的各种装备 现已能够完结日常开发了

Vue-Cli 脚手架

在写这个文章之前我仅仅知道能够用vue-cli直接生成一个vue项目的架构,并不理解,他究竟是怎样运转的☺

1.什么是CLI

2.装置

npm install -g @vue/cli //-g 大局
# OR
yarn global add @vue/cli //依据yarn装置(需求装置yarn)仿制代码

3.创立一个vue-cli项目

$vue create [项目称号](要遵从npm包的称号标准:数字或许小写字母)仿制代码

你会被提示选取一个 preset。你能够选默许的包含了根本的 Babel + ESLint 设置的 preset,也能够选“手动挑选特性”来选取需求的特性。

挑选第二美少女兵士头像个 Manually select features

能够依照这个 装备自己需求的 方向键 ↑↓ 能够挑选 space 空格键承认 除了默许挑选的两项我还挑选了Router,Vuex,CSS Pre-processore(依据自己需求挑选,后期也美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场能够自己增加)

等候装置,项目根本就算创立完结了

然后你就看到自己创立的项目了 用编辑器翻开hello--xiaokai文件

你能够翻开自己编辑器的终端 我用的是VScode ctrl+` 然后输入

$npm run serve 或许 $yarn serve仿制代码

就能够把项目预览了

4.编译美林退烧药,从WebPack 4.X 到 Vue-Cli 3.X 一篇就够,小商品批发市场打包

在出产方式下,把写好的内容进行编译打包,最终布置到服务器上

$npm run build or $yarn build

原文地址:https://juejin.im/post/5dab320851882565f7660c5e