npm安装包的说明
- 全局安装npm install -g 包名
- 本地安装npm install 包名(简写:npm i 包名,默认 加--save)表示本次安装的依赖包会保存到dependencies
- 本地开发安装npm install 包名 --save-dev(简写:npm i 包名 -D)
- 本地安装一个包,这个包只在开发阶段生效,项目上线就不生效。存在devDependencies中
scripts:用于配置命令的别名
"scripts": {
// cc别名
"cc": "npm i jquery"
},
然后npm run cc就行
yarn run cc也行
yarn 和 npm 的比较
| 功能 | yarn | npm |
|---|---|---|
| 初始化 | yarn init -y | npm init -y |
| 下载 | yarn add xxx / yarn add xxx@版本 | npm i xxx/ npm i xxx@版本 |
| 删除 | yarn remove xxx | npm uninstall xxx |
| 下载依赖项 | yarn | npm install |
| 全局安装 | yarn global add xxx | npm i -g xxx |
webpack的使用步骤
- 初始化一个项目 yarn init -y
- 安装webpack的依赖项 yarn add webpack webpack-cli -D
- 使用webpack对main.js某个文件打包(建立src文件夹,在里面建立mian.js)
- 配置一个别名 npm scripts
- webpack对 src/main.js进行打包
- 最终打包出来的问题: dist/bundle.js
- "build": "webpack src/main.js -o dist/bundle.js"
- "build": "webpack src/main.js -o dist/bundle.js --mode development"
- 不要写的话就是默认压缩版本,写了就不是压缩mode: 'development'
- 在打包的时候,需要指定打包的模式 mode production: 生产模块 打的包会自动压缩 development: 开发模式,代码不会压缩
- 运行命令: npm run build yarn build "build": "webpack src/main.js -o dist/bundle.js --mode development"
- 在项目根目录建立webpack.config.js
webpack的配置文件
在package.json文件中, 可以配置 scripts ... 配置自己的命令(脚本)
"scripts": {
"aa": "yarn add jquery",
"build": "webpack --config webpack.config.js"
}
- webpack.coinfig.js: 这就是webpack的配置文件(scripts里面的配置"build": " --config webpack.config.js")
- webpack会自动在根目录查找 webpack.config.js我们可以把webpack所有的配置写到配置文件里面
// webpack是运行在node环境中的,webpack的配置文件可以使用nodejs的语法
// 导出的这个对象就是webpack的配置对象
const path = require('path')
module.exports = {
// 指定对谁打包,入口
entry: path.join(__dirname, 'src', 'main.js'),
// 出口 ,指定打包到哪儿去
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js'
},
// 打包模式
mode: 'development'
}
- 我要在在根目录下建立一个index.html引入main.js,每次打包后还要引入bundle.js,能不能把index.html一起打包到dist中?
- html-webpack-plugin:是webpack的一个插件
- 作用:自动帮我们生成一个html文件到dist目录,自动把打完的bundle.js文件给引入
- 安装依赖包 yarn add html-webpack-plugin -D
- 使用这个插件 在webpack.config.js
3.1 在webpack.config.js中引入这个插件const HtmlWebpackPlugin = require('html-webpack-plugin')
3.2 然后在config中
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
笔记可能不更新,官网在更新看官网
- 每次改一下代码都要打包很麻烦所以用到webpack-dev-serve
- webpack-dev-serve
webpack-dev-server: 在开发阶段可以帮我们自动开启一个服务器,而且,会自动监听文件的变化,如果文件变化了,会自动刷新浏览器,
使用:
1. 安装webpack-dev-server yarn add webpack-dev-server -D
2. 在webpack.config.js中配置一个scripts "serve": "webpack-dev-server --open"
3. 启动 yarn serve
webpack-dev-server: 在开发阶段帮我们启动服务器,监听文件变化,刷新浏览器
webpack: 在项目上线之前,需要进行打包
- 引入插件
在项目中难免会引入插件
比如引入moment
1、安装插件: yarn add moment
2、引用插件: main.js import moment from 'moment'
8、loader
css-loader
在项目中难免会用到css文件,直接打包的话会出错
1、安装css-loader yarn add css-loader style-loader -D
2、在rules配置
module:{
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
less-loader
1、 安装 yarn add less-loader less -D
2、 在rules配置
{
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
}
url-loader(处理图片和字体图标)
1、安装 yarn add file-loader url-loader -D
2、在rules配置(图片)
url-loader会把图片打包成base编码,打包到bundle.js中
任何一张图片,都可以使用base来表示, base64图片的字符串的表示
一个图片如果使用base64来表示 大小会增加将近30%
用file-loader的理由:url-loader会导致图片变大30%
用url-loader的理由:减少请求次数
需要给url-loader设置一个范围,如果超出范围,会调用file-laoder来触发
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
// 如果图片的大小低于limit,会使用url-loader
// 如果超出limit,使用file-loader处理
limit: 8 * 1024
}
}
]
}
3、字体图标
{
test: /\.(eot|svg|ttf|woff)$/,
use: [
{
loader: 'url-loader',
options: {
// 如果图片的大小低于limit,会使用url-loader
// 如果超出limit,使用file-loader处理 10000
limit: 8 * 1024
}
}
]
}
babel-loader
babel可以把任意的新版本的ES语法
ES6-ES9新语法 ------》 ES3/5的语法(所有的浏览器都兼容)
1. 安装依赖包:
yarn add -D babel-loader @babel/core @babel/preset-env
2. 配置
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
src下的目录如何用@配置
如何关闭eslint
如何默认打开项目
在根目录新建vue.config.js
// vite 是不行的
module.exports = {
publicPath: './', // 打包好后的文件可以点击index.html看效果
devServer: {
port: 3000, // 端口号变成3000
open: true // 默认打开网页
}
}
或者在package.json文件
"script": { "serve": "vue-cli-service serve --open" }
1、import 引入文件的时候.vue .js可以省略不计