如何使用打字稿文件运行 gulp

And*_*ins 6 javascript configuration compilation typescript gulp

有一个使用 gulp.js 文件的 gulp 项目,但我的项目是在打字稿中,所以我宁愿在打字稿中有一个 gulp 文件。可以将过程分为两个步骤,其中我:

1. 手动将 typescript gulp 文件转换为 js,然后
2. 调用gulp <some-task-name>

但这似乎不是最佳的。有没有更好的方法来做到这一点?

ton*_*y19 11

来自Gulp 文档的转译

转译

您可以使用需要转译的语言(如 TypeScript 或 Babel)编写 gulpfile,方法是更改​​您的扩展名gulpfile.js以指示语言并安装匹配的转译器模块。

  • 对于 TypeScript,重命名gulpfile.ts并安装ts-node模块。
  • 对于 Babel,重命名gulpfile.babel.js并安装@babel/register模块。

所以在 Gulp 中添加 TypeScript 支持的更简单方法是:

  1. 安装ts-nodetypescript@types/gulp

    $ npm i -D ts-node typescript @types/gulp
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果你有一个tsconfig.json文件设置ts-node.compilerOptions.module"commonjs"

    $ npm i -D ts-node typescript @types/gulp
    
    Run Code Online (Sandbox Code Playgroud)

    (您不需要tsconfig.json文件,这仅适用于您的项目中已经有文件的情况)

  3. gulpfile.ts使用以下演示代码创建:

    {
        // these options are overrides used only by ts-node 
        "ts-node": {
            "compilerOptions": {
                "module": "commonjs" 
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    (或将您现有的重命名Gulpfile.jsgulpfile.ts

  4. 开始构建:

    $ npx gulp
    
    Run Code Online (Sandbox Code Playgroud)

输出应该类似于:

$ gulp
[21:55:03] Requiring external module ts-node/register
[21:55:03] Using gulpfile ~/src/tmp/typescript-tmp/gulpfile.ts
[21:55:03] Starting 'default'...
default
[21:55:03] Finished 'default' after 122 ?s
Run Code Online (Sandbox Code Playgroud)

  • 这不再起作用了。如果项目的“类型”是“commonjs”,我得到“语法错误:无法在模块外使用导入语句”;如果项目的类型是“模块”,我得到“类型错误 [ERR_UNKNOWN_FILE_EXTENSION]:未知的文件扩展名“.ts””。 (4认同)