内容简介:现在很多开发朋友对于使用本文从环境依赖包说起,让你对自己的开发环境有更深的了解。为了简单,我们将依赖分个类:
注意:本文所有依赖包是目前最新版本的
现在很多开发朋友对于使用 webapck
、 babel
搭建开发环境已经不陌生,但很少去系统性的了解项目依赖。
本文从环境依赖包说起,让你对自己的开发环境有更深的了解。
为了简单,我们将依赖分个类: Babel相关:fire:
、 Webpack相关:fire:
、 可选的依赖包
。
注意:带:fire: 是指 必需的依赖 , 下面我们一个一个来说。
Babel相关:fire:
要使用最新的 ES6+
语法,必须少不了 Babel
转码,那么要搭建一个完全体的环境,应该使用哪些依赖呢?
首先,我们安装最核心的依赖: @babel/cli
、 @babel/core
、 @babel/polyfill
、 @babel/register
、 core-js
下面是他们的一些简单解释:
{ /* Babel 自带了一个内置的 CLI 命令行工具,可通过命令行编译文件。 */ "@babel/cli": "^7.4.3", /* 看到`core`就知道它是`babel`的核心,一些转码操作都是基于它完成的, 所以它是必须的依赖。 */ "@babel/core": "^7.4.3", /* Babel默认只转换新的JavaScript语法,但是不转换新的API,比如 `Iterator`、`Generator`、`Set`、`Maps`、`Proxy`、`Reflect`、 `Symbol`、`Promise` 等全局对象,以及一些定义在全局对象上的方法(比 如 `Object.assign` )都不会转码。而`@babel/polyfill`就可以做到。 */ "@babel/polyfill": "^7.4.3", /* 让webpack.config.babel.js也支持ES6语法 */ "@babel/register": "^7.4.0", /* 通俗说就是动态polyfill,它可以动态加载需要的新API,具体可以看https://github.com/zloirock/core-js#readme */ "core-js": "3", }
下面我们安装必需的preset和plugin: @babel/preset-env
、 @babel/plugin-proposal-class-properties
、 @babel/plugin-proposal-decorators
、 @babel/plugin-proposal-object-rest-spread
、 @babel/plugin-syntax-dynamic-import
下面是它们的一些解释:
{ /* 根据指定环境来转码,这个不用说,必装 */ "@babel/preset-env": "^7.4.3", /* 对class中属性初始化语法、static等语法进行处理 */ "@babel/plugin-proposal-class-properties": "^7.4.0", /* 装饰器语法处理 */ "@babel/plugin-proposal-decorators": "^7.4.0", /* 对象rest、spread语法处理 */ "@babel/plugin-proposal-object-rest-spread": "^7.4.3", /* import()语法处理 */ "@babel/plugin-syntax-dynamic-import": "^7.2.0", }
安装好了以上preset和plugins,我们需要新建一个 .babelrc
文件来使用它们:
{ "presets": [ [ "@babel/env", { "useBuiltIns": "usage", //如果useBuiltIns选项为usage,则要申明corejs的版本,这也是为什么要安装core-js的原因 "corejs": "3", "loose": true } ], "@babel/typescript", //如果你的环境有typescript,记得安装它 "@babel/react" //如果你使用了react,也要记得安装哦 ], "plugins": [ [ "@babel/plugin-proposal-decorators", { "legacy": true } ], [ "@babel/proposal-class-properties", { "loose": true } ], "@babel/proposal-object-rest-spread", "@babel/plugin-syntax-dynamic-import" ] }
以上我们对于 ES6+
最新语法的转码已经完全没有问题了,下面我们开始说说 Webpack
有哪些必需要安装的依赖
Webpack相关:fire:
上面的 Babel
转码已经配置完成。但我们要使用它们,还要依靠 webpack
来告诉我们需要转码的项目入口以及在转码过程中需要的配置(比如loader)。
既然需要webpack,那么我们安装webapck以及它必需的依赖包: webpack
、 webpack-cli
、 webpack-dev-server
、 babel-loader
、 html-webpack-plugin
安装完成后我们新建 webpack.config.babel.js
,然后我们来配置一下:
import webpack from 'webpack'; import path from 'path'; import HtmlWebpackPlugin from 'html-webpack-plugin'; export default { mode: 'development', entry: { app: path.resolve(__dirname, '../src/index.tsx') }, devtool: 'cheap-module-source-map', output: { path: path.resolve(__dirname, '../build'), filename: 'bundle-[name]-[hash].js', chunkFilename: 'chunk-[name]-[hash].js' }, resolve: { extensions: ['.tsx', '.ts', '.js', '.less', '.json'], modules: ['node_modules'] }, module: { rules: [ { test: /\.(ts|js)x?$/, exclude: /node_modules/, use: [ { loader: 'babel-loader' } ] } ] }, plugins: [ new HtmlWebpackPlugin({ template: path.resolve(__dirname, '../src/index.ejs'), templateParameters: { title: 'test' } }) ], devServer: { port: 8080, host: 'localhost', disableHostCheck: true } };
细心的人看出来,上面的配置用的是 ES6
的写法,要做到这点需要满足:
webpack.config.babel.js @babel/register
tips: 这里我使用的是 ejs
作为 html
的模板。
到这里,必需的依赖包已经安装完成了,下面的可选依赖是根据大家项目的具体情况去安装,比如样式、图片、字体、css压缩配置等等...
这里我推荐几个好用的依赖包:
{ /* 将CSS提取为独立的文件的插件,对每个包含css的js文件都会创建一个CSS文件,支持按需加载css和sourceMap */ "mini-css-extract-plugin": "^0.6.0", /* css压缩 */ "optimize-css-assets-webpack-plugin": "^5.0.1", /* 对打包的js进行压缩处理的webapck插件 */ "terser-webpack-plugin": "^1.2.3", /* 多进程处理打包,加快打包速度 */ "thread-loader": "^2.1.2", /* webpack打包进度条 */ "webpackbar": "^3.2.0" }
至于webpack里的各种loader,大家根据自己的项目去安装吧。
就说到这里啦,如果你有好用的npm包,欢迎推荐~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 深入了解 Vue.js 是如何进行「依赖收集]
- 浅析依赖倒转、控制反转、IoC 容器、依赖注入。
- Angular 4 依赖注入教程之五 FactoryProvider配置依赖对象
- Gradle构建SpringBoot程序依赖管理之依赖版本自动控制
- Maven学习笔记七【可选的依赖项和依赖项排除】
- 模块化解耦框架RxFluxArchitecture4-依赖库与依赖注入
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Little Typer
Daniel P. Friedman、David Thrane Christiansen、Duane Bibby、Robert Harper、Conor Mcbride / MIT Press / 2018-10-16 / GBP 30.00
An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time. A program's type describes its behavior. Dependent types are a first-class part of a language, and are......一起来看看 《The Little Typer》 这本书的介绍吧!