webpack 集成 Typescript && Less
webpack 集成 Typescript && Less
TypeScript
是JavaScript
的一个类型化的超集,可以编译成纯JavaScript
,在本指南中,我们将学习如何将Typescript
与webpack
集成。
基本设置
为了开始使用webpack
和Typescript
,首先我们必须在我们的项目中安装webpack
。 如果您没有这样做,请查看webpack安装指南
。
要开始使用包含Typescript
的webpack
,您需要几件事情:
- 在您的项目中安装
Typescript
编译器。 - 安装一个
Typescript
加载器(在这种情况下,我们使用的是ts-loader
)。 - 创建一个
tsconfig.json
文件以包含我们的TypeScript
编译配置。 - 创建
webpack.config.js
以包含我们的webpack
配置。 - 您可以通过运行以下方法从
npm
安装TypeScript编译器
和TypeScript加载器
:
npm install --save-dev typescript ts-loader
tsconfig.json
tsconfig文件可以作为一个空配置文件启动,在这里可以看到一个基本配置示例,用于将TypeScript
编译为es5
,并为JSX
提供支持。{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"jsx": "react",
"allowJs": true
}
}
您可以在TypeScript文档网站
上阅读有关tsconfig.json
配置选项的更多信息
webpack.config.js
具有TypeScript
配置的基本Webpack
应该沿用这些代码:
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
app: './src/index.ts'
},
output: {
path: path.resolve(__dirname, "./dist"),
filename: 'bundle/[name].bundle.js'
},
mode:"development",
devtool: 'inline-source-map',
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
module: {
rules: [
{
test: /\.tsx?$/,
use: [
{
loader: "ts-loader"
}
]
},
{
test: /\.less$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'less-loader'
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
title: 'Output Management'
})
]
};
这里我们将我们的入口点指定为我们当前目录中的index.ts
,一个名为bundle.js
的输出文件和我们的TypeScript加载器
,负责将我们的TypeScript
文件编译为JavaScript
。 我们还添加resolve.extensions
来指示webpack
在解析Typescript
模块时使用什么文件扩展名。
Typescript loaders
目前有两种可用于TypeScript的loaders:
awesome-typescript-loader
ts-loader
令人敬畏的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
一旦加载程序安装,我们需要告诉webpack
我们要在任何其他加载程序之前使用enforce:'pre'
配置标志来运行这个加载程序。 最后,我们需要通过指定devtool
属性来启用webpack
中的源映射。 目前我们使用'inline-source-map'
设置来阅读有关此设置的更多信息,并查看其他选项,以查看devtool文档。
使用第三方库
从npm安装第三方库时,请务必记住安装该库的typing定义。
您可以从@types
存储库,安装第三方库定义。
例如,如果我们要安装lodash
,我们可以运行以下命令来获取它的输入:
npm install --save-dev @types/lodash
有关更多信息,请参阅此博文
导入非代码部分资源
要使用TypeScript
的非代码资源,我们需要告诉TypeScript
如何推迟这些导入的类型。
为此,我们需要创建一个custom.d.ts
文件。 此文件表示我们项目中TypeScript
的自定义定义。
在我们的custom.d.ts
文件中,我们需要为svg
导入提供一个定义,为此,我们需要将以下内容放在此文件中:
declare module "*.svg" {
const content: any;
export default content;
}
在这里,我们通过指定任何以.svg
结尾的导入,为svg
声明一个新模块,并将该模块的类型定义为any
。 如果我们想要更明确地说这是一个url
,我们可以将类型定义为字符串
。
这不仅适用于svg
,而且还适用于您可能希望使用的任何自定义加载器,包括css,scss,json
或您可能希望在项目中加载的任何其他文件。
webpack 集成 Typescript && Less的更多相关文章
- webpack中typeScript的打包配置
2018年typescript发展的非常好,js是一门非常灵活的语言,所以一个功能,怎么写都能够写出来,但是这也会导致一个问题,不同人写js的方式不同,那么会导致同一个功能出现的代码风格会迥然不同.这 ...
- Captcha服务(后续2)— 改造Captcha服务之Asp.Net Core项目中如何集成TypeScript
环境准备 .Net Core 版本:下载安装.Net Core SDK,安装完成之后查看sdk版本 ,查看命令dotnet --version,我的版本是2.2.101 IDE: Visual Stu ...
- VSCode集成TypeScript编译
先安装github客户端和nodeJS客户端吧,直接去官网下载,nodeJS客户端安装完就集成了npm; 查看是否成功: git version node -v npm-v 安装TypeScript ...
- webpack 集成 jQuery 和 Avalon
webpack 系列 三:webpack 如何集成第三方js库 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webp ...
- Typescript + TSLint + webpack 搭建 Typescript 的开发环境
(1)初始化项目 新建一个文件夹“client-side”,作为项目根目录,进入这个文件夹: 我们先使用 npm 初始化这个项目: 这时我们看到了在根目录下已经创建了一个 package.json 文 ...
- webpack散记--Typescript
Typescript 1.js的超集 官网:typescriptlang.org/tslang.cn 来自:微软 安装:官方的 npm i typescript ts-loader --save-d ...
- vuejs electron webpack集成使用
传统的vue SPA页面在浏览器环境中使用,但是有的时候我们还希望能够做成一个类似于桌面的app在PC上使用,希望不仅可以使用所有的浏览器SPA的功能,你也可能外加host os的功能,比如文件的本地 ...
- webpack集成vue单文件模式的很多坑(研究了1个星期)
1.一开始不知道局部安装webpack后,如何调用webpack. 后来看说明文档(webpack中文网)才知道,有个npx可以启动本地安装的webpack. 我估计:全局安装webpack,全局的w ...
- 从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境
转载请注明出处! 说在前面的话: 1.为什么不使用现成的脚手架?脚手架配置的东西太多太重了,一股脑全塞给你,我只想先用一些我能懂的库和插件,然后慢慢的添加其他的.而且自己从零开始配置也能学到更多的东西 ...
随机推荐
- 【转】vim 配置文件 ,高亮+自动缩进+行号+折叠+优化
将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份) "===================== ...
- 42.Flatten Binary Tree to Linked List
Level: Medium 题目描述: Given a binary tree, flatten it to a linked list in-place. For example, given ...
- Git 关于Fast Forward提交的简单说明
多人协同开发,使用Git经常会看到警告信息包含术语:fast forward, 这是何义? 简单来说就是提交到远程中心仓库的代码必须是按照时间顺序的. 比如A从中心仓库拿到代码后,对文件f进行了修改. ...
- SpringBoot整合Druid,密码加密
1.application.yml配置 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/jby?serverTimezone=UTC& ...
- Node中的Cookie和Session
1.Cookie HTTP是无状态协议.例:打开一个域名的首页,进而打开该域名的其他页面,服务器无法识别访问者.即同一浏览器访问同一网站,每次访问都没有任何关系. Cookie的原理是:客户端浏览器在 ...
- elasticsearch 父子关系
ElasticSearch 中的Parent-Child关系和nested模型是相似的, 两个都可以用于复杂的数据结构中,区别是 nested 类型的文档是把所有的实体聚合到一个文档中而Parent- ...
- 使用extract-text-webpack-plugin处理css文件路径问题
首先看到我们的文件夹目录如下: webpack.config.js //解析分离cssconst ExtractTextPlugin = require('extract-text-webpack-p ...
- 如何将自己的代码上传至github
前提条件: 有个github账号,电脑安装了git; 首先在自己的账号里新建一个仓库: https://github.com/qiqi105/littleAlbum.git 进入到你要上传的文件夹内部 ...
- 【归纳】springboot中的IOC注解:注册bean和使用bean
目前了解的springboot中IOC注解主要分为两类: 1. 注册bean:@Component和@Repository.@Service.@Controller .@Configuration 共 ...
- 【Zookeekper】分布锁Curator
有序节点:假如当前有一个父节点为/lock,我们可以在这个父节点下面创建子节点:zookeeper提供了一个可选的有序特性,例如我们可以创建子节点“/lock/node-”并且指明有序,那么zooke ...