【Vue】Re09 Webpack 第一部分(介绍、安装、配置)
一、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 第一部分(介绍、安装、配置)的更多相关文章
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
- 浅入深出Vue:工具准备之WebStorm安装配置
浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...
- 第一章 Maven 安装配置
Maven基于(POM)项目对象模型,通过一小段描述信息来管理项目的构建.文档.和报告的项目管理软件,类似于php 的管理构建工具composer. 有关详细的Maven学习,可以参考学习https: ...
- Nginx介绍,安装,配置
引言 为什么要学习Nginx 问题一: 客户端到底要将请求发送给哪台服务器? 问题二: 如果所有客户端的请求都发送给了服务器1,那另一台岂不是废了 问题三: 客户端发送的请求可能是申请动态资源的,也可 ...
- Vue踩坑第一步,安装Vue最新版本
学习vue第一步肯定是安装vue-cli,那么肯定想去搜下如何安装vue-cli呢? 网上搜到的结果大都是: npm i vue-cli -g 输入vue -V发现: 输入node -v发现: 自己明 ...
- [转载] 纯手打 第一篇:安装配置gradle
本文转载自: http://www.cnblogs.com/uncle2000/p/4276833.html 一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在 ...
- gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第一篇:安装配置gradle
一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走 ...
- vue项目webpack中Npm传递参数配置不同域名接口
项目开发中,前端在配置后端api域名时很困扰,常常出现:本地开发环境: api-dev.demo.com测试环境: api-test.demo.com线上生产环境: api.demo.com, 这次是 ...
- opencv第一课,安装配置
下载工具:本教程以OpenCV3.2.0为例. 解压:本教程解压到D盘,解压的其它地方也是可以的,解压完后得到一个名为opencv目录. 配置系统变量:选择此电脑(计算机)->右键属性选择-&g ...
- IntelliJ IDEA使用教程一 介绍&安装&配置
http://blog.csdn.net/nextyu/article/details/47206015 全套
随机推荐
- springboot项目中一些小技巧
一.使用命令创建maven工程 1.例如我们想在IDEA的工作空间目录下E:\Gitee\springboot,创建maven项目,首先先进入该目录下 2.去掉原来的目录,输入cmd,然后回车,进入命 ...
- C# .NET 国密 SM2 签名 默认USER ID
C# .NET 国密 SM2 签名 默认USER ID: 1234567812345678 string userId = "1234567812345678"; byte[] b ...
- 点击li 该li变色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 探索Semantic Kernel内置插件:深入了解ConversationSummaryPlugin的应用
前言 经过前几章的学习我们已经熟悉了Semantic Kernel 插件的概念,以及基于Prompts构造的Semantic Plugins和基于本地方法构建的Native Plugins.本章我们来 ...
- docker 单机部署redis集群
docker 部署redis集群 1.创建redis网卡 docker network create redis --subnet 172.38.0.0/16 查看网卡信息 docker networ ...
- AWX+gitlab
目录 AWX+gitlab 1. Awx配置 1.1 添加机构 1.2 添加团队 1.3 添加主机 1.4 测试主机连通性 2. 对接gitlab 2.1 添加凭证 2.2 添加项目 2.3 上传pl ...
- UBI 文件系统的支持 与 有关文件系统的image的制作
背景 UBI文件系统是一种较新类型的文件系统. 内核支持 Symbol: MTD_UBI [=y] Type : tristate Prompt: Enable UBI - Unsorted bloc ...
- mysql判断两个字符串(以逗号分隔)是否存在交集
转载:https://blog.csdn.net/username666/article/details/107815331?utm_medium=distribute.pc_relevant.non ...
- ENVI无缝镶嵌、拼接栅格数据的方法
本文介绍基于ENVI软件,利用"Seamless Mosaic"工具实现栅格遥感影像无缝镶嵌的操作. 在遥感图像镶嵌拼接:ENVI的Pixel Based Mosaicki ...
- SpringBoot学习篇
什么是SpringBoot?为什么要用SpringBoot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 ...