详解如何用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 相关文章推荐
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
jquery radio 操作代码
Mar 16 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
jquery常用操作小结
Jul 21 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
使用vue.js实现联动效果的示例代码
Jan 10 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
Jan 31 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
Python实现简单的可逆加密程序实例
2015/03/05 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
django正续或者倒序查库实例
2020/05/19 Python
Python类的继承super相关原理解析
2020/10/22 Python
日语翻译个人求职的自我评价
2013/10/14 职场文书
业务经理的岗位职责
2013/11/16 职场文书
幼儿园门卫制度
2014/01/29 职场文书
律师催款函范文
2015/06/24 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS