前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webpack基础

webpack基础

原创
作者头像
mySoul
发布2018-10-17 20:13:02
5840
发布2018-10-17 20:13:02
举报
文章被收录于专栏:mySoulmySoul

webpack-基础

貌似这些属于编译原理的内容。

当时看了一点编译原理,当中的自动机,彻底懵。

不过大概了解了一点内容。感觉webpack一个打包工具非常类似于一个编译器,将一个文件,转换为另外一个文件。

一些概念

入口

入口,即寻找入口文件的及其依赖项的文件。即编译前的文件

配置文件为webpack.config.js中修改为

代码语言:txt
复制
module.exports = { 
  entry: "./app.js"
}

使用这个可以设置入口文件为./app.js由该文件,可以寻找相关的依赖

出口

output告诉要生成那些文件

代码语言:txt
复制
const path = require("path");

module.exports = { 
  entry: "./app.js",
  output: {
  	filename: "my-first-webpack.js"
  }
}

导出该文件

loader

loader可以让webpack处理非js文件。

代码语言:txt
复制
  module: {
  	rules: [
  		{test: /\.txt$/, use: 'raw-loader'}	// 再遇到txt文件的时候,需要使用ras-loader进行转换一下 
  	]
  }

遇到txt文件的时候,需要使用raw-loader进行转换

类似于express中的中间件

raw-loader表示将文件作为字符串进行读取

插件

即打包,优化,定义环境中的变量等。

代码语言:txt
复制
  plugins: [
  	new HtmlWebpackPlugin({template: './src/index.html'})
  ]

入口文件

代码语言:txt
复制
const config = {
	entry: './file.js',	// 定义入口文件
}

module.exports = config;

分离应用程序和第三方库

代码语言:txt
复制
const config = {
	entry: {
		app: './src/app.js',
		vendors: './src/vendors.js'
	}
}

module.exports = config;

在上方中webpack会根据app和vendors分别创建两个互相没有任何依赖的依赖图,进行打包

在平常中,一个html文档,只使用一个入口文件。

出口

如何写出编译后的文件。

代码语言:txt
复制
const config = {
	entry: {
		app: './src/app.js',
		vendors: './src/vendors.js'
	},
	output: {
		filename: 'bundle.js',	// 文件名称
		path: '/home/assets'	// 输出后的绝对路径
	}
}

module.exports = config;
代码语言:txt
复制
const config = {
	entry: {
		app: './src/app.js',
		vendors: './src/vendors.js'
	},
	output: {
		filename: '[name].js',	// 文件名称,name为对象名,输出的文件为app.js vendors.js
		path: '/home/assets'	// 输出后的绝对路径
	}
}

module.exports = config;

出口,即编译完成后生成的文件

load

load为代码转换,可以使用这个加载css文件,使用这个将typeScript转为JavaScript

安装

代码语言:txt
复制
npm install --save-dev ts-loader
代码语言:txt
复制
const config = {
	entry: {
		app: './app.js'
	},
	output: {
		filename: '[name].js',	// 文件名称,name为对象名,输出的文件为app.js vendors.js
		path: '/home/assets'	// 输出后的绝对路径
	},
	module: {
		rules: [
			{test: /\.ts$/, use: 'ts-loader'}
		]
	}
}

module.exports = config;

使用这个可以在打包的时候,将ts文件转为js文件。

插件

创建同名的js文件

这里的是apply()函数。

代码语言:txt
复制
const pluginName = "ConsoleLogOnBuildWebpackPlugin"

class ConsoleLogOnBuildWebpackPlugin {
	apply(){
		console.log('构建开始');
	}
}

使用插件

代码语言:txt
复制
const webpack = require('webpack');	// 访问内置插件

const config = {
	entry: {
		app: './app.js'
	},
	output: {
		filename: '[name].js',	// 文件名称,name为对象名,输出的文件为app.js vendors.js
		path: '/home/assets'	// 输出后的绝对路径
	},
	module: {
		rules: [
			{test: /\.ts$/, use: 'ts-loader'}
		]
	},
	plugins: [
		new webpack.optimize.UgifyJsPlugin(),
		new ConsoleLogOnBuildWebpackPlugin()
	]
}

module.exports = config;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一些概念
    • 入口
      • 出口
        • loader
          • 插件
          • 入口文件
          • 出口
          • load
          • 插件
          相关产品与服务
          消息队列 TDMQ
          消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档