原创翻译,转载请注明出处。
原文地址:https://webpack.js.org/guides/webpack-and-typescript/
Typescript是一个类型化的JavaScript的超集,它被编译成纯JavaScript,在这篇指南里我们将会学习怎样统合webpack和Typascript。
基本设定
为了开始webpack和Typescript,首先我们需要在我们的项目里安装webpack,如果你之前没有做这一步,请查看webpack安装指南。
开始在webpack里使用Typescript,需要做几件事情:
- 在项目里安装Typescript编译器。
- 安装Typescript加载器(这里我们使用ts-loader).
- 创建一个tsconfig.json文件,在这里配置Typescript编译。
- 创建一个webpack.config.js,在这里配置webpack。
你可以通过运行以下命令,从npm安装TypeScript编译器和TypeScript加载器。
npm install --save-dev typescript ts-loader
tsconfig.js
开始的时候tsconfig文件可以是一个空的配置文件,这儿你看到的是一个把TypeScript编译成es5,同时提供JSX支持的基本配置的例子。
{ "compilerOptions":{ "outDir":"./dist/", "sourceMap":true, "noImplicitAny":true, "module":"commonjs", "target":"es5", "jsx":"react", "allowJs":true } }
你可以在TypeScript文档站点里了解更多关于tsconfig.js的配置选项。
webpack.config.js
基本的webpack+TypeScript配置是下面几行:
module.exports ={ entry:'./index.ts', output:{ filename:'bundle.js', path: __dirname }, module:{ rules:[ { test:/\.tsx?$/, loader:'ts-loader', exclude:/node_modules/, } ] }, resolve:{ extensions:[".tsx",".ts",".js"] } };
我们指定入口点是当前目录下的index.js文件,输出文件叫做bundle.js,还有TypeScript加载器,负责把TypeScript文件编译成JavaScript文件。我们还加了一个resolve.extensions配置,告诉webpack解析TypeScript模块对象文件都有哪些扩展名。
Typescript加载器
当前可用两种TypeScript加载器:
Awesome TypeScript加载器给出了关于awesome-typescript-loader和ts-loader之间差异的精彩解释。详细可以阅读这里。
在这个指南里我们将使用ts-loader,因为当前它可以相对容易地把webpack各种特性像无代码资源文件一样引入到你的项目里。
允许代码映射
为了允许代码映射,首先必须配置TypeScript,让它在编译后的JavaScript文件里,输出行内代码映射。通过设定sourceMap变量为true来实现:
tsconfig.json
{ "sourceMap":true }
一旦TypeScript被配置成输出代码映射,我们需要告诉webpack让它抽出这些代码映射,并把他们传输到浏览器。这样我们就可以在代码编辑器里看到源文件。
Webpack.config.js
module.exports ={ entry:'./index.ts', output:{ filename:'bundle.js', path: __dirname }, module:{ rules:[ { enforce:'pre', test:/\.js$/, loader:"source-map-loader" }, { enforce:'pre', test:/\.tsx?$/, use:"source-map-loader" } ] }, resolve:{ extensions:[".tsx",".ts",".js"] }, devtool:'inline-source-map', };
首先我们增加了一个新的加载器叫做source-map-loader。
运行以下代码安装:
npm install --save-dev source-map-loader
这个加载器安装万之后,我们需要通过设定enforce: 'pre'这个配置标签,告诉webpack在其他任何加载器之前运行这个加载器。最后通过设定devtool变量,实现在webpack里允许代码映射。当前我们使用’inline-source-map’,阅读devtool文档了解更多这个设定和其他别的配置。
使用第三方库
当从npm安装第三方库的时候,很重要的一点是需要记住一定要安装这个库的typing定义。
你可以从@types仓库里安装第三方库的定义。
例如如果我们想安装lodash,我们可以运行下面的代码取得它的typings:
npm install --save-dev @types/lodash
引入无代码资源文件
通过TypeScript来使用无代码资源文件,我们需要告诉TypeScript怎样顺从这些引入的类型。
为了实现这些我们需要创建一个custom.d.ts文件。这个文件指出我们项目里TypeScript的定制定义。
在custom.d.ts文件里我们需要提供一个关于svg引入的定义,为了实现这个我们需要在这个文件里加入下面的代码:
declaremodule"*.svg"{ const content:any; exportdefault content; }
这里我们为所有以.svg结尾的引入定义了一个新的模块,并把它的类型定义为any。如果我们想明确这是一个URL,我们可以定义类型为字符串。
这不仅适用于svg,还适用于其他你希望使用的定制加载器,包含css,scss,json或者其他你想在项目里引入的文件。
-- End --
相关推荐
Webpack 和 TypeScript 是现代前端开发中的两个重要工具。Webpack 是一个模块打包器,它将应用程序视为由各种模块组成的,然后将这些模块打包成一个或多个浏览器可执行的文件。TypeScript 则是 JavaScript 的超集,...
具体参考文档如下 入门一 https://www.cnblogs.com/baqiphp/p/7647912.html 入门二 https://www.jianshu.com/p/71bbcdc8c1fc typescript配置说明 https://www.tslang.cn/docs/handbook/compiler-options.html eslint...
Webpack 面试指南 Webpack 是前端开发中一个非常重要的概念,在很多大厂的面试中都会被问道。下面是对 Webpack 的 Loader 和 Plugin 的知识点总结。 Loader Loader 是 Webpack 中的一个重要概念,它的本质是一个...
另请查看官方Webpack 4文档以获取正确的TypeScript设置: ://webpack.js.org/guides/typescript/ 注意,这仍然是一个在制品。 欢迎贡献/建议 :grinning_face_with_big_eyes: 产品特点 Webpack 4 TypeScript 2...
去做: 在tsconfig.json和webpack.config.js中启用源映射通过lifeserver npm安装工具部署npm install npm-run-all --save-dev npm install live-server --save-dev 创建用于启动,监视和部署实时服务器的脚本命令“ ...
webpack-filter-warnings-plugin 允许您从Webpack编译中隐藏某些警告 安装 npm i -D webpack-filter-warnings-plugin 用法 // webpack.config.js const { FilterWarningsPlugin } = require ( 'webpack-filter-...
Vue CLI(命令行接口)是官方提供的脚手架工具,它极大地简化了Vue项目的初始化过程,包括设置webpack配置、安装依赖等。在"webpack-develop.zip"这个压缩包中,我们很可能是找到了一个使用Vue CLI 3搭建的开发环境...
用于Webpack @ 5的javascript-obfuscator插件和加载器 安装 使用NPM安装该软件包并将其添加到您的devDependencies中: npm install --save-dev javascript-obfuscator webpack-obfuscator 插件用法: var ...
在IT行业中,React、TypeScript和Webpack是三个非常重要的技术栈元素,它们分别代表了前端开发中的用户界面库、静态类型系统以及模块打包工具。在这个项目"react-typescript-webpack"中,开发者结合了这三个强大的...
react-webpack-typescript-template 一个react模板,使用react,react-dom,webpack,打字稿,redux,react-redux,redux-logger,redux-thunk,redux-promise,connected-react-router ... 它现在有一些页面,您...
"前端开源库-karma-typescript-preprocessor2.zip"是一个与前端开发相关的压缩包,其中包含了一个用于TypeScript的Karma预处理器。Karma是著名的JavaScript测试运行器,它允许开发者在多种浏览器环境下运行自动化...
本教程将深入探讨如何使用Webpack搭建一个基于TypeScript的Node.js开发环境。Webpack是一个模块打包工具,它能够处理JavaScript、CSS、图片等静态资源,而TypeScript是JavaScript的一个超集,提供静态类型系统,增强...
npm-dts-webpack-plugin 该WebPack插件为整个NPM软件包生成单个index.d.ts文件。 它允许创建捆绑的NPM库软件包,而无需使用TypeScript源,并且无论这些库被导入到哪里,都仍然保留代码建议。 TypeScript自动获取...
在本项目"learn-typescript.rar"中,我们将探讨如何结合Webpack与TypeScript实现自动化编译和浏览器刷新功能,从而提升开发效率。 首先,我们需要安装必要的依赖。在项目根目录下,通过npm或yarn安装Webpack、...
web技术栈学习,webpack、javascript、css、html、typescript ... web技术栈学习,webpack、javascript、css、html、typescript ... web技术栈学习,webpack、javascript、css、html、typescript ... web技术栈学习...
JSON加载器的Webpack类型 Webpack加载器,可为JSON文件生成TypeScript类型安装npm install webpack-typings-for-json --save-devwebpack.config.js module . exports = { module : { rules : [ { test : / \. json $...
【标题】:“基于vite2.x + vue3.x + ant-design-vue3.x + typescript基础后台管理系统模板” 【描述】:这个项目是一个现代的、高效的基础后台管理系统模板,它结合了最新的前端技术栈,包括vite2.x作为构建工具,...
HTML Webpack跳过资产插件... 内置作为替代品,并与较新的版本一起使用配置通过npm i -D html-webpack-skip-assets-plugin HtmlWebpackPlugin之后添加到您的Webpack配置 var HtmlWebpackSkipAssetsPlugin = require ( '...
使用Webpack快速开始使用Typescript,React和Meteor。 该样板还设置了Bootstrap,Font-Awesome,并使用了内置的Meteor用户系统模板。 以下是一些参数,为什么您可能会考虑将此堆栈用于更大的代码库: : 先决条件 ...
用于TypeScript和VueJs的Webpack模板 这是一个Webpack模板,用于使用和生成网页。 本自述文件说明了如何从头开始构建此模板,或如何扩展现有的webpack项目。 目录 使用装饰器定义组件 使用TSX做出类似模板的React ...