webpack入门--前端必备

webpack入门--前端必备

什么是 webpack?

webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。我们可以直接使用 require(XXX) 的形式来引入各模块,即使它们可能需要经过编译(比如JSX和sass),但这不用我们理会,因为 webpack 有着各种健全的加载器(loader)在处理这些事情。

为什么要使用 webpack?

很简单的一个道理,难道写react的同学会不用它么?

安装

首先你需要安装有node(我的版本为v5.4.1),然后执行

$ npm install webpack -g

当然如果常规项目把依赖写入 package.json 包更好:

$ npm init

$ npm install webpack --save-dev

我们在项目的根目录中的package.json 可以看到:(其它包根据你的项目需要另外安装)

{
  "name": "webpack",
  "version": "1.0.0",
  "description": "demo",
  "main": "main.js",
  "scripts": {
    "start": "webpack-dev-server",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "RORO彦",
  "license": "ISC",
  "dependencies": {
    "react": "^0.14.6"
  },
  "devDependencies": {
    "webpack": "^1.12.13",
    "webpack-dev-server": "^1.11.0",
    "babel-core": "^6.4.5",
    "babel-loader": "^6.2.1",
    "css-loader": "^0.23.1",
    "file-loader": "^0.8.5",
    "jsx-loader": "^0.13.2",
    "node-libs-browser": "^1.0.0",
    "sass-loader": "^3.1.2",
    "style-loader": "^0.13.0",
    "url-loader": "^0.5.7"
  }
}

配置文件

创建我们webpack的配置文件webpack.config.js:(这个文件需要手码的哦)

var webpack = require(‘webpack‘);
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin(‘common.js‘);

module.exports = {
    entry: "./main.js",
    output: {
        path: ‘./build‘, // 图片和 JS 会打包到这里来
        filename: "bundle.js"
    },
    module: {
        loaders: [
            {
                test: /\.css$/,
                loader: "style-loader!css-loader"
            },

            {
                test: /\.less$/,
                loader: ‘style-loader!css-loader!less-loader‘
            }, // 用 ! 来连接多个 loader

            {
                test: /\.(png|jpg)$/,
                loader: ‘url-loader?limit=8192‘
            } // 内联 base64 URLs, 限定 <=8k 的图片, 其他的用 URL

        ]
    },
    resolve: {
        extensions: [‘‘, ‘.js‘, ‘.json‘, ‘coffee‘]
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin()
    ]

}

对这个配置文件解释下:

1) entry:entry可以是个字符串或数组或者是对象。指定打包的入口文件,一个键值对,就是一个入口文件

2) output:包结果文件的名称,在这里我指定它在./build的文件夹打包输出

3) resolve:用于指明程序自动补全识别哪些后缀,
     注意一下, extensions 第一个是空字符串! 对应不需要后缀的情况.

4) module:以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。

1.js的引用

比如这里定义了凡是.js结尾的文件都是用babel-loader做处理,而.jsx结尾的文件会先经过jsx-loader处理,然后经过babel-loader处理。当然这些loader也需要通过npm install安装

2.样式及图片的引用

require(‘./bootstrap.css‘);

require(‘./myapp.sass‘);

var img = document.createElement(‘img‘);

img.src = require(‘./glyph.png‘);

当你引用 CSS(或者 SASS 吧), Webpack 会将 CSS 内联到 JavaScript 包当中, require() 会在页面当中插入一个<style>标签. 当你引入图片, Webpack 在包当中插入对应图片的 URL, 这个 URL 是由require()返回, 而图片可能被转化成 base64 格式的 dataUrl。但是注意,所有这些要在 webpack.config.js 文件写好对应的 loader:

5) plugins: 这里定义了需要使用的插件,

比如commonsPlugin在打包多个入口文件时会提取出公用的部分,生成common.js

这里还配置了NoErrorsPlugin插件,用来跳过编译时出错的代码并记录,使编译后运行时的包不会发生错误:当然Webpack还有很多其他的配置,具体可以参照它的配置文档

准备

在项目的根目录下新建一个index.html文件(如截图),这个是入口文件中引入程序跑起来的一些必要的东西

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script src="./build/bundle.js"></script>
</body>
</html>

注意,这里面引用的bundle.js文件非常重要,他是我们打包后的入口文件,不引入它程序是跑不起来的。

运行

在命令行中键入

webpack

当你发现提示的是绿色就表明成功了。

webpack -p 来针对发布环境编译(压缩代码)

webpack --watch 来进行开发过程持续的增量编译

webpack -d 来生成 SourceMaps

随着项目的增长,编译过程可能会越来越长,所以我们可以展示一些进度条以及增加配色来实现更友好地输出。我们可以通过以下命令达到目的:

webpack --progress --colors

开发服务器

提供开发服务器,启用HTTP静态服务器,通过以下命令全局安装

npm install webpack-dev-server -g

启动服务器

webpack-dev-server --progress --colors

这会绑定一个小型express服务器到localhost:8080,来为你的静态资源及bundle(自动编译)服务。通过访问http://localhost:8080/webpack-dev-server/bundle,bundle每次重编译后浏览器页面都会自动更新。

缺陷

Webpack 的报错挺不友好的,把中间过程打印出来看是不错的选择:

webpack --display-error-details

小结

Webpack是我目前接触到比较好的前端开发工具。很多功能之前在 FIS 文档上看到过, 但 FIS 相对重一些我始终没上手。这篇短文主要是关于webpack入门,让你大概了解什么是webpack,怎么最简单地去使用这个工具,这个教程中并未涉及到react的知识,要一起说,实在太多了,

webpack的官网是 http://webpack.github.io/ ,

文档地址是 http://webpack.github.io/docs/

时间: 2024-08-07 04:33:49

webpack入门--前端必备的相关文章

前端项目自动化构建工具——Webpack入门教程

参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置属性,不附带实例,将会以通俗易懂的形式地讲解:如若需要实例进行相关练习,可将本文作为理论基础: Webpack是前端项目自动化构建工具,本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构

React +ES6 +Webpack入门

React +ES6 +Webpack入门 React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利.其优秀的特性不再赘述.本文将详细的记录react babel webpack的环境搭建,以及搭建的过程中遇到的一些坑. 一.新建React项目 1.如图为新建react项目结构,其中 entry.js放置react入口代码,index.js放置react组件代码,asse

新手应该如何入门前端

7月1日的时候参加豪情大神组织的群内个人经历分享,总结了一下个人入门前端的一个过程,现整理成文,希望对后来者有帮助. 一.个人自我介绍 本人是14年飞行器制造专业毕业,之后在深圳的一家研究院从事航天方面的工作,之后跟随当时的领导跳槽到了一家新公司, 担任软件工程师,刚来的时候恰好公司官网出现问题, 领导就把这个事情交给我, 当时还根本没有接触前端, 只能硬着头皮上了. 然后就入坑了. 二.个人推荐的入门最佳实践 我入门的时候就是在网上找了一个帖子然后一头扎进去,按照帖子给的路线去学习, 现在看来

(一)webpack入门——webpack的安装

在看webpack官方文档的主页的时候,看着看着就想放弃 ,英文读起来吃力,也不知道webpack到底是用来干什么的.在之前虽然从别人那里知道webpack是现在很流行的前端构建工具,只是一个概念而已,具体不知道到底是干嘛,怎么用等等.然而在扫了几眼主页的时候还是不知道他用了干嘛的,真的放弃过,后来还是想想硬着头皮看吧.在自己的努力下总算明白了一些,下面将自己从官网学到的记录下来.至于webpack是什么,慢慢跟着我来动手,你就能理解他是什么了. 这篇文章的以下内容来自官方文档(不是直译,也有自

webpack入门-个人学习资源收集

本来是想自己写哈个人学习webpack心德的,不过网上现在已经有各种比较好的,详细的入门或者深入资源了. 所以我就简单总结了一下,我在入门webpack时看的一些博客和文档,以及顺道看到的一些觉得也应该了解的东西 webpack官方文档: https://www.webpackjs.com/concepts/ 比较好的webpack入门博客: https://segmentfault.com/a/1190000006178770 https://www.jb51.net/article/1173

webpack入门(二)资源管理

在我们的正常项目中,前端会有一些其他资源,比如图像.CSS.JSON.字体现在我们整合一些其他资源,看看webpack是如何处理webpack最出色的功能之一就是除了js文件,还可以通过loader的方式引入其他任何类型的文件我们先简单的介绍一下loader的概念loader让webpack能够去处理那些非js文件(webpack自身只能理解javascript),loader可以将所有类型的文件转换为webpack能够处理的有效模块,然后就可以利用webpack的打包能力,对他们进行处理我在d

Webpack 入门

Webpack 入门 Webpack 是目前流行的打包工具,如何安装它呢? 1. 安装 Node Js 首先,Webpack 是基于 NodeJs 的工具,你必须首先安装 NodeJs. NodeJs 仅仅只需要在你的系统中安装一次就可以了. 2. 全局安装 Webpack 我们希望能够在系统的任何文件夹中使用 Webpack,使用的方式是通过 Webpack 命令来完成的,这需要我们全局安装 Webpack.这也只需要安装一次,以后每个项目就不需要重新全局安装了. $ npm install

Webpack 入门指南 - 3. Hello, Angular2!

Webpack 入门指南 - 1.安装 Webpack 入门指南 - 2.模块 这一次,我们使用 Webpack 来打包 Angular 2 的应用. 与官方的 Hello, Angular 2 项目相比,我们不使用 System.js,而是使用 TypeScript 直接编译,然后使用 Webpack 打包生成代码. 1. 下载 Angular 2 以及依赖包 修改我们的 package.json 文件,添加 Angular 2 涉及的包,和 Angular 2 所依赖的包,以后,我们可以慢慢

webpack入门详解

webpack入门详解(基于webpack 3.5.4  2017-8-22) webpack常用命令: webpack --display-error-details    //执行打包 webpack -w               // 提供watch方法:实时进行打包更新 webpack -p           // 对打包后的文件进行压缩 webpack -d            // 提供source map,方便调式代码 webpack -dev-server --open