将多个*.ts文件打包成一个*.min.js文件的开发配置

1、初始化

npm init

新建以下文件目录:

2、安装依赖:

"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"babel-loader": "^8.0.6",
"ts-loader": "^6.0.3",
"typescript": "^3.5.2",
"webpack": "^4.35.0",
"webpack-cli": "^3.3.4"
},
"dependencies": {
"@babel/polyfill": "^7.4.4",
"core-js": "2"
}

3、tsconfig.json

{
"compileOnSave": false,
"compilerOptions": {
"sourceMap": true,
"noImplicitAny": false,
"noUnusedParameters": true,
"moduleResolution": "node",
"module": "esnext",
"target": "esnext",
"baseUrl": "./"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}

参数含义参考https://www.tslang.cn/docs/handbook/compiler-options.html

4、babelrc

{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": "2"
}
]
]
}

useBuiltIns:"usage" 将会按需引入babel/polyfill。

babel7已经废弃了@babel/preset-stage-0等preset。

具体参考https://www.babeljs.cn/docs/babel-preset-env

5、webpack.config.js

const path = require("path");

module.exports = {
mode: "production",
entry: "./src",
output: {
path: path.resolve(__dirname, "dist"),
filename: "ma.min.js",
library: "MA",
libraryTarget: "umd"
},
module: {
rules: [
{
test: /\.ts$/,
use: ["babel-loader", "ts-loader"],
exclude: [path.resolve(__dirname, "node_modules")]
}
]
},
resolve: {
extensions: [".ts", ".js"]
}
// devtool: "inline-source-map"
};

ts文件将会经过ts-loader转成es6,再由babel-loader转成es5并加入polyfill

参数含义参考https://webpack.docschina.org/configuration/

6、package.json中定义script

"scripts": {
"compile": "webpack"
},

7、执行打包

比如我们在src下定义index.ts

const testFunc = (num: number) => {
const arr: number[] = [1, 2, 3, 4];
return arr.includes(num);
}; export { testFunc };

其中使用了箭头函数和ES7方法includes。

执行打包:

打包完成,此时在dist下已经打包出了ma.min.js文件,其中includes方法也被做了polyfill处理。

8、为什么使用了ts-loader后还要使用babel-loader

ts-loader也可以直接打包成es5语法,但不会做polyfill,况且如果项目依赖babel生态中的其他插件,也需要使用babel-loader.

webpack + typescript + babel打包*.min.js文件的环境配置的更多相关文章

  1. Node.js安装及环境配置之Windows篇

    Node.js安装及环境配置之Windows篇   一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1. ...

  2. Node.js安装及环境配置之Windows篇(转:https://www.cnblogs.com/zhouyu2017/p/6485265.html)

    Node.js安装及环境配置之Windows篇(原文地址:https://www.cnblogs.com/zhouyu2017/p/6485265.html)   一.安装环境 1.本机系统:Wind ...

  3. Auto.js pro 开发环境配置

    本文仅供学习交流使用,如侵立删!demo下载见文末 Auto.js pro 开发环境配置 准备: 1.Auto.js Pro Auto.js 已暂停维护 -下载链接放在了文章底部,有需要自行下载 2. ...

  4. webpack 单独打包指定JS文件

    背景 最近接到一个需求,因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改.因此,需要用webpack单独打包指定文件. CommonsChun ...

  5. 搭建 Webpack + TypeScript + Babel 的项目

    安装依赖包 安装 webpack 相关的依赖: npm i -D webpack webpack-cli 安装 ts.babel.source-map 的 loader: npm i -D ts-lo ...

  6. webpack.config.js文件的高级配置

    一.多个入口文件之前我们配置的都是 一个入口 var webpack = require('webpack'); var commonsPlugin = new webpack.optimize.Co ...

  7. ASP.NET MVC ScriptBundle 不能加载.min.js文件

    比如我用 bundles.Add(new ScriptBundle("~/bundles/easyui").Include( "~/Content/easyui/jque ...

  8. webpack4.0源码解析之打包后js文件分析

    首先,init之后创建一个简单的webpack基本的配置,在src目录下创建两个js文件(一个主入口文件和一个非主入口文件)和一个html文件,package.json,webpack.config. ...

  9. typescript 自动编译 生成js文件

    项目文件 <?xml version="1.0" encoding="utf-8"?><Project ToolsVersion=" ...

随机推荐

  1. 分布式事务之解决方案(TCC)

    4. 分布式事务解决方案之TCC 4.1. 什么是TCC事务 TCC是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作 :预处理Try.确认Confirm.撤销C ...

  2. Vue+Webpack之 代码及打包优化

    本文重点介绍Vue单页面应用的优化手段: 异步加载 面切换时加loading特效 点击延迟 inline manifest 逻辑代码优化 依赖包体积优化 cdn引用 Vue代码优化 异步加载 所谓的异 ...

  3. Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)

    “任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让 ...

  4. Bash脚本编程之变量与多命令执行

    变量基础知识 程序由指令加数据所组成,而变量可以理解为数据来源的一种. 变量名可以理解为指向了某个内存空间的地址,对于变量的赋值可理解为向内存空间写入数据,对于变量的引用可理解为从内存空间读取数据. ...

  5. 关于Xpath

    1.xPath简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chro ...

  6. 深入了解angularjs中的$digest与$apply方法,从区别聊到使用优化

     壹 ❀ 引 如果有人问,在angularjs中修改模型数据为何视图会同步更新呢,我想大多数人一定会回答脏检查(Dirty Checking)相关概念.没错,在angularjs中作用域(scope) ...

  7. Idea中Maven的安装

    Maven 软件的下载 为了使用Maven 管理工具,我们首先要到官网去下载它的安装软件.通过百度搜索“Maven“, 点击Download 链接,就可以直接进入到Maven 软件的下载页面: 目前最 ...

  8. java8-Optional的引入

    背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛. 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计. 一个例子 业务模型 Perso ...

  9. soapUI 之 测试文件上传 [6]

    在接口测试中会遇到需要上传文件的操作,比如头像修改等.那么soapui是怎么实现这部分测试的呢.以下以文件上传接口为例. 一.获取文件上传接口 可以通过开发直接提供的接口文档,或者自己抓包获取接口信息 ...

  10. Ligg.EasyWinApp-101-Ligg.EasyWinForm: Application--启动,传入参数、读取Application级别配置文件、验证密码、软件封面、启动登录、StartForm

    首先请在VS里打开下面的文件,我们将对源码分段进行说明: 步骤1:读取debug.ini文件 首先读取当前文件夹(.\Clients\Form)的debug.ini文件,该文件的args用于调试时传参 ...