本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、课程设计和辅导 4、单片机开发 5、串口通讯调试
 当前位置:文章中心 >> web前端技术
立即购买视频教程 Webpack教程01
夜鹰教程网 来源:www.yyjcw.com 日期:2018-4-27 22:58:57
Webpack 是目前流行的打包工具,如何安装它呢?

这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



Webpack 是目前流行的打包工具,如何安装它呢?

1. 安装 Node Js

首先,Webpack 是基于 NodeJs 的工具,你必须首先安装 NodeJs. NodeJs 仅仅只需要在你的系统中安装一次就可以了。

2. 全局安装 Webpack

我们希望能够在系统的任何文件夹中使用 Webpack,使用的方式是通过 Webpack 命令来完成的,这需要我们全局安装 Webpack。这也只需要安装一次,以后每个项目就不需要重新全局安装了。

$ npm install webpack -g

 成功安装之后,你应该能够在任何目录中执行 webpack 命令,如果你还没有项目的配置文件的话,应该会看到当前的 Webpack 版本和一个命令的帮助列表。

> webpackwebpack 1.12.12Usage: https://webpack.github.io/docs/cli.htmlOptions:  --help, -h, -?

  --config  --context  --entry  --module-bind  --module-bind-post  --module-bind-pre  --output-path  --output-file

  --output-chunk-file

  --output-named-chunk-file

  --output-source-map-file

  --output-public-path  --output-jsonp-function

  --output-pathinfo  --output-library  --output-library-target  --records-input-path  --records-output-path  --records-path  --define  --target  --cache                                                                                           [default: true]  --watch, -w

  --watch which closes when stdin ends  --watch-aggregate-timeout  --watch-poll  --hot  --debug  --devtool  --progress  --resolve-alias  --resolve-loader-alias  --optimize-max-chunks  --optimize-min-chunk-size  --optimize-minimize  --optimize-occurence-order  --optimize-dedupe  --prefetch  --provide  --labeled-modules  --plugin  --bail  --profile  -d                                    shortcut for --debug --devtool sourcemap --output-pathinfo  -p                                    shortcut for --optimize-minimize  --json, -j  --colors, -c  --sort-modules-by  --sort-chunks-by  --sort-assets-by  --hide-modules  --display-exclude  --display-modules  --display-chunks  --display-error-details  --display-origins  --display-cached  --display-cached-assets  --display-reasons, --verbose, -v


Output filename not configured.

PS C:\study\webpack\w1>

 

注意,最后还提示你,当前没有找到 webpack 配置文件。

3. 在项目中安装 Webpack

最好在你的项目中也包含一份独立的 Webpack,这样你更方便管理你的项目。为什么又是全局安装,又是局部安装呢?可以参考这里的说明。

3.1 确认创建 NPM 项目文件

首先,你需要已经创建了 NPM 的项目文件,如果没有的话,使用 init 命令创建它。

 npm init

你需要回答一系列问题。最终你会得到一个名为 package.json 的 NPM 项目文件,如果你愿意的话,手工创建它也不错。甚至你可以直接复制一个过来。

一个新创建的 package.json 内容应该如下所示。

{  "name": "w1",  "version": "1.0.0",  "description": "",  "main": "index.js",  "dependencies": {},  "devDependencies": {},  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"

  },  "keywords": [],  "author": "",  "license": "ISC"}

 

 

3.2 在项目中安装 Webpack

现在,可以在项目中安装 Webpack 了,直接使用 NPM 的 install 命令。

npm install webpack --save-dev

 --save-dev 的意思是说 webpack 是一个开发工具,我们需要将这一点保存到 package.Json 文件中。

install 命令可以简化为单个字符 i,注意是小写的 i。

--save-dev 还可以简化为大写的 S,写成 -S,你可以在这里查看 instal 的更详细使用说明。

npm i webpack --S

你应该看到一个长长的输出,这是由于 Webpack 是一个很复杂的工具。它依赖很多的其它工具。

> npm install webpack --save-dev

w1@1.0.0 w1

`-- webpack@1.13.2

  +-- acorn@3.3.0

  +-- async@1.5.2

  +-- clone@1.0.2

  +-- enhanced-resolve@0.9.1

  | +-- graceful-fs@4.1.9

  | `-- memory-fs@0.2.0

  +-- interpret@0.6.6

  +-- loader-utils@0.2.16

  | +-- big.js@3.1.3

  | +-- emojis-list@2.1.0

  | +-- json5@0.5.0

  | `-- object-assign@4.1.0

  +-- memory-fs@0.3.0

  | +-- errno@0.1.4

  | | `-- prr@0.0.0

  | `-- readable-stream@2.1.5

  |   +-- buffer-shims@1.0.0

  |   +-- core-util-is@1.0.2

  |   +-- inherits@2.0.3

  |   +-- isarray@1.0.0

  |   +-- process-nextick-args@1.0.7

  |   `-- util-deprecate@1.0.2

  +-- mkdirp@0.5.1

  | `-- minimist@0.0.8

  +-- node-libs-browser@0.6.0

  | +-- assert@1.4.1

  | +-- browserify-zlib@0.1.4

  | | `-- pako@0.2.9

  | +-- buffer@4.9.1

  | | +-- base64-js@1.2.0

  | | `-- ieee754@1.1.8

  | +-- console-browserify@1.1.0

  | | `-- date-now@0.1.4

  | +-- constants-browserify@0.0.1

  | +-- crypto-browserify@3.2.8

  | | +-- pbkdf2-compat@2.0.1

  | | +-- ripemd160@0.2.0

  | | `-- sha.js@2.2.6

  | +-- domain-browser@1.1.7

  | +-- events@1.1.1

  | +-- http-browserify@1.7.0

  | | `-- Base64@0.2.1

  | +-- https-browserify@0.0.0

  | +-- os-browserify@0.1.2

  | +-- path-browserify@0.0.0

  | +-- process@0.11.9

  | +-- punycode@1.4.1

  | +-- querystring-es3@0.2.1

  | +-- readable-stream@1.1.14

  | | `-- isarray@0.0.1

  | +-- stream-browserify@1.0.0

  | | `-- readable-stream@1.1.14

  | |   `-- isarray@0.0.1

  | +-- string_decoder@0.10.31

  | +-- timers-browserify@1.4.2

  | +-- tty-browserify@0.0.0

  | +-- url@0.10.3

  | | +-- punycode@1.3.2

  | | `-- querystring@0.2.0

  | +-- util@0.10.3

  | | `-- inherits@2.0.1

  | `-- vm-browserify@0.0.4

  |   `-- indexof@0.0.1

  +-- optimist@0.6.1

  | `-- wordwrap@0.0.3

  +-- supports-color@3.1.2

  | `-- has-flag@1.0.0

  +-- tapable@0.1.10

  +-- uglify-js@2.6.4

  | +-- async@0.2.10

  | +-- source-map@0.5.6

  | +-- uglify-to-browserify@1.0.2

  | `-- yargs@3.10.0

  |   +-- camelcase@1.2.1

  |   +-- cliui@2.1.0

  |   | +-- center-align@0.1.3

  |   | | +-- align-text@0.1.4

  |   | | | +-- longest@1.0.1

  |   | | | `-- repeat-string@1.5.4

  |   | | `-- lazy-cache@1.0.4

  |   | +-- right-align@0.1.3

  |   | `-- wordwrap@0.0.2

  |   +-- decamelize@1.2.0

  |   `-- window-size@0.1.0

  +-- watchpack@0.2.9

  | +-- async@0.9.2

  | `-- chokidar@1.6.1

  |   +-- anymatch@1.3.0

  |   | +-- arrify@1.0.1

  |   | `-- micromatch@2.3.11

  |   |   +-- arr-diff@2.0.0

  |   |   | `-- arr-flatten@1.0.1

  |   |   +-- array-unique@0.2.1

  |   |   +-- braces@1.8.5

  |   |   | +-- expand-range@1.8.2

  |   |   | | `-- fill-range@2.2.3

  |   |   | |   +-- is-number@2.1.0

  |   |   | |   +-- isobject@2.1.0

  |   |   | |   `-- randomatic@1.1.5

  |   |   | +-- preserve@0.2.0

  |   |   | `-- repeat-element@1.1.2

  |   |   +-- expand-brackets@0.1.5

  |   |   | `-- is-posix-bracket@0.1.1

  |   |   +-- extglob@0.3.2

  |   |   +-- filename-regex@2.0.0

  |   |   +-- kind-of@3.0.4

  |   |   | `-- is-buffer@1.1.4

  |   |   +-- normalize-path@2.0.1

  |   |   +-- object.omit@2.0.0

  |   |   | +-- for-own@0.1.4

  |   |   | | `-- for-in@0.1.6

  |   |   | `-- is-extendable@0.1.1

  |   |   +-- parse-glob@3.0.4

  |   |   | +-- glob-base@0.3.0

  |   |   | `-- is-dotfile@1.0.2

  |   |   `-- regex-cache@0.4.3

  |   |     +-- is-equal-shallow@0.1.3

  |   |     `-- is-primitive@2.0.0

  |   +-- async-each@1.0.1

  |   +-- glob-parent@2.0.0

  |   +-- is-binary-path@1.0.1

  |   | `-- binary-extensions@1.7.0

  |   +-- is-glob@2.0.1

  |   | `-- is-extglob@1.0.0

  |   +-- path-is-absolute@1.0.1

  |   `-- readdirp@2.1.0

  |     +-- minimatch@3.0.3

  |     | `-- brace-expansion@1.1.6

  |     |   +-- balanced-match@0.4.2

  |     |   `-- concat-map@0.0.1

  |     `-- set-immediate-shim@1.0.1

  `-- webpack-core@0.6.8

    +-- source-list-map@0.1.6

    `-- source-map@0.4.4

      `-- amdefine@1.0.0npm WARN optional Skipping failed optional dependency /chokidar/fsevents:

npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.14npm WARN w1@1.0.0 No description

npm WARN w1@1.0.0 No repository field.>

 

这时候,你再检查一下 package.json 文件,它应该多了三行。

{  "name": "w1",  "version": "1.0.0",  "description": "",  "main": "index.js",  "dependencies": {},  "devDependencies": {    "webpack": "^1.13.2"

  },  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"

  },  "keywords": [],  "author": "",  "license": "ISC"}

 

 

4.  Hello, Webpack

 

4.1 打包普通脚本文件

写一段普通的脚本,例如,一个 Hellowrold 脚本。当然了,这里应该是 Hello,Webpack.

function hello(){

    alert("Hello, Webpack!");

}

 

保存到你的项目根目录中,文件名就叫 hello.js

4.2 创建 Webpack 配置文件

Webpack 根据配置文件的配置来完成打包,默认的配置文件名称是 webpack.config.js。

Webpack 的工作很简单,就是打包,你需要告诉它打包的内容,还有输出到哪里。entry 就是入口,显然 output 就是输出。

我们让 Webpack 将 hello.js 文件打包后输出到 bundle.js 文件中。

module.exports = {  // 入口

  entry: "./hello.js",  // 输出的文件名  output: {

    filename: 'bundle.js'

  }

};

 在命令窗口,输入 webpack 回车执行。应该会看到如下的输出。

> webpack

Hash: 05c39d9076887c35f015

Version: webpack 1.13.2Time: 59ms

    Asset     Size  Chunks             Chunk Names

bundle.js  1.44 kB       0  [emitted]  main

   [0] ./hello.js 51 bytes {0} [built]

>

 默认的入口文件名为 index.js,如果你将 hello.js 改名为 index.js,还可以直接使用目录名,不用提供文件名。

module.exports = {  // 入口,默认入口文件名为 index.js

  entry: ".",  // 输出的文件名  output: {

    filename: 'bundle.js'

  }

};

生成的 bundle.js 文件内容为

/******/ (function(modules) { // webpackBootstrap/******/     // The module cache/******/     var installedModules = {};/******/     // The require function/******/     function __webpack_require__(moduleId) {/******/         // Check if module is in cache/******/         if(installedModules[moduleId])/******/             return installedModules[moduleId].exports;/******/         // Create a new module (and put it into the cache)/******/         var module = installedModules[moduleId] = {/******/             exports: {},/******/             id: moduleId,/******/             loaded: false/******/         };/******/         // Execute the module function/******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);/******/         // Flag the module as loaded/******/         module.loaded = true;/******/         // Return the exports of the module/******/         return module.exports;/******/     }/******/     // expose the modules object (__webpack_modules__)/******/     __webpack_require__.m = modules;/******/     // expose the module cache/******/     __webpack_require__.c = installedModules;/******/     // __webpack_public_path__/******/     __webpack_require__.p = "";/******/     // Load entry module and return exports/******/     return __webpack_require__(0);/******/ })/************************************************************************//******/ ([/* 0 *//***/ function(module, exports) {    function hello(){

        alert("Hello, Webpack!");

    }/***/ }/******/ ]);

 大多都是注释,最后就是我们的脚本。

 

4.2 将脚本嵌入到网页中

刚刚只是一段脚本,还需要放到网页中才能执行。我们可以安装一个自动帮我们生成宿主网页的 webpack 插件 html-webpack-plugin 来帮助我们。

npm install html-webpack-plugin --save-dev

应该会看到如下的输出。

> npm install html-webpack-plugin --save-dev

w1@1.0.0 w1

`-- html-webpack-plugin@2.24.0

  +-- bluebird@3.4.6

  +-- html-minifier@3.1.0

  | +-- change-case@3.0.0

  | | +-- camel-case@3.0.0

  | | +-- constant-case@2.0.0

  | | +-- dot-case@2.1.0

  | | +-- header-case@1.0.0

  | | +-- is-lower-case@1.1.3

  | | +-- is-upper-case@1.1.2

  | | +-- lower-case@1.1.3

  | | +-- lower-case-first@1.0.2

  | | +-- no-case@2.3.0

  | | +-- param-case@2.1.0

  | | +-- pascal-case@2.0.0

  | | +-- path-case@2.1.0

  | | +-- sentence-case@2.1.0

  | | +-- snake-case@2.1.0

  | | +-- swap-case@1.1.2

  | | +-- title-case@2.1.0

  | | +-- upper-case@1.1.3

  | | `-- upper-case-first@1.1.2

  | +-- clean-css@3.4.20

  | | +-- commander@2.8.1

  | | `-- source-map@0.4.4

  | +-- commander@2.9.0

  | | `-- graceful-readlink@1.0.1

  | +-- he@1.1.0

  | +-- ncname@1.0.0

  | | `-- xml-char-classes@1.0.0

  | +-- relateurl@0.2.7

  | `-- uglify-js@2.7.3

  |   `-- async@0.2.10

  +-- lodash@4.16.4

  +-- pretty-error@2.0.2

  | +-- renderkid@2.0.0

  | | +-- css-select@1.2.0

  | | | +-- boolbase@1.0.0

  | | | +-- css-what@2.1.0

  | | | +-- domutils@1.5.1

  | | | | `-- dom-serializer@0.1.0

  | | | |   +-- domelementtype@1.1.3

  | | | |   `-- entities@1.1.1

  | | | `-- nth-check@1.0.1

  | | +-- dom-converter@0.1.4

  | | | `-- utila@0.3.3

  | | +-- htmlparser2@3.3.0

  | | | +-- domelementtype@1.3.0

  | | | +-- domhandler@2.1.0

  | | | +-- domutils@1.1.6

  | | | `-- readable-stream@1.0.34

  | | |   `-- isarray@0.0.1

  | | +-- strip-ansi@3.0.1

  | | | `-- ansi-regex@2.0.0

  | | `-- utila@0.3.3

  | `-- utila@0.4.0

  `-- toposort@1.0.0npm WARN optional Skipping failed optional dependency /chokidar/fsevents:

npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.14npm WARN w1@1.0.0 No description

npm WARN w1@1.0.0 No repository field.>

这说明这个插件安装好了。

配置 Webpack 使用这个插件,帮助我们生成一个网页,然后将打包的脚本自动插入到这个网页中。

var HtmlwebpackPlugin = require('html-webpack-plugin');


module.exports = {  // 入口

  entry: ".",  // 输出的文件名  output: {

    filename: 'bundle.js'

  },  // 添加我们的插件 会自动生成一个html文件  plugins: [    new HtmlwebpackPlugin({

      title: 'Hello Webpack'

    })

  ]

};

其实,这个配置文件就是一段程序,注意第一行,一定要加上。

重新执行 webpack 命令。你会看到多生成了一个名为 index.html 的网页。

> webpack

Hash: 05c39d9076887c35f015

Version: webpack 1.13.2Time: 560ms

     Asset       Size  Chunks             Chunk Names

 bundle.js    1.44 kB       0  [emitted]  mainindex.html  184 bytes          [emitted]

   [0] ./index.js 51 bytes {0} [built]

Child html-webpack-plugin for "index.html":        + 3 hidden modules>

 

打开这个网页,检查插入的脚本引用。

<!DOCTYPE html><html>

  <head>

    <meta charset="UTF-8">

    <title>Hello Webpack</title>

  </head>

  <body>

  <script type="text/javascript" src="bundle.js"></script></body></html>

 

 

5. 总结

Webpack 是一个基于 NodeJs 的打包工具,我们可以使用它帮助我们将脚本打包,它还可以帮助我们生成宿主网页,并自动将打包之后的脚本嵌入到这个网页中。

 

附录:

html-webpack-plugin 插件的使用说明


复制链接 网友评论 收藏本文 关闭此页
上一条: webpack学习指南  下一条: 微信小程序第一批吃螃蟹的人
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  
  热点推荐
XML Schema学习笔记(1)
XML Schema学习笔记(2)
C#对XML文档的操作
ASP操作XMLDOM
XML入门教程:分析XML
百度新闻开放协议XML文档制作方法…
XSL 语言
用RSS做五分钟一自动更新的网站
XML入门教程:文档类型声明
XML教程:通过一个例子来学习XML的…
XML节点相关知识
把XML文件绑定到列表控件
XML+XSLT+CSS+JQuery+WebService组…
XHTML头部Doctype声明必不可少!
历数Firefox2.0对XML处理的改进
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
金三银四跳槽季—前端面试汇总
Sublime常用插件汇总(全)
大前端学习路线
如何克服前端学习进步慢的问题
web前端常见基础问题
阿里前端面试经历(转载)
Web前端需要掌握技术汇总(转)
ESLint详解-让你的代码更加规范
通过userAgent适配 PC端和移动端网…
js操作DOM中需要注意的问题
Promise编程简介
Emmet语法和实例
新手所必须掌握的前端知识汇总
移动端视口的相关概念及其适配方案…
上传图片立即预览
  工具下载  需要远程协助? 

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
微信小程序 vue.js高级实例视频教程

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



关于我们 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3