javascript - 如何将 TypeScript 代码编译成单个 .js 文件,可通过“node mycode.js”执行?
问题描述
我希望能够在没有 webpack、gulp 等的情况下做到这一点,只需“tsc [args] mycode.ts”。这甚至可能吗?
在我的 package.json 中,我有一个这样的构建命令:
"build:mycode": "tsc --allowSyntheticDefaultImports --lib es2018 --lib dom -m amd -t es2018 --moduleResolution node --outFile ./mycode.js ./mycode.ts",
(上述所有配置都是使用tsc
命令行参数完成的,而不是在 中设置的tsconfig.json
原因是我正在生成一个与我的主项目不同的构建脚本,它确实使用tsconfig.json
了 、webpack 等)
我尝试使用-m commonjs
,但不允许使用--outFile
,仅amd
或system
。
问题是,以这种方式生成的代码在调用时会产生此错误node
:
ReferenceError: define is not defined
我不知道如何定义define
. 该命令是否有node
提供必要定义的参数?到目前为止,我在谷歌上搜索到的所有内容都调用了我宁愿避免使用的额外工具,或者针对我们兄弟wser 而不是创建一个命令行工具。
注意:任何涉及<scr
ipt>
标签的解决方案都不适用。
解决方案
无法使用tsc
's--outFile
参数将 CommonJS 模块连接到单个文件。有关讨论,请参阅https://github.com/microsoft/TypeScript/issues/7252。
您将需要使用捆绑器(例如 webpack)来实现您的目标。
原答案:
使用 编译单个文件时,不需要tsc
该参数。--outFile
此外,该--lib
选项接受一个 arg 或一个(逗号分隔的)列表。这是您的示例的修改版本:
tsc \
--allowSyntheticDefaultImports \
--lib es2018,dom \
--module commonjs \
--target es2018 \
--moduleResolution node \
./script.ts
这不会捆绑您的脚本,而只是将其转换为 JavaScript。它仍将依赖任何外部进口。
推荐阅读
- reactjs - 是否可以通过状态更新 react-hook-form defaultValue?
- javascript - Chrome(系统)function_data每帧内存使用情况
- python - 了解使用数组引用并将它们附加到字典时会发生什么
- java - 如何使用现有证书连接到服务器以在 Java 中通过 HTTPS 获取 JSON 响应?
- installation - 使用 pip 安装包我正在尝试在我的 envn 'acevision' 中安装包,但它显示来自其他 envn 'high-hrnet'
- java - Selenium :- 我想用 java 连接 selenium 中的两个 div 值。想要值作为(强度+25G 植物蛋白)
- c++ - Emacs 讽刺 linter 错误发现包括 (Doom)
- json - 解析获取请求期间的 Http 失败,它响应 csv 格式的数据
- python - Cloud9 库未导入到 Lambda
- autocomplete - Magento 2:向结帐字段添加“自动完成”属性