博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 TypeScript 写 webpack loader
阅读量:6785 次
发布时间:2019-06-26

本文共 1171 字,大约阅读时间需要 3 分钟。

下面以最简单的 raw-loader 为例,写一个用 TypeScript 来写一个 webpack loader.

项目初始化

  1. 在 GitHub 创建仓库 ts-raw-loader
  2. clone 项目.
  3. 进入项目目录,使用 npm 初始化项目。npm init --y
  4. 使用 tsc 初始化项目配置。 tsc --init

安装依赖

  1. 安装 TypeScript yarn add -D typescript
  2. 安装 Webpack 声明文件 yarn add -D @types/webpack

项目基本配置

tsconfig.json 配置

参考修改的配置如下,最终配置见 。

{   "compilerOptions": {    "target": "es2016",    "module": "commonjs",    "outDir": "./dist",    "declaration": true,    "declarationDir": "./dist/types",    "strict": true,    "moduleResolution": "node",    "baseUrl": "./",    "paths": {        "@/*": ["src/*"]    }},include: ["src/**/*.ts"]}复制代码

编写 loader 代码。

创建 src/index.ts 模块文件。代码如下:

import webpack = require("webpack");// Taken from https://github.com/webpack-contrib/raw-loader/blob/master/index.js// 关于为什么要将 \u2028 和 \u2029 转义,参考// https://www.web-tinker.com/article/21252.htmlexport default function rawLoader(  this: webpack.loader.LoaderContext,  source: string | Buffer) {  this.value = source;  const json = JSON.stringify(source)    .replace(/\u2028/g, "\\u2028")    .replace(/\u2029/g, "\\u2029");  return `module.exports = ${json}`;}复制代码

如上就是我们的 webpack loader ts-raw-loader 的核心代码。

写好,使用 tsc 编译好之后便可发布。 完整代码参见: 。

转载地址:http://qudgo.baihongyu.com/

你可能感兴趣的文章
.NET Core 2.1 Preview 2带来网络方面的改进
查看>>
从达尔文到DevOps:John Willis和Gene Kim谈后凤凰项目时代
查看>>
简析Uber的可伸缩监控:uMonitor和Neris
查看>>
腾讯云答治茜:云计算为独角兽和传统企业提供了哪些沃土?
查看>>
Spark on YARN 部署案例
查看>>
RedHat发布JBoss 7.2,完全支持Java EE 8规范
查看>>
kubernetes1.9.2基于kubeadm的高可用安装HA
查看>>
「性能优化之道」每秒上万并发下的Spring Cloud参数优化实战
查看>>
App启动流程
查看>>
原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换
查看>>
我的第一篇博客
查看>>
手把手教你如何用Python从PDF文件中导出数据(附链接)
查看>>
维珍银河完成最长距离火箭飞行,下一步剑指太空旅行
查看>>
[Python]attributeError:'module' object has no attribute 'dump'
查看>>
Docker系列教程11-使用Nexus管理Docker镜像
查看>>
业界最全,阿里云混合云灾备服务上线!
查看>>
Windows Linux 子系统可以在资源管理器中打开
查看>>
WebStorm文件类型关联设置
查看>>
13.1 Spring MVC 关于controller的字符编码
查看>>
理发店与 App 定价模型
查看>>