新建项目
npm init
```
package.jsoncss
```
{
"name": "webpackdemo1", 项目名称,包名,不能是grunt或webpack
"version": "1.0.0",//项目的版本
"description": "",//项目描述
"main": "index.js",//项目的入口文件
<!-- 项目脚本
该对象内写的脚本,能够经过npm run 脚本名称 的方式执行脚本
-->
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",//做者
"license": "ISC" //版权类型
}html
```node
npm的问题: 下载的数据大可能是来源外网,来源国外就可能会被防火墙挡住,致使
没法下载,所以能够在使用npm的时候,指定它的来源都在国内。
https://www.npmjs.com/
1.配置的npm的来源为 淘宝源
npm config set registry https://registry.npm.taobao.org/
校验
npm config get registry
2.直接安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
若是使用第二种方式,之后安装包的时候,均可以使用cnpmwebpack
1. 安装webpackes6
npm install --save-dev webpackweb
安装完成以后,会在项目中多出一个node_modules目录,该目录下的文件就是你开发过程当中
须要使用到的相应的工具的包,npm
package.jsonjson
```
"devDependencies": {
"webpack": "^4.20.2"
}app
```
环境:
生产环境: 已经上线的项目
开发环境: 正在处于开发环境下的项目grunt
--save-dev: 表示安装的是开发环境下的依赖
devDependencies: 开发须要的依赖列表
--save: 表示安装的是 生产环境须要的依赖
Dependencies:生产环境的依赖列表
-g : 表示全局安装
能够在命令行任意目录执行该命令
2. 安装webpack-cli(4.0版本之后都须要安装)
npm install --save-dev webpack-cli
3. 安装lodash
npm install --save lodash
```
// 安装一个第三方的库 lodash (鲁大师)
/**
* import 是 es6导入模块的方式,普通的js目前暂时没法直接使用该方式
* 若是直接使用了,会报错
*/
import _ from 'lodash'
var myDiv = document.createElement("div");
myDiv.innerHTML = _.join(["Hello","world"]);
document.body.appendChild(myDiv);
```
4. 打包压缩项目
npx webpack
5. 配置文件 (告诉webpack 要作什么 怎么作 何时作)
webpack.config.js
```
//导入nodejs的path模块
const path = require('path');
module.exports = {
//入口文件
entry: './src/index.js',
//打包输出的配置
output: {
filename: 'bundle.js',
//path是nodejs的路径模块,这句话的意思是将路径设置为当前项目根目录下的dist目录
path: path.resolve(__dirname,'dist')
}
}
```
6. 根据配置文件进行打包处理
npx webpack --config webpack.config.js
7. 配置脚本
在package.json文件中的script对象中加入如下属性
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config webpack.config.js"
},
运行脚本
npm run build
8. 管理非JS资源,将非js资源转换成模块,让webpack打包到bundle里
加载器:loader 做用将不一样的资源转换成js模块
css : css-loader,style-loader
cnpm i css-loader style-loader
配置webpack.config.js
```
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname,'dist')
},
module: {
rules: [
{
test: /\.css$/, //正则,表示处理全部的以css结尾的文件
use: [ 'style-loader', 'css-loader' ]
}
]
}
}
```
建立 src/css/style.css
```
#app {
width: 100px;
height: 100px;
background: cyan;
}
```
修改index.js
```
import "./css/style.css";
var app = document.createElement("div");
app.id = "app";
document.body.appendChild(app);
```
npm run build
9. 管理图片资源 file-loader
npm install file-loader --save-dev
配置webpack.config.js
```
var path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname,'dist')
},
module: {
rules: [
{
test: /\.(png|jpg|gif)$/,
use: [
'file-loader'
]
}
]
}
}
```
index.js
```
import img from './images/bear.jpg'
var myImage = new Image();
myImage.src = img;
document.body.appendChild(myImage);
```
10. 管理字体
1.字体和图片能够共用一个file-loader,所以无需重复安装file-loader
若是没安装file-loader,则须要先安装file-loader
npm i -s file-loader
2. 配置webpack.config.js
```
module: {
rules: [
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [
'file-loader'
]
}
]
}
```
同时安装多个模块
npm i webpack webpack-cli -d
11. 插件配置 html-webpack-plugin