详解如何用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 相关文章推荐
javascript中删除指定数组中指定的元素的代码
Feb 12 Javascript
Jquery公告滚动+AJAX后台得到数据
Apr 14 Javascript
js DOM 元素ID就是全局变量
Sep 20 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
js重写方法的简单实现
Jul 10 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
AngularJS过滤器filter用法实例分析
Nov 04 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
Mar 12 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中$_SERVER使用说明
2015/07/05 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php PDO异常处理详解
2016/11/20 PHP
JS 遮照层实现代码
2010/03/31 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
javascript控制台详解
2015/06/25 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
python处理二进制数据的方法
2015/06/03 Python
浅析python协程相关概念
2018/01/20 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Keras实现DenseNet结构操作
2020/07/06 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
金讯Java笔试题目
2013/06/18 面试题
计算机科学技术自荐信
2014/06/12 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers