详解如何用webpack打包一个网站应用项目


Posted in Javascript onJuly 12, 2017

本文介绍了如何用webpack打包一个网站应用,现在分享给大家,有需要的可以了解一下
随着前端技术的发展,越来越多新名词出现在我们眼前。angularjs、react、gulp、webpack、es6、babel……新技术出现,让我们了解了解用起来吧!今天我来介绍一下如何用webpack打包一个网页应用。

一般我们写页面,大概都是这样的结构:

index.html
   css
    style.css
   js
     index.js
  ...........

这样我们的html里直接引用css和js,完成一个网页应用。用webpack也类似,只是webpack把图片、css和js都编译打包成一个文件,我们只需要引用一个文件就可以了。

1.我们需要先安装node环境。没安装的请自行安装

2.在项目目录下输入npm init初始化一个node项目,输入项目名称等信息,完成后生成一个package.json文件。

3.在项目目录下安装webpack

npm install --save-dev webpack

4.我们需要一个webpack.config.js文件,记录webpack配置信息。它的配置大概这样:

var webpack = require('webpack');
var path = require('path');
var buildPath = path.resolve(__dirname, 'build');
var config = {
 //入口文件
 entry: {
  index : './src/js/index.js'
 },
 extensions: ['', '.js', '.json', '.css', '.less'],
 output: {
  path: buildPath,  //编译后的文件路径
  filename: 'app.js'
 },
 module: {
  //Loaders
  loaders: [
   //.css 文件使用 style-loader 和 css-loader 来处理
   { test: /\.css$/, loader: 'style-loader!css-loader' },
   { test: /\.less$/,
     loader: 'style-loader!css-loader!less-loader'
   },
   //.js 文件使用 babel 来编译处理
   { test: /\.js$/, loader: 'babel' },
   //图片文件使用 url-loader 来处理,小于8kb的直接转为base64
   { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}
   ]

 },
};

module.exports = config;

我们需要指定编译的入口文件和输出的目录路径,以及css和js用什么loader处理,比如我使用了less,要编译less文件,就指定less-loader,js我要用es6来写,为了兼容性,用babel来转成es5的代码。如果要使用react,也可以指定jsx等的编译方式。

5.这些loader都是需要npm安装的

npm install --save-dev css-loader less less-loader style-loader url-loader babel babel-core babel-loader babel-preset-es2015

6.如果需要用babel,在项目目录下新建一个名为.babelrc的隐藏文件,里面这样写:

{"presets":["es2015"]}

保存。

7.根据配置可以看到我们需要一个src文件夹和一个build文件夹,src放图片、css和js的源代码,build作为输出文件夹放编译后的文件。

8.src/js/index.js文件作为我们的入口文件,我们在里面可以愉快地写es6的代码,比如:

'use strict';
require('../css/base.css');
require('../css/animate.css');
require('../css/style.less');
require('../js/zepto.min.js');
let a = 'world';
let hello = `hello ${a}`;
console.log(hello);

可以看到css我们都通过require的方式引进来,这样webpack会把css和js打包进一个文件。

9.我们还差个index.html,放在项目文件夹下就可以,正常写,引入build/app.js就可以啦!

10.让我们试试吧,在命令行项目目录下运行webpack,哇,成功!

Time: **2622**ms
 **Asset**  **Size** **Chunks**       **Chunk Names**
**app.js** 120 kB    **0** **[emitted]** index
  + 10 hidden modules

可以看到app.js已经生成啦!

tips:

  1. 如果我们不想每次修改都手工编译,直接执行webpack --watch就会自动监听文件修改,自动编译。
  2. 如果我们想压缩混淆代码,执行webpack -p吧!
  3. 如果配置文件不叫webpack.config.js,也可以运行webpack --config *.js指定配置文件。

webpack功能强大,这里只是指引小白开始使用,想深入了解的童鞋快去看官方文档吧!http://webpack.github.io/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js活用事件触发对象动作
Aug 10 Javascript
jquery 新浪网易的评论块制作
Jul 01 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
jQuery中ready事件用法实例
Jan 19 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
Dec 02 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
vue获取input输入值的问题解决办法
Oct 17 Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 #Javascript
AngularJS实现select的ng-options功能示例
Jul 12 #Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 #Javascript
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 #Javascript
详解Node项目部署到云服务器上
Jul 12 #Javascript
angular.js中解决跨域问题的三种方式
Jul 12 #Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 #Javascript
You might like
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
python常见数制转换实例分析
2015/05/09 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
EJB的几种类型
2012/08/15 面试题
毕业生怎样写好自荐信
2013/11/11 职场文书
企业申诉管理制度
2014/01/30 职场文书
表演方阵解说词
2014/02/08 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
求职自荐信的格式
2014/04/07 职场文书
健康证明
2015/06/19 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
Win11更新失败并提示0xc1900101
2022/04/19 数码科技