webpack是为现代js程序准备的静态模块打包工具

一:关于对webpack的理解

可以将其认为是一个电脑主板,由于使用js作为源码,因而其可以默认编译js代码(别种类型的文件可以依靠loaders或plugins),因为其底层由node提供支持,因而其支持编译common/esmodule的导入方式。而其被三大框架使用的原因是生态————提供了近乎所有文件的编译工具,这也使得webpack对整个前端工程的支持近乎全面。

二:安装

想要安装使用webpack,应首先确保安装node

截至当前,webpack更新到了5,笔者也使用的webpack5,node最低需12.x.x,可以命令行下使用node -v查看node版本

命令行下输入以下命令:

//全局安装
npm install webpack webpackcli -g //局部安装(推荐)
npm install webpack webpackcli -D
  • 问题1:推荐局部安装的原因

有时候可能项目的webpack版本不同,不同的webpack可能会存在不兼容

  • 问题2:为什么要安装webpackcli,

webpackcli并不是必需的,三大框架并没有安装webpackcli,安装webpackcli是由于当前命令行里需要webpackcli执行webpack内的命令且需要一些参数时,换句话说,此刻webpack需要webpackcli执行带参数的 命令,而webpackcli又依赖webpack(互相依存)

读者也可以指定webpack版本:

// 如:npm install webpack@3.6.0
npm install webpack@xxxxx

三:尝试写一个小demo

  • 如果全局安装了webpack:

    全局环境下,webpack命令可以在任一目录中使用

为演示webpack同时支持es6导入导出和common导入导出,以下两个非index.js文件使用两种方式

新建项目目录:

—mydemo

______src

——————__index.js

——————__common.js

——————__esmodule.js

——————index.html

//common.js
// node的导出流
const common_export = function(){
return '我是node的导出流'
}
module.exports = {
common_export
} //esmodule.js
// es6的导出流
export function es_export(){
return '我是esmodule的导出流'
} // index.js
import { es_export } from './esmodule'
const { common_export } = require('./common')
console.log(es_export(),common_export());

此时可以在mydemo目录命令行下输入webpack

即可生成一个dist目录,且内部生成一个main.js的文件,即如今项目结构显示如下:

—mydemo

______dist

——————__main.js

______src

——————__index.js

——————__common.js

——————__esmodule.js

——————index.html

假设读者有live-server这个插件且index.html中引入了./dist/main.js这个文件,在live on browers以后控制台会出现打印消息:

此时可以做个总结:

  1. webpack天然支持js的两种导入导出流
  2. 在输入webpack后会默认将当前目录下src目录中的index.js作为入口,且会默认在当前目录下生成dist目录并将打包后的js文件合并成./dist/main.js
  3. webpack天然支持生成静态文件,只需在index.html中引用打包后的main.js文件即可
  • 局部使用

    局部环境下,想要执行webpack命令,需要将webpack作为node中的一个包使用,此时,需要使用npm包管理器,换句话说,需要node支持

想要使用node环境,需要使用npm init命令生成package.json目录,这个目录记录当前npm的一些信息,可以在这里查看已安装的包目录

如果目录中有中文名,可以使用 npm init -y命令,这是由于node对中文的支持并不好

注:于全局目录此时保持一致

  1. 在新建目录下进行npm初始化

    npm init -y
  2. 下载webpack包

    npm install webpack -D

    -D是指开发时要用到的依赖,-S是生产环境也要用到的依赖

    如果此时package.json中显示有webpack包名,则说明局部安装成功

注意:此时此刻想要打包文件,不应使用webpack命令,因为一但使用webpack命令,则会使用全局的webpack进行打包————这与初衷不符

如何使用局部webpack命令打包项目?

  1. 可以使用.bin

使用.bin默认查找node-module下的webpack

.\node_modules\.bin\webpack

  1. 使用npx

使用npx将优先使用局部webpack,同方法1一样

npm webpack

  1. package.json的script字段中,使用命令(推荐使用)



    如果是这种方式,可以使用npm run build命令,此时将默认执行局部的webpack命令(本质上,所有局部查找的命令都是查找node-modules里的安装的包并且运行这个包)

下一记:webpack本身的配置以及其loader配置

webpack解析(1)的更多相关文章

  1. 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...

  2. webpack核心概念

    一.webpack四个核心概念 1.入口[Entry] webpack将创建所有应用程序 依赖关系图表.图表的起点被称之为 入口起点.入口起点告诉webpack从哪里开始,并遵循着依赖关系图表知道打包 ...

  3. 搭建一个属于自己的webpack config(-)

    搭建一个属于自己的webpack config(-) 前期准备 环境说明 mac 10.12.6 node v8.8.1 npm 5.4.2 全局安装下webpack.webpack-dev-serv ...

  4. webpack入门(六) API in modules

    A quick summary of all methods and variables available in code compiled with webpack. 用webpack编译的一些变 ...

  5. webpack入门(四)webpack的api 2 module

    接着介绍webpack的module. module Options affecting the normal modules (NormalModuleFactory)  这些选项影响普通的模块 m ...

  6. webpack入门(三)webpack的api

    终于到了webpack api这一篇,我都等不及了0.0; webpack is fed a configuration object. Depending on your usage of webp ...

  7. vue2+webpack 开发环境配置

    前提条件: 1.安装node.js https://nodejs.org/en/ 下载安装合适的平台 2.安装npm 第一步:初始化项目 新建文件夹 E:\app 推荐vue项目目录结构: confi ...

  8. 一字一句的搞懂vue-cli之vue webpack template配置

    webpack--神一样的存在.无论写了多少次,再次相见,仍是初见.有的时候开发vue项目,对尤大的vue-cli感激涕零.但是,但是,但是...不是自己的东西,真的很不想折腾.所以,我们就得深入内部 ...

  9. Webpack知识汇总

    介绍 webpack把任何一个文件都看成是一个模块,模块间可以相互依赖(require or import),webpack的功能就是把相互依赖的文件打包在一起.webpack本身只能处理原生的Jav ...

随机推荐

  1. Python基础之:Python中的异常和错误

    目录 简介 Python中的内置异常类 语法错误 异常 异常处理 抛出异常 异常链 自定义异常 finally 简介 和其他的语言一样,Python中也有异常和错误.在 Python 中,所有异常都是 ...

  2. Swagger接口如何生成Html离线文档

    A very simple tool that converts Swagger Api Document to Html File. 小记Swagger接口生成Html离线文档 由来 很多人用swa ...

  3. 使用python的虚拟环境virtualenv

    技术背景 在前面几篇博客中我们介绍了容器的使用(博客1.博客2.博客3.博客4.博客5),容器是一种系统级的隔离方案,更多的强调资源上的隔离.而这里我们要介绍的python的虚拟环境,更加强调的是依赖 ...

  4. 三分钟玩转微软AI量化投资开源库QLib

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 微软QLib简介 微软亚洲研究院发布了 AI 量化投资开源平台"微矿 Qlib".Q ...

  5. (三)Struts2的Action(简单讲解版)

    Actions是Struts2框架的核心,因为它们适用于任何MVC(Model View Controller)框架. 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑.但a ...

  6. kali 2019-4中文乱码解决方法

    1.更换阿里源 编辑源,apt-get update && apt-get upgrade && apt-get clean ,更新好源和更新软件 #阿里云deb ht ...

  7. 使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题

    在前篇随笔<使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理>中介绍了Vue-TreeSelect组件的使用,包括使用v-modal绑定值,normalizer ...

  8. ElasticSearch-03-远行、停止

    在Windows下执行elasticsearch.bat 在Linux下运行./elasticsearch 指定集群名称和节点名称: ./elasticsearch --cluster.name my ...

  9. 华为应用市场AppGallery Connect正式推出全新LOGO

    华为应用市场AppGallery Connect(简称AGC)正式推出全新Logo,新Logo的设计灵感源于编码中的符号<>,两个括号紧密联结成一个正方形,寓意华为应用市场AGC与开发者深 ...

  10. Day16_94_IO_读取文件字节流read()方法(三)

    读取文件字节流read()方法(三) int read(byte[] bytes) 返回值为int类型, 该int类型数据表示每一次读取到的有效字节数,也就是读取到了几个字节, 一个都没读取到返回-1 ...