webpack基础以及webpack中babel的配置
webpack 安装
- npm 初始化,控制台输入
npm init -y
- webpack 安装
npm i webpack webpack-cli -D
新建 webpack.config.js
const path = require('path')
module.exports = {
mode: "development",
entry:'./src/index.js',
output:{
filename:'bundle.js',
path:path.resolve(__dirname,"dist")
}
}
mode: 模式(可选:development,production)
entry: 入口文件
output: 打包输出文件(既打包到哪里)
在根目录新建 src/index.js
module.exports=function(){
return 2
}
package.json 配置启动
因为 webpack 不是全局安装的,所以不能使用 webpack 命令进行打包。可以在 package.json 中配置"build":"webpack":
{
"name": "webpackBabel",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build":"webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^5.59.1",
"webpack-cli": "^4.9.1"
}
}
到这里简单的 webpack 已经配置完成,在终端输入
npm run build
此时你就会发现多了个 dist/bundle.js 文件
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/***/ ((module) => {
eval("module.exports=function(){\r\n return 2\r\n}\n\n//# sourceURL=webpack://webpackBabel/./src/index.js?");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be inlined
/******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
/******/
/******/ })()
;
这就是打包后的文件,webpack 默认自带 common.js 解析,可以直接打包
loader 配置
webpack 如果需要打包 css,img 等文件时候是需要借助 loader 配置,在 module 参数进行配置,以下用了几个常用 loader 配置:
const path = require('path')
module.exports = {
mode: "development",
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, "dist")
},
module: {
rules: [{
test: /\.css$/,
use: [
// [style-loader](/loaders/style-loader)
{ loader: 'style-loader' },
// [css-loader](/loaders/css-loader)
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}, {
test: /\.(jpg|png|gif)$/,
use: {
loader: 'url-loader',
options: {
name: '[name]_[hash].[ext]',
outputPath: 'images/',
limit: 10240 //如果图片大小小于10240则采用base64
}
}
}, {
test: /\.(eot|ttf|svg)$/,
use: {
loader: 'file-loader'
}
}]
}
}
loader 是需要进行安装的:
npm i url-loader file-loader url-loader css-loader style-loader -D
HtmlWebpackPlugin 插件的安装
安装 html-webpack-plugin
npm i html-webpack-plugin -D
html-webpack-plugin 插件可以在 dist 文件夹下生产一个 index.html 文件并且引入打包后的 js 文件
html-webpack-plugin 配置在 plugin 中:
...
const HtmlWebpackPlugin = require("html-webpack-plugin")
...
plugins: [
new HtmlWebpackPlugin()
]
执行 npm run build 后会发现 dist 文件下多了个 index.html 并且引入了 bundle.js
babel 的配置
- 安装 babel
npm install --save-dev babel-loader @babel/preset-env @babel/core
配置 babel-loader:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,//不转换的文件
use: [{
loader: 'babel-loader'
}]
},
{
test: /\.css$/,
use: [
// [style-loader](/loaders/style-loader)
{ loader: 'style-loader' },
// [css-loader](/loaders/css-loader)
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
...
]
}
...
- 新建.babelrc 文件
{
"presets": ["@babel/preset-env"]
}
src/index.js 写一个 es6 语法:
module.exports=function(){
const a = 1
return a
}
然后执行 npm run build ,就会发现 dist/bundle.js 里的 const 被转换成了 var,虽然有些语法可以进行转换,但是遇到如 promise 打包过后 promise 并不会被转换,所以此时就需要垫片(polyfill)
@babel/polyfill 的使用
处理类似 assign,includes,map,includes,promise 的垫片
- 安装
npm i @babel/polyfill -s
- babelrc 配置
{
"presets": [
[
"@babel/preset-env",
{
"debug": true,
"useBuiltIns": "usage"//usage表示按需引入polyfill,entry全部引入,false不引入
}
]
]
}
到这babel基本可以实现到es5的转换了。
runtime为开发组件而生
polyfill 问题是已经解决了,但是如果你是开发 一个 npm 组件,此时就不能用polyfill了,因为polyfill会污染全局变量,这时候就要用到一个插件@babel/plugin-transform-runtime
- 安装
npm install --save @babel/runtime
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime-corejs2 --save
- .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"debug": true,
"useBuiltIns": "false"
}
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": 2 // 参考官方文档
}
]
],
}
webpack基础以及webpack中babel的配置的更多相关文章
- 17 webpack中babel的配置
在webpack中,默认只能处理一部分ES6的新语法,一些更高级的ES6语法或者ES7语法, webpack是处理不了的:这时候,就需要借助于第三方的loader,来帮助webpack处理这些高级的语 ...
- 17 webpack中babel的配置——静态属性与实例属性
// class关键字,是ES6中提供的新语法,是用来实现ES6中面向对象编程的方式 class Person{ // 使用static关键字,可以定义静态属性 // 所谓的静态属性,就是可以直接通过 ...
- webpack中babel配置 --- runtime-transform和babel-pollfill
webpack - babel配置 babel是一个javascript编译器,是前端开发中的一个利器.它突破了浏览器实现es标准的限制,使我们在开发中可以使用最新的javascript语法. 通过构 ...
- webpack基础配置
webpack运行规则: Webpack 会给每个模块分配一个唯一的id并通过这个id索引和访问模块.在页面启动时,会先执行入口文件中的代码,其它模块会在运行 require 的时候再执行. 运行时主 ...
- 搭建webpack基础配置
搭建webpack基础步骤: 1.去官方网站下载node.js(根据自己电脑的系统类型选择) 2.安装node.js完成后打开cmd命令提示符: 出现版本号证明安装成功 3.cd到工程目录下 npm ...
- 【webpack整理】一、安装、配置、按需加载
如果你: 是前端热爱者 :) 有JavaScript/nodejs基础 会使用一些常用命令行,mkdir,cd,etc. 会使用npm 想对webpack有更深的认识,或许此时你恰好遇到关于webpa ...
- 深入浅出的webpack构建工具---webpack基本配置(一)
深入浅出的webpack构建工具---webpack基本配置(一) 阅读目录 一:webpack入门构建: 1. 安装webpack到全局 2. 安装webpack到本项目. 3. 如何使用webpa ...
- 【webpack】---模块打包机webpack基础使用---【巷子】
001.什么是webpack? 作用有哪些? WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,Ty ...
- Webpack+React+ES6 最新环境搭建和配置(2017年)
刚刚学习React,发现React在ES6下的语法才是本体,结合ES6新的语言特性,使组件化开发显得更加直观.而且现在的Angular2也开始使用支持强类型的TypeScript,转译(transpi ...
随机推荐
- python3 爬虫五大模块之四:网页解析器
Python的爬虫框架主要可以分为以下五个部分: 爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义: URL管理器:负责URL的管理,包括 ...
- DataTable 增加、修改、删除
using System; using System.Data; using System.Windows.Forms; using DotNet.Utilities; namespace Windo ...
- web基础常识
1.b/s架构 2.tcp协议 3.web服务器
- 为什么要设置GOROOT/GOPATH
设置GOROOT的原因 编译器的位置指定的时候,需要指定GO开发包的安装位置,然后设置环境变量PATH的时候,需要指定到安装包下的bin目录,其中就有以下的编译/执行器.所以GOROOT指定了前面的路 ...
- 使用 elementUI 树形控件Tree 编辑数据
操作新增/编辑功能时初始化数据: 应用属性 default-checked-keys 给Tree节点赋默认值(赋值数据为节点数组Arr)前,应先清空数组Arr,并且配合使用 this.$refs.tr ...
- PHP中的“重载”是个啥?
很多面试官在面试的时候都会问一些面向对象的问题,面向对象的三大特性中,多态最主要的实现方式就是方法的重载和重写.但是在PHP中,只有重写,并没有完全的重载能力的实现. 重写,子类重写父类方法. // ...
- quicksort 快速排序 quick sort
* Java基本版 package cn.mediamix; import java.util.LinkedList; public class QuickSort { public static v ...
- JDBC 基础入门
由于我也是初学参考的是网上的或者是培训机构的资料所以可能会有错误的信息,仅供参考 一.什么是JDBC(Java Data Base Connectivity)? java程序连接数据库,JDBC是由S ...
- 定要过python二级选择题二套
1. 2. 3. 4. 5. 6. 7. 8. 非主属性???? 9. 10.. 11.` 调用只是调用,但是没有返回值,,应为里面没有输出 12. 13. 14. 15. 16. 18. 19.
- kubeadm 命令简介
kubeadm 命令 kubeadm init 启动一个kubernetes主节点 kubeadm join 启动一个kubernetes工作节点并加入到集群中 kubeadm upgrade 更新一 ...