一、Webpack的用途

webpack要解决的是统一网页资源的问题

前端工程化出现了很多问题,就是兼容性,浏览器所不能解析

所以需要一个打包,转换等方式处理

二、安装描述介绍

下载安装NodeJS,此命令只是查看NodeJS版本

node -v

使用NodeJS提供的NPM包管理工具下载安装Webpack

npm install webpack@3.6.0 -g

写项目时使用局部安装:【注意当前工作目录】

npm install webpack@3.6.0 --save-dev

三、项目结构:

src — 【source】开发编写前端代码文件存放的目录
dist — 【distribution】编写完成将src资源打包之后生产的文件,存放的目录
index.html — 首页引用的样式文件,dist打包之后会加入此文件

在src中创建main.js文件和util.js文件

util表示工具的意思,可利用的

let sum = function (n1, n2) {
return n1 + n2;
}
let multi = function (n1, n2) {
return n1 * n2;
} export default {
sum, multi
}

而main.js则是导入util.js然后调用方法:

import util from "./util";
console.log(util.sum(22, 32));
console.log(util.multi(213, 219));

在终端执行打包命令:

webpack src/main.js dist/bundle.js

终端输出:

Hash: 9b8d8dcf03ad5dca65da
Version: webpack 3.6.0
Time: 152ms
Asset Size Chunks Chunk Names
bundle.js 3.15 kB 0 [emitted] main
[0] ./src/main.js 100 bytes {0} [built]
[1] ./src/util.js 149 bytes {0} [built]

上面使用的是ES6模块化打包,

换成使用CommonJS的方式也是没有问题的:

let sum = function (n1, n2) {
return n1 + n2;
}
let multi = function (n1, n2) {
return n1 * n2;
} module.exports = {
sum, multi
}

CommonJS导入:

const { sum, multi } = require('./util.js');
console.log(sum(22, 32));
console.log(multi(213, 219));

四、webpack.config.js & package.json 文件配置

上述操作中我们使用了webpack 打包命令进行打包的

使用命令并不是很方便,所以webpack提供了配置文件的方式进行处理

webpack.config.js

const path = require('path'); /* 这里依赖一个path,这个path来自于npm的包中的一个模块,必须要有path包才能用 */
/* 所以需要装包 npm init */ module.exports = {
entry : './src/main.js', /* 打包的程序入口 */
output : { /* 打包输出的文件,出口路径 分为路径和文件名 */
// path : './dist', /* 路径可以动态获取 */
path : path.resolve(__dirname, 'dist'),
/* __dirname是一个全局变量 值是当前webpackconfig.js文件所在的绝对路径, cans参数二就是我们自定义的目录名称 */
filename : 'bundle.js', /* bundle 意思打包 就是打包好的JS文件 */
},
}

让npm对项目进行初始化

D:\Vue-Learn\CodeWhy\08-webpack\part1>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults. See `npm help init` for definitive documentation on these fields
and exactly what they do. Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file. Press ^C at any time to quit. 下面出现的选项都按回车Enter下一步即可
package name: (part1)
version: (
1.0.0)
description:
entry point: (webpack.config.js)
test command:
git repository:
keywords:
author:
license: (ISC)

About to write to D:\Vue-Learn\CodeWhy\08-webpack\part1\package.json: {
"name": "part1",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
} Is this OK? (yes)

之后Npm就会生成一个JSON文件

package.json,内容就是上述命令中的JSON字符

{
"name": "part1",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

如果package.json声明了项目的一些依赖,我们还需要安装package.json中描述的依赖

npm install

该命令会寻找package.json中描述的依赖进行下载,写入到本项目中

如果package.json没有依赖的信息,此命令执行也就等同没执行一样

命令映射处理:

/* 运行项目命令 npm run serve 打包(构建)项目命令 npm run build */
/* webpack 打包命令和 npm run build 进行映射 */

所以命令的配置可以在package.js中设置:

{
"name": "part1",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1" , /* 对应npm run test命令的test */
"build" : "webpack" /* build -> npm run build -> webpack 优先找本地webpack 包 */
},
"author": "",
"license": "ISC"
}

注意当前webpack版本和全局webpack版本

在当前项目安装webpack

npm install webpack@3.6.0 --save-dev

安装完成之后多出的目录和文件:

我们安装的依赖都会存放在node_modules目录中,备注的信息是库目录的根

此外还多出一个package-lock.json

返回package.json就可以看到这个东西:

这个依赖不需要我们自己编写,根据命令安装的依赖自动写入

{
"name": "part1",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^3.6.0"

}

}

只要使用终端写命令webpack对项目打包的都是调用全局weback处理

使用npm run build就是使用本地当前项目的node_modules的webpack进行打包的

文件位置:

node_modules/.bin/webpack

【Vue】Re09 Webpack 第一部分(介绍、安装、配置)的更多相关文章

  1. 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置

    浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...

  2. 浅入深出Vue:工具准备之WebStorm安装配置

    浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...

  3. 第一章 Maven 安装配置

    Maven基于(POM)项目对象模型,通过一小段描述信息来管理项目的构建.文档.和报告的项目管理软件,类似于php 的管理构建工具composer. 有关详细的Maven学习,可以参考学习https: ...

  4. Nginx介绍,安装,配置

    引言 为什么要学习Nginx 问题一: 客户端到底要将请求发送给哪台服务器? 问题二: 如果所有客户端的请求都发送给了服务器1,那另一台岂不是废了 问题三: 客户端发送的请求可能是申请动态资源的,也可 ...

  5. Vue踩坑第一步,安装Vue最新版本

    学习vue第一步肯定是安装vue-cli,那么肯定想去搜下如何安装vue-cli呢? 网上搜到的结果大都是: npm i vue-cli -g 输入vue -V发现: 输入node -v发现: 自己明 ...

  6. [转载] 纯手打 第一篇:安装配置gradle

    本文转载自: http://www.cnblogs.com/uncle2000/p/4276833.html 一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在 ...

  7. gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第一篇:安装配置gradle

    一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走 ...

  8. vue项目webpack中Npm传递参数配置不同域名接口

    项目开发中,前端在配置后端api域名时很困扰,常常出现:本地开发环境: api-dev.demo.com测试环境: api-test.demo.com线上生产环境: api.demo.com, 这次是 ...

  9. opencv第一课,安装配置

    下载工具:本教程以OpenCV3.2.0为例. 解压:本教程解压到D盘,解压的其它地方也是可以的,解压完后得到一个名为opencv目录. 配置系统变量:选择此电脑(计算机)->右键属性选择-&g ...

  10. IntelliJ IDEA使用教程一 介绍&安装&配置

    http://blog.csdn.net/nextyu/article/details/47206015 全套

随机推荐

  1. tomcat部署Jenkins

    安装环境 jdk 1.8 tomcat 9.0 jenkins 2.290 准备工作 安装好Tomcat,8080端口启动 安装好jdk,配置好环境变量 ECS服务器安全组放开8080端口 关闭防火墙 ...

  2. 未能加载文件或程序集“SissPayWebApi”或它的某一个依赖项。试图加载格式不正确

    "未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序."这个错误可能在IIS或VS中出现,一般是平台和dll版本不一致导致的. 一.VS ...

  3. The bean ‘xxx‘ could not be injected as a ‘xxx‘because it is a JDK dynamic proxy that implements错误解决

    1.解决方法:使用@Autowired 2.@autowired和@resource注解的区别区别:1.@Autowired注解由Spring提供,只按照byType注入:@resource注解由J2 ...

  4. 三月二十五日 安卓打卡app开发

    今天完成了每月打卡次数统计功能 public static String count(String account) throws SQLException { Connection connecti ...

  5. 燕千云AITSM重塑IT服务管理

    ​ IT服务经历了三个阶段,缘起于设备管理,兴起于灾难恢复,发展于IT服务管理.IT服务发展到目前的阶段,企业所使用的系统功能也由孤立的系统转变为综合的集成系统,IT服务所管理的对象也由核心业务转变为 ...

  6. Linux开机启动三种方式

    有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...

  7. 带有ttl的Lru在Rust中的实现及源码解析

    TTL是Time To Live的缩写,通常意味着元素的生存时间是多长. 应用场景 数据库:在redis中我们最常见的就是缓存我们的数据元素,但是我们又不想其保留太长的时间,因为数据时间越长污染的可能 ...

  8. HDD成都站:HMS Core 6.0带来新可能,多元服务驱动产品价值提升

    9月10日,由华为开发者联盟主办的HDD(Huawei Developer Day)于成都举行.活动中,华为HMS Core各领域专家重点解读了HMS Core 6.0为开发者带来的多项全新能力,及生 ...

  9. Python_9 py文件导入和路径处理

    一.查缺补漏 Python中两个值交换可以直接交换如:a,b=b,a 冒泡就是从小到大排序,因为越到后越大 自动导包也适用于自己创建的模块 关于正斜杠和反斜杠https://www.cnblogs.c ...

  10. .NET 6 Entity Framework Core Db First(1) 创建模型

    项目准备 1.开发环境 vs2022  .NET6 2.创建项目 新建项目 ASP.NET Core Web API,解决方案名称:EFDBFirstDemo,项目名称:EFDBFirstDemo.A ...