webpack使用
概念
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
webpack的四个核心概念:
- 入口(entry):
入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。 - 输出(output):
output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程 - loader:
loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理 - 插件(plugins):
loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。
安装:
//全局安装 npm install -g webpack
正式使用Webpack前的准备
1.新建一个文件夹(例如:webpackDemo)
2.在webpackDemo目录下使用npm init命令可以自动创建这个package.json文件
npm init
//package.json (json文件不支持注解,复制时请把注解删除)
{
"name": "webpacktest",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack", //npm start
"server": "webpack-dev-server --open" //npm run server
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.30.0",
"webpack-dev-server": "^3.3.1"
}
}
3.安装Webpack作为依赖包
npm install --save-dev webpack
4.构建本地服务器
npm install --save-dev webpack-dev-server
//webpack.config.js
module.exports = {
entry: __dirname + "/app/main.js",//已多次提及的唯一入口文件
output: { //在哪里输出它所创建的 bundles
// 注:“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。
path: __dirname + "/public",//打包后的文件存放的地方
filename: "bundle.js"//打包后输出文件的文件名
},
devtool: 'eval-source-map', //方便的调试能极大的提高开发效率
// devtool: 'cheap-module-eval-source-map', //构建速度更快,但是不利于调试,推荐在大型项目考虑时间成本时使用。
/*
构建本地服务器
想不想让你的浏览器监听你的代码的修改,并自动刷新显示修改后的结果,其实Webpack提供一个可选的本地开发服务器,这个本地服务器基于node.js构建,可以实现你想要的这些功能,不过它是一个单独的组件,在webpack中进行配置之前需要单独安装它作为项目依赖:
npm install --save-dev webpack-dev-server
*/
devServer: {
contentBase: "./public",//本地服务器所加载的页面所在的目录
historyApiFallback: true,//不跳转
inline: true,//实时刷新
port:8080
} ,
}
4.在webpackDemo目录下新建一个app文件夹和public文件夹。在app目录下新建一个main.js文件,在public目录下新建一个index.html文件。
//main.js
document.querySelector("#root").innerHTML="hello world";
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Webpack Sample Project</title>
</head>
<body>
<div id="root">
</div>
<script src="bundle.js"></script>
</body>
</html>
5. 本地调试:
npm run server
打包:
npm start

浙公网安备 33010602011771号