详解如何用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与函数式编程解释
Apr 27 Javascript
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
Sep 10 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
Sep 04 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实现图片简单上传
2006/10/09 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php取得字符串首字母的方法
2015/03/25 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
js实现返回顶部效果
2017/03/10 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
python实时监控cpu小工具
2018/06/21 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
互动出版网:专业书籍
2017/03/21 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
资产评估专业大学生求职信
2013/09/29 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL