webpack简单笔记
本文简单记录学习webpack3.0的笔记,已备日后查阅。节省查阅文档时间
安装
可以使用npm安装
//全局安装
npm install -g webpack
//安装到项目目录
npm install --save-dev webpack
npm init会创建package.json文件。配置该文件可以简化我们之后的一些操作,比如我们对其中的“script”添加start命令,可以用“npm start”替代webpack命令
{
    name: "webpack-example",
    ...
    "scripts": {
        "start": "webpack"
    },
    ...
}
几个概念
webpack是一个现代javascript应用程序的静态模块打包器。它构建一个依赖关系图,包含所有模块,打包成一个或多个bundle。
四个核心概念
- entry :指示webpack应该从哪个模块开始,构建依赖图。默认值./src
- output:指示在哪里输出创建的bundles,默认值./dist
- loader:让 webpack 能够去处理那些非 JavaScript 文件。loader 能够 import 导入任何类型的模块
- plugin:插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量
entry 文件的指定
单一entry文件
mkdir entrydemo
cd entrydemo
npm init
npm init会让你输入一些信息配置package.json。如下
{
  "name": "entrydemo",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "MIT"
}
接下来我们要创建index.html和main.js文件。main.js文件操作index.html的p标签内容
index.html
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
	</head>
	<body>
		<p id="title"></p>
		<script type="text/javascript" src="main.js"></script>
	</body>
</html>
main.js
document.getElementById("title").innerHTML="HELLO webpack";
下面我们要用webpack将main.js打包成bundle.js文件
如果你的webpack是全局安装,那么
webpack main.js bundle.js
如果是安装在项目根目录
node_modules/.bin/webpack main.js bundle.js
注意,在webpack3中,webpack-cli是集成的,到了4里面分开来了。第一次webpack时候可能会提示你安装webpack-cli,安装即可。上面的命令也有所改变,关于webpack4,本文不赘述
然后将index.html的javascript路径改为bundle.js
<script type="text/javascript" src="bundle.js"></script>
然后打开index.html,可以看到页面和上面是一样的
以上是用命令行指定entry file,下面我们写配置文件webpack.config.js去构建bundle.js
module.exports = {
	entry: './main.js',
	output: {
		filename: 'bundle.js'
	}
}
写好配置文件后,运行webpack命令就构建好bundle.js了。(非全局安装是node_modules/.bin/webpack)
多个entry file
假设我们的入口文件是main1.js和 main2.js,对应输出是bundle1.js和bundle2.js
webpack.config.js这么写
module.exports = {
	entry: {
		bundle1: 'main1.js',
		bundle2: 'main2.js'
	}
	output: {
		filename: '[name].js'
	}
}
loader
Babel-loader
Babel-loader用来将JSX/ES6文件转换成普通JS文件
module.exports = {
  entry: './main.jsx',
  output: {
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['es2015', 'react']
          }
        }
      }
    ]
  }
};
CSS-loader
webpack.config.js
module.exports = {
  entry: './main.js',
  output: {
    filename: 'bundle.js'
  },
  module: {
    rules:[
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      },
    ]
  }
};
webpack简单笔记的更多相关文章
- webpack 简单笔记(一)
		安装部分不介绍了 (一)第一个最简单的demo,单入口,单文件 目录结构: webapck.config.js中代码: 'use strict' const path = require('path' ... 
- webpack 简单笔记(三)vue-cli 使用 webpack-bundle-analyzer 分析
		当我们使用CommonsChunkPlugin插件时可以使用webpack-bundle-analyzer插件来分析分块是否达到我们的目地 安装 npm install --save-dev webp ... 
- webpack 简单笔记(二)CommonsChunkPlugin插件
		接下来就要使用CommonsChunkPlugin插件 (一)单一入口,模块单一引用,分文件输出,单一入口,模块重复引用,分文件输 main.js代码 require('./static/js/mai ... 
- 【原】webpack学习笔记
		之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ... 
- mybatis-config.xml简单笔记
		mybatis-config.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ... 
- applicationContext.xml简单笔记
		applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <bean ... 
- Python学习笔记2-flask-sqlalchemy 简单笔记
		flask-sqlalchemy 简单笔记 字数 阅读 评论 喜欢 flask-sqlalchemy SQLAlchemy已经成为了python世界里面orm的标准,flask是一个轻巧的web框架, ... 
- webpack入门笔记
		此为第一篇主要是webpack入门笔记: http://if-true.com/2015/10/16/webpack-tutorial-translate.html 
- Android_简单笔记一
		入门学习Android的简单笔记(已经安装好了开发环境ADT) 一.关于 AndroidManifest.xml文件 1. android:icon和android:label定义了应用程序安装后显示 ... 
随机推荐
- 小智的旅行(Bridge)51nod 提高组试题
			luogu AC传送门(官方数据) 题目描述 小智最喜欢旅行了,这次,小智来到了一个岛屿众多的地方,有N座岛屿,编号为0到N-1,岛屿之间 由一些桥连接,可以从桥的任意一端到另一端,由于岛屿可能比较大 ... 
- 校园网络 luogu P2812 (又是强联通)
			题目传送门!(luogu) 首先考虑问题一 不难想到,如果有一个学校作为终端机,那么跟其处于同一个强联通中的所有学校就可以不用作为终端机了. 那么,问题一也就迎刃而解了:找到所有入度为0的缩点.因为这 ... 
- [Objective-C] 014_Objective-C 代码规范指南
			本文参考引用(http://www.csdn.net/article/2015-06-01/2824818-objective-c-style-guide/1) 拥有良好的编码规范,能使我们的代码保持 ... 
- 公司如何通过电脑监控来规范员工行为-iis7服务器管理功能教程
			现在员工办公基本都用电脑,而电脑不仅仅可以用来处理工作,还可以上网.娱乐等.往往很多员工的自制能力比较差,在工作时间和人聊天,浏览购物网站,看新闻,炒股等休闲娱乐上花费大量的时间,导致工作效率降低,影 ... 
- 从汉堡加料说起——浅谈C#中的Decorator模式
			相信大家都在都在汉堡店吃过汉堡,有些汉堡店很有特色,推出了汉堡订制服务,即,可以在汉堡中加料,加肉饼,加生菜之类(有点类似我们本地的肥肠粉里面加冒结子).更是让不少吃货大快朵颐,大呼过瘾,加6,7层肉 ... 
- ES6-函数与数组命名
			1 箭头函数 1.1 以往js function 名字(){ 其他语句 } 1.2 现在ES6 修正了一些this,以前this可以变 ()=>{ 其他语句 } 如果只有一个参数,()可以省 . ... 
- Java实现 蓝桥杯 算法训练 关联矩阵
			算法训练 关联矩阵 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目.n&l ... 
- Java实现 蓝桥杯VIP 算法提高 林丹大战李宗伟
			问题描述 我们用0表示林丹,1表示李宗伟. 输入数据中每行会给出一个0或者1,表示对应选手得1分. 当一方得分达到21分时,只要该方与对方分差超过1分,该方即胜出. 你需要输出最后获胜选手的代号. 输 ... 
- Java实现 LeetCode 117 填充每个节点的下一个右侧节点指针 II(二)
			117. 填充每个节点的下一个右侧节点指针 II 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每 ... 
- TZOJ 公交车
			描述 公交车在一条笔直的道路(道路宽度忽略,设为X轴)上行驶,按顺序路上有若干个站点(X坐标值),crq的家也在道路旁某个位置h(X坐标值),现在crq想知道哪个站点下车离家最近. 输入 输入数据的第 ... 
