详解如何用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调用Activex控件的事件的实现方法
Apr 11 Javascript
使用js在页面中绘制表格核心代码
Sep 16 Javascript
javascript快速排序算法详解
Sep 17 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
JS实现图片高亮展示效果实例
Nov 24 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
Jan 09 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
关于Vue Webpack2单元测试示例详解
Aug 14 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 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闭包(Closure)使用详解
2013/05/02 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
php实现的生成排列算法示例
2019/07/25 PHP
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
javascript实现日历效果
2019/06/17 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
django框架如何集成celery进行开发
2017/05/24 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
python sort、sort_index方法代码实例
2019/03/28 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
辅导员评语
2014/05/04 职场文书
2014年人事部工作总结
2014/12/03 职场文书
2015年度党员个人总结
2015/02/14 职场文书
地震慰问信
2015/02/14 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL