详解如何用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 09 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
js打造数组转json函数
Jan 14 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 Javascript
理解JavaScript事件对象
Jan 25 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
AngularJs  E2E Testing 详解
Sep 02 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
Python函数参数分类原理详解
2020/05/28 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
小学课外阅读总结
2014/07/09 职场文书
毕业证委托书范文
2014/09/26 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
财务检查整改报告
2014/11/06 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
学生检讨书范文
2015/01/27 职场文书
监守自盗观后感
2015/06/10 职场文书
退货证明模板
2015/06/23 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python