webpack基本使用

第一章:webpack简介

1.1 webpack是什么

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
在这里插入图片描述

1.2 webpack五大概念

1.2.1 entry:

入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图。
单入口:

module.exports = {
  entry: './src/index.js'
};

多入口:

module.exports = {
    entry: {
        main: './src/index.js',
        test: './src/test.js'
    }
};
1.2.2 Output:

输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去,以及如何命名。
当入口文件为单入口时:

  output: {
    filename: 'bundle.js',
    path: resolve(__dirname, 'build')
  }

当入口文件多入口时(其中name相对应入口文件名称,contenthash:10指10位数的hash值,使得产生文件的唯一性):

output: {
    filename: 'js/[name].[contenthash:10].js',
    path: resolve(__dirname, 'build')
}
1.2.3 Loader:

Loader 让 webpack 能 够 去 处 理 那 些 非 JavaScript 文 件 (webpack 自 身 只 理 解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理

module.exports = {
	entry: "./src/js/index.js",
	output: {
		filename: 'js/built.js',
		path: resolve(__dirname, 'build')
	},
	module: {
		rules: [{
			// 处理less资源
			test: /\.less$/,
			use: ['style-loader', 'css-loader', 'less-loader']
		}, {
			test: /\.js$/,
			exclude: /node_modules/,
			loader: 'eslint-loader',
			enforce: 'pre', // 优先执行,需要在js的兼容性处理之前执行
			// 消除检查过程中的问题
			options: {
				fix: true
			}
		}]
	}
}

我们可以看到其中使用了两个重要的属性:test,use
1: test : 用于标识出应该被对应的 loader 进行转换的某个或某些文件。
比如当程序中使用了less时,test: /.less$/ 表示在编译时检索到的以.less结尾的文件进行处理,至于怎么处理,这时候use的作用就出现了。
2: use 属性,表示进行转换时,应该使用哪个 loader。
接上1,use表示处理这个test,要使用什么loader,use: [‘style-loader’, ‘css-loader’, ‘less-loader’] 表示将less先编译成css,再转成style,

1.2.4 Plugins:

loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
	entry: "./src/js/index.js",
	output: {
		filename: 'js/built.js',
		path: resolve(__dirname, 'build')
	},
	module: {
		rules: [{
			// 处理less资源
			test: /\.less$/,
			use: ['style-loader', 'css-loader', 'less-loader']
		}, {
			test: /\.js$/,
			exclude: /node_modules/,
			loader: 'eslint-loader',
			enforce: 'pre', // 优先执行,需要在js的兼容性处理之前执行
			// 消除检查过程中的问题
			options: {
				fix: true
			}
		}]
	},
	    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html'
        })
    ]
}

对于插件的功能,其实就类似于java语言中引用的依赖包,这里是下载一个依赖在node_modules中,再通过

const HtmlWebpackPlugin = require('html-webpack-plugin')

这快代码将依赖加载引入作为一个常量,将其实例化即可引用。

1.2.5 Mode:

通过选择 development 或 production 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化。

第二章:webpack使用

2.1 初始化配置

1: 初始化 package.json;(前提你已安装好node.js)
指定目录下输入指令: npm init即可

2: 下载并安装 webpack 输入指令:
npm install webpack webpack-cli -g
npm install webpack webpack-cli -D

2.2 编译打包应用

1: 创建文件

2:运行指令

开发环境指令:webpack src/js/index.js -o build/js/built.js --mode=development

功能:webpack 能够编译打包 js 和 json 文件,并且能将 es6 的模块化语法转换成 浏览器能识别的语法。

生产环境指令:webpack src/js/index.js -o build/js/built.js --mode=production

功能:在开发配置功能上多一个功能,压缩代码。

3:结论
webpack 能够编译打包 js 和 json 文件。 能将 es6 的模块化语法转换成浏览器能识别的语法。 能压缩代码。

官方链接:https://webpack.docschina.org/concepts/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值