在2021年开始打字项目

2021-04-22 11:38:50

##创建项目FoldermKdir my-prodantcd my-project#create源文件夹和filesmkdir srctouch src / main.ts src / main.test.ts src / cli.ts#创建一个package.jsonyarn init#安装打字,linter和jestyarn添加 - d typescript @ types / node ts-nodeyarn添加-d eslint @ typescript-eslint / parser @ typescript-eslint / eslint-pluginyarn Add -d jest ts-jest @ types / jest#get a .gitignorewget https://raw.githubusercontent .com / metachris / typescript-batherplate / master / .gitignore#获取带有一些默认值的tsconfig.json(根据需要适应)wget https://raw.githubuscript-boilerplate/master/tconfig.json#或者,您可以创建一个新鲜的tsconfig.json(具有广泛的docstrings)tsc --init#get a .eslintrc.jswget https://raw.githubusercontent.com/metachris/typescript-boilerplate/master/.eslintrc.js#get a jest.config.json,对于ts-jest来运行测试,没有单独的打字编译步骤https://raw.githubusercontent.com/metachris/typesript-boilerplate/mas ter / jest.config.js#创建一个git repo并使第一个commitgit initgit添加.git comput -am"初始提交"

{"脚本&#34 ;: {" cli&#34 ;:" ts-node src / cli.ts&#34 ;," test&#34 ;:&#34 ;:" JEST& #34 ;," lint&#34 ;:" tslint -c tslint.json' src / ** / *。Ts'" build" build&#34 ;:" tsc -p tsconfig.json&#34 ;,"干净&#34 ;:" rm -rf dist build&#34 ;," ts-node&#34 ;:& #34; ts-node" }}

现在,您可以运行纱线CLI,YARN测试,纱线棉绒,纱线构建和纱线TS节点<文件名和gt ;.

从&#39导入{read}; ./ main'测试('数据是花生酱',()=> {期望(1)。tobe(1)});测试('问候',()=> {期望(' foo'))。TOBE('你好Foo')});

eSbuild是一个非常快的JavaScript Bundler,那个Can还编译了一个大型的打字代码子集。您可以使用它来捆绑Node.jsas以及浏览器。 eSbuild仍然是相对年轻,积极/繁重的发展;另请参阅GitHub上的esbuild。

为什么除了TSC之外还要使用esbuild吗? TypeScript编译器对浏览器没有捆绑(开发人员通常诉诸额外的捆绑包,如WebPack,Parcel或Rollup),并且它非常缓慢。

此外,要为TSC(TypeScript编译器),您还可以将代码捆绑与eSbuild for node.js:

#compile和bundleyarn esbuild src / cli.ts -bundle --platform = node --outfile = dist / esbuild / cli.js#相同,但缩小和sourcemapsyarn esbuild src / cli.ts -bundle -platform = node --minify --sourcemap =外部--outfile = dist / esbuild / cli.js#运行捆绑的outputnode dist / esbuild / cli.js

使用eSbuild构建时,可以使用--WATCH选项在更改文件时重建

eSBuild目前不支持Building .ts声明文件(另请参阅此问题)。您需要构建具有TSC的人。

您可以使用Bundler生成浏览器兼容模块,例如Esbuild,WebPack,Parcel等。

#bundle for browsersyarn esbuild src / browser.ts -bundle --outfile = dist / esbuild / brower.js#相同,但是用缩小和sourcemapsyarn esbuild src / browser.ts -bundle --minify --sourcemap =外部 - -outfile = dist / esbuild / browser.js

在浏览器中加载时,您可以在代码中访问窗口和文档。您可能希望将此用于将代码的部分附加到窗口对象。

创建SRC / Browser.ts作为浏览器构建的入口点。在那里,您可以将自定义属性附加到这样的窗口:

//从&#39导入函数导入{read}; ./ main' //使其在窗口对象(窗口为任何)。问候=问候

让我们将最新代码发布到NPM,同时与Node.js和浏览器一起使用。

#使用tsc和esbuildyarn build-all#更新版本并发布到npmyarn发布

构建 - 所有都构建了TSC的项目,以获取QuoteIton文件,并为Node.js和浏览器构建esbuild。

有几个CDN自动提供NPM项目,如jsdelivr,cdnjs,unpkg.com或skypack。

您可能希望在每个代码推动下运行测试和linter。您可能想要构建和部署来自CI的文档。

名称:LINT和测试:[推,PULL_REQUEST]作业:Lint_and_test:runs-on:Ubuntu-最新策略:FAIL-FAST:FALSE矩阵:NODEJS:[10,12,14]步骤: - 用途:操作:操作/ [电子邮件保护]#https://github.com/actions/setup-node - 用途:操作/ [电子邮件保护]带:node-version:$ {{matrix.nodejs}} - 运行:yarn安装 - 运行:纱线测试 - 跑:纱线棉绒 - 跑:纱线构建 - 全部

如果您想在各种操作系统(Windows,Linux,MacOS)上验证您的构建/包,您可以为这样的作业设置矩阵:

作业:默认版本:runs-on:$ {{matrix.oS}}策略:Fail-Fast:False矩阵:OS:[MacOS-Lault,Windows-MateL,Ubuntu-最新]步骤: - 用途:操作/ [电子邮件保护] - 用途:操作/ [电子邮件保护]带:node-version:12 ...

图片:节点:12缓存:路径: - node_modules /阶段: - 测试棉绒和测试:舞台:测试脚本: - 纱线安装 - 纱线测试 - 纱线棉绒 - 纱线构建 - 所有

您可以使用Typedoc自动生成API文档,该文件在jsdoc语法上构建。生成的文档可以通过CI发布到GitHub / Gitlab页面。

这篇文章介绍了一个完整的RoyingScript项目设置,具有测试,esbuild,Node.js和浏览器捆绑,在NPM上发布,持续集成和自动文档。

您可能有兴趣使用丹诺而不是node.js. Deno是一个现代化的V8运行时,由Node.js的作者Ryan Dahl创建了很大的功能。但它仍然有些新的和实验。

要引导完整的Web项目,您可能希望使用热模块替换(HMR)。这超出了这篇文章的范围。与此同时,请参阅关于HMR的WebPack文档和包裹文档。

如果要针对Node.js和浏览器,请注意,几个API是不同的,最值得注意的是,WebSocket,缓冲区。