将打字稿与节点一起使用的最佳实践



对于 react r,有 create-react-app,它编纂了项目设置中的最佳实践。

节点中缺少某些内容。如果我想在节点上开发和部署打字稿应用程序.js我至少需要 3 个"目标":

  • "开始"运行应用的开发版本
  • 测试
  • 执行单元测试(例如开玩笑)
  • build将打字稿编译为 Node 可以理解的内容 - 用于部署。

对于所有这些功能,有像ts-jest ts-node和tsc这样的工具。

这一切都有些有效,但我得到了各种各样的打嗝。目前,package.json中的scripts部分如下所示:

"scripts": {
"build": "tsc -p src",
"start": "yarn run nodemon -e js,json,graphqls,ts,yaml --signal SIGHUP -x ts-node src/index.js",
"test": "rm -Rf dist/ ; yarn run ts-jest --testPathIgnorePatterns=tests/",
},

但这有各种各样的问题。tsc使用src/tsconfig.json.另外两个使用./tsconfig.json.否则,输出将处于./dist/src/状态,并且目录深度的差异将弄乱对非源文件的相对文件访问。

ts-nodetsc似乎报告了不同的错误。例如,tsc似乎可以意外共存 js 和 ts 文件,而 ts-node 崩溃并带有不透明的emit error./dist的内容混淆了其他工具 - 您从./dist而不是从./src加载和执行文件。

那么,如何设置重新加载开发服务器(yarn start),测试运行程序(yarn test)和生产编译(yarn build)都使用相同的配置文件,在相同的目录深度上休息并运行相同?

我认为没有这样的解决方案可以像create-react-app那样开箱即用,除非您找到一些包含您需要的所有内容的样板存储库并使用这些存储库。您可以设置 webpack,它可以用于构建和开发,但配置它可能需要一段时间,尽管在较新的版本中更容易。汇总也是一个很好的解决方案

无论如何,您可能不需要-p src选项tsc,这指定了项目的根目录,即tsconfig所在的位置,而不是源文件的根目录。此选项应指向tsconfig所在的文件夹,在tsconfig中,您可以使用includefiles字段指定源文件的位置。

说到nodemon运行node而不是ts-node并将其注册为模块可能是一个更好的选择:

nodemon -r ts-node/register src/index.js

另外,为了清理您的package.json您可以将命令行选项移动到nodemon.json.您可能会找到更多指南,了解如何解决互联网上可能发生的其他冲突,例如处理这些嵌套路径。不确定dist有什么问题,构建文件夹不应该混淆任何工具

相关内容

最新更新