webpack快速使用笔记
一、NPM
1.NPM是随同NodeJS一起安装的包管理工具。
http://www.1994july.club/?p=1454
2.安装
npm install npm -g
npm -v 测试是否成功安装
3.使用淘宝镜像(cnpm命令)
npm install -g cnpm --registry=https://registry.npm.taobao.org
4.安装模块
npm install <Module Name>
安装好之后,模块包就放在了工程目录下的node_modules目录中,因此在代码中只需要通过
require('express')的方式就可引入,无需指定第三方包路径。
var express = require('Module Name');
5.全局安装与本地安装
npm install express # 本地安装
npm install express -g # 全局安装
http://www.1994july.club/?p=1456
本地安装将安装包放在./node_modules下(运行npm命令时所在的目录),
可以通过require()来引入本地安装的包。
全局安装将安装包放在/usr/local下或者你node的安装目录,
可以直接在命令行里使用。
6.Package.json主要属性说明
name-包名。
version-包的版本号。
description-包的描述。
homepage-包的官网url。
http://www.1994july.club/?p=1458
author-包的作者姓名。
contributors-包的其他贡献者姓名。
dependencies-依赖包列表。如果依赖包没有安装,npm会自动将依赖包安装在node_module目录下。
repository-包代码存放的地方的类型,可以是git或svn,git可在Github上。
main-main字段指定了程序的主入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
keywords-关键字.
scripts-脚本命令
7.常用命令
查看安装信息 npm list -g
查看具体某个模块 npm list moduleName
卸载模块 npm uninstall moduleName
更新模块 npm update moduleName
http://www.1994july.club/?p=1460
搜索模块 npm search moduleName
创建模块 npm init/npm init -y(跳过描述)
发布模块 npm publish
帮助命令 npm help
npm cache clear 可以清空NPM本地缓存
二、webpack
1.webpack是一个JS应用程序的静态模块打包器。可以实现打包、转化、压缩优化等功能。
2.webpack构成
入口 entry
出口 output
loaders 转化器
plugins 插件
devServer 简单开发用服务器
mode 开发模式/生产环境
3.安装webpack
http://www.1994july.club/?p=1462
npm install webpack -g
npm install webpack-cli -g
webpack -v
4.安装依赖模块
npm i jquery
npm un jquery
npm i jquery --save-dev (生产模式 不压缩优化)
npm i jquery --save (生产模式 压缩优化)
如果不加--save和-save-dev参数,模块依赖不会加入到package.json
5.默认目录结构
webpack-work
dist-输出文件夹
node_modules-依赖模块文件夹
src-源码文件夹
index.js-入口文件
package.json
6.初始化
npm init
npm init -y 跳过描述
http://www.1994july.club/?p=1464
npm init 并且在当前目录下配置package.json文件,根据package.json初始化。
7.快速打包
webpack src\index.js --output dist\
8.webpack.config.js内容
module.exports={
entry:{} //入口配置-必须
output:{} //出口配置-必须
module:{} //module.rules loaders
plugins:{} //插件
devServer:{} //开发服务器
}
样例:
const path = require('path');
module.exports={
entry:{
a:'./src/index.js' //a是key值,自定义即可。
},
output:{
//path:__dirname+'/dist',//必须为绝对路径 __dirname是node内置函数,指当前绝对路径
path:path.resolve(__dirname,'dist'),
filename:'[name].bundle.js'
}
}
9.默认使用webpack.config.js配置文件
也可指定配置文件,如:webpack --config custom.config.js
也可在package.json中配置脚本,使用npm run XXX 执行。
webpack --mode development 开发模式 不压缩
webpack --mode production 生产模式 压缩
三、常用插件
http://www.1994july.club/?p=1466
1.html-webpack-plugin
功能:实现对html的支持,依赖本地webpack和webpack-cli
安装:cnpm i html-webpack-plugin -D
引入:const HtmlWebpackPlugin = require('html-webpack-plugin');
使用:new HtmlWebpackPlugin({
filename:'index.html',
chunks:['a'], //包含的js
minify:{
collapseWhitespace:true, //压缩空白
removeAttributeQuotes:true //删除属性双引号
},
hash:true, //生成js链接随机数,防止缓存
title:'wdwtest',
template:'./src/index.html' //模板,可省略
})
2.clean-webpack-plugin
功能:清除某些东西
下载:cnpm i clean-webpack-plugin -D
引入:const {CleanWebpackPlugin} = require('clean-webpack-plugin');
使用:new CleanWebpackPlugin();
3.devServer
功能:内置开发服务器
下载:cnpm i webpack-dev-server -D
使用:devServer:{
contentBase:path.resolve(__dirname,'dist'), //设置服务器访问的基本目录
host:'localhost', //服务器IP
port:'8090',
open:true, //自动打开浏览器
hot:true //打开热部署
}
启动:webpack-dev-server --mode development
或配置package.json使用npm run dev命令执行
"scripts": {
"dev": "webpack-dev-server --mode development"
},
4.压缩
1)4.0版本 可以使用--mode production进行压缩。
使用--mode development开启调试。
2)4.0以前版本可以使用uglifyjs-webpack-plugin
cnpm i uglifyjs-webpack-plugin -D
const uglify= require('uglifyjs-webpack-plugin');
new uglify();
使用devtool:'source-map'开启调试
5.copy-webpack-plugin
静态资源输出,复制静态资源。
下载:cnpm i copy-webpack-plugin -D
引入:const CopyWebpackPlugin = require('copy-webpack-plugin');
使用:plugins:[
new CopyWebpackPlugin([{
from:path.resolve(__dirname,'src/assets'),
to:'./public'
}])
]
6.图片插件
下载:cnpm i file-loader url-loader -D
使用:{
test:/\.(png|jpg|gif)$/,
use:[{
loader:'url-loader',
options:{
limit:5000 //小于该大小的图片会转换成base64.
}
}]
}
7.分离css插件
下载:cnpm i extract-text-webpack-plugin@next -D
使用:
1.const ExtractTextPlugin=require('extract-text-webpack-plugin');
2.new ExtractTextPlugin(要提取出去的路径)
3.{ test:/\.css$/,
use:ExtractTextPlugin.extract({
fallback:'style-loader',
use:'css-loader',
publicPath:'../' //解决css背景图路径问题
})
}
8.消除冗余css
下载:cnpm i purifycss-webpack purify-css glob -D
使用:const PurifyCssWebpack = require('purifycss-webpack');
const glob = require('glob');
new PurifyCssWebpack({
paths:glob.sync(path.join(__dirname,'src/*.html'))
})
四、loader
1.loader起到加载器、转化器的作用,类似插件。
2.css处理
webpack默认只能处理js,需要相应的loader插件进行css处理。
style-loader、css-loader。
下载:cnpm i style-loader css-loader -D
使用:module:{
rules:[
{
test:/\.css$/,
use:['style-loader','css-loader']
//或 loader:['style-loader','css-loader']
//或
//use:[
// {loader:'style-loader'},
// {loader:'css-loader'}
// ]
}
]
}
五、babel
下载:cnpm i babel-loader babel-core babel-preset-env -D
使用:{
test:/\.(js|jsx)$/,
use:[{
loader:'babel-loader',
options:{
preset:'env'
}
}],
exclude:/node_modules/
}
六、引用
1.导出模块
function show(){
return '我是新模块'
}
module.exports=show;
引入模块
require('./show');
2.webpack3以后支持直接引入json
const jsonConfig = require('./config.json');
3.使用第三方库
1)直接引入
import $ from 'jquery'
2)ProvidePlugin
const webpack=require('webpack');
new webpack.ProvidePlugin({
$:'jquery',
xxx:'xxxx'
})
3)import $...,引入之后,无论代码中是否使用到了jquery,打包都会打进去,产生冗余js。
ProvidePlugin方式,只有实际用到此库时,才会打包进去。
4)提取第三方库
optimization:{
splitChunks:{
cacheGroups:{
aaa:{
//chunks:'initial',
test: path.resolve(__dirname, 'src/js/jquery.min.js'),
name:'jquery',
chunks: "all",
//minSize: 1,
priority: 0
}
}
}
}
webpack快速使用笔记的更多相关文章
- Knockout.js快速学习笔记
原创纯手写快速学习笔记(对官方文档的二手理解),更推荐有时间的话读官方文档 框架简介(Knockout版本:3.4.1 ) Knockout(以下简称KO)是一个MVVM(Model-View-Vie ...
- webpack快速入门——实战技巧:watch的正确使用方法,webpack自动打包
随着项目大了,后端与前端联调,我们不需要每一次都去打包,这样特别麻烦,我们希望的场景是,每次按保存键,webpack自动为我们打包,这个工具就是watch! 因为watch是webpack自带的插件, ...
- webpack快速入门——CSS进阶:自动处理CSS3前缀
为了浏览器的兼容性,有时候我们必须加入-webkit,-ms,-o,-moz这些前缀.目的就是让我们写的页面在每个浏览器中都可以顺利运行. 1.安装 cnpm i postcss-loader aut ...
- Angular快速学习笔记(2) -- 架构
0. angular 与angular js angular 1.0 google改名为Angular js 新版本的,2.0以上的,继续叫angular,但是除了名字还叫angular,已经是一个全 ...
- Angular 快速学习笔记(1) -- 官方示例要点
创建组件 ng generate component heroes {{ hero.name }} {{}}语法绑定数据 管道pipe 格式化数据 <h2>{{ hero.name | u ...
- webpack快速入门——如何安装webpack及注意事项
1.window+R键,输入cmd打开命令行工具,输入 mkdir XXXX(XX:文件夹名): 2.cd XXX 进入刚刚创建好的文件夹里,输入cnpm install -g webpack (安装 ...
- webpack快速入门——webpack3.X 快速上手一个Demo
1.进入根目录,建两个文件夹,分别为src和dist 1).src文件夹:用来存放我们编写的javascript代码,可以简单的理解为用JavaScript编写的模块. 2).dist文件夹:用来存放 ...
- webpack快速入门——配置文件:入口和出口,多入口、多出口配置
1.在根目录新建一个webpack.config.js文件,然后开始配置: const path = require('path'); module.exports={ //入口文件的配置项 entr ...
- webpack快速入门——配置文件:服务和热更新
1.在终端安装 cnpm i webpack-dev-server --save-dev 2.配置好后执行 webpack-dev-server,这时候会报错 出现错误,只需要在pagejson里配置 ...
随机推荐
- XPath--快速获取XML数据的节点或属性
转载自 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识.示例Xml: <?xml version="1.0" ...
- 留学英文论文写作Abstract三种类型
所谓Abstract,就是对所写论文主要内容的精炼概括.Abstract是美国人的说法,英国的科技期刊喜欢称之为Summary.在英文中,有资料是这么对其定义的:Abstract is a sketc ...
- 前端第二篇---前端基础之CSS
前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading ...
- mysql 带换行符的字符串数据插入数据库异常
带换行符的字符串数据插入数据库异常现象 某个字符串类型的字段中部分记录中带换行符,数据同步插入异常,提示如下类似警告信息: Incorrect string value:'<aherf=&quo ...
- ZOJ - 2671 Cryptography(线段树+求区间矩阵乘积)
题意:已知n个矩阵(下标从1开始),求下标x~y区间矩阵的乘积.最多m次询问,n ( 1 <= n <= 30,000) and m ( 1 <= m <= 30,000). ...
- windows自带的颜色编辑器居中
void xxx::SetOSDColor(CLabelUI * pLabel) { COLORREF color = RGB(*, *, *); CColorDialog cdlg(color, C ...
- Neo4j--UNIQUE约束
UNIQUE简介 和关系型数据库一样,对数据进行约束作用. 比如在某个属性上不能插入重复的节点. 比如属性的完整性约束. 创建UNIQUE约束 创建UNIQUE语法 CREATE CONSTRAINT ...
- 大数据高可用集群环境安装与配置(04)——安装JAVA运行环境
Hadoop运行在java环境,所以在安装Hadoop之前,需要安装好jdk 提前下载好jdk安装包(jdk-8u161-linux-x64.tar.gz),将它上传到指定的安装目录当中,然后运行安装 ...
- oracle11g忘记管理员密码
oracle的sys和system密码是我们经常忘记的,忘记之后我们可以通过sqlplus来修改重置. 首先打开sqlplus:在运行处可直接输入打开 进入窗口后,首先输入 sqlplus/as sy ...
- 1、求loss:tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None))
1.求loss: tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)) 第一个参数log ...