一、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. 解决 Https 站点请求 Http 接口服务后报 the content must be served over HTTPS 错误的问题

    问题分析 之前将自己所有的 Http 站点全部更新为 Https 站点,但是在请求后台接口服务的时候还是 Http 请求,导致部署之后,直接在控制台报 This request has been bl ...

  2. margin的用法 清除默认样式 display属性值 块状元素 内联元素 行内块元素

    margin的用法: 1,margin是在元素的宽高以外的 2,作用:控制元素之间的位置关系 3,margin不能改变盒子本身大小的 4,单一一个方向设置margin值: margin-left    ...

  3. LeetCode 40. Combination Sum II 组合总和 II (C++/Java)

    题目: Given a collection of candidate numbers (candidates) and a target number (target), find all uniq ...

  4. 太卷了,史上最简单的监控系统 catpaw 简介

    指标监控的痛点 当下比较流行的监控系统,比如 Prometheus.Nightingale.VictoriaMetrics,都是基于数值型指标的监控系统,这类监控系统的痛点在于:告警的时候只能拿到异常 ...

  5. koishi机器docker搭建

    硬件要求: 可用内存:1G以上 存储空间:1G以上 cpu:不限制 配置: 在docker的存储空间目录建立koishi文件夹 下载docker镜像 koishijs/koishi 建立容器,具体设置 ...

  6. 『手写Mybatis』实现映射器的注册和使用

    前言 如何面对复杂系统的设计? 我们可以把 Spring.MyBatis.Dubbo 这样的大型框架或者一些公司内部的较核心的项目,都可以称为复杂的系统. 这样的工程也不在是初学编程手里的玩具项目,没 ...

  7. 探索Semantic Kernel内置插件:深入了解ConversationSummaryPlugin的应用

    前言 经过前几章的学习我们已经熟悉了Semantic Kernel 插件的概念,以及基于Prompts构造的Semantic Plugins和基于本地方法构建的Native Plugins.本章我们来 ...

  8. RSA密码系统的特定密钥泄露攻击与Coppersmith方法的应用

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. RSA密码系统作为当前最广泛使用的公钥加密算法之一,其安全性依赖 ...

  9. linux挂载的ntfs格式硬盘无法使用回收站

    linux挂载的ntfs格式硬盘无法使用回收站 解决办法: 新建回收站文件, 文件名为Trash-XXX . 比如Trash-1000 这里的1000就是你的$UID. sudo mkdir /.Tr ...

  10. 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(2)

    1.问题描述: 能否设置点击地图,地图标记上的文字不消失? 解决方案: 你好,这个功能设计本身就是点击屏幕marker的信息窗消失:如果用户只是想信息窗中的文字一直展示,可以不用信息窗实现 ,建议可以 ...