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定义了应用程序安装后显示 ...
随机推荐
- 实验四:Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 班级课程主页链接 这个作业的要求在哪里 作业要求 学号-姓名 17043133-木腾飞 作业学习要求 1.学习Linux系统中如何查看帮助文档:2.在Linux系统中 ...
- Redis详解(九)------ 哨兵(Sentinel)模式详解
在上一篇博客----Redis详解(八)------ 主从复制,我们简单介绍了Redis的主从架构,但是这种主从架构存在一个问题,当主服务器宕机,从服务器不能够自动切换成主服务器,为了解决这个问题,我 ...
- JVM调优总结(七)-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- JSP指令 & 中文乱码问题
1. JSP 指令: JSP指令(directive)是为JSP引擎而设计的, 它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分. 2. 在JSP 2.0中,定义了 ...
- data类型的url
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Ta ...
- 添加对docker的监控
一.环境:已安装docker机器ip:192.168.0.202 二.原理 使用docker的metrics-add参数,提供对docker运行参数的访问条件. 三.修改/etc/docker/dae ...
- Java实现 LeetCode 820 单词的压缩编码(暴力)
820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...
- Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- 括号匹配-算法详细题解LeetCode
题目:有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...