Gruntfile.js 中的智能感知

intellisense in Gruntfile.js

是否可以在 Gruntfile 中使用智能感知?

因为 'grunt' 不是全局变量而是 Gruntfile 中的参数 VSCode 将假设它只是一个未知的函数参数 'any'.

module.exports = function(grunt) {...}

当我将类型添加到参数时,intellisense 工作正常,但 grunt 不会,因为它是 JS 而不是 TS。

module.exports = function(grunt: IGrunt) {...}

您可以创建 gruntfile.ts 并将 TypeScript 与智能感知结合使用。编译后的版本 (gruntfile.js) 将被 GruntJs 使用。

初学者的步骤...

设置类型

为 Grunt 安装 Typings

npm install --save @types/grunt 

找到类型化文件

确保您的 IDE 知道此类型文件的位置:

./node_modules/@types/grunt/index.d.ts

使用Auto-completion

这在 .ts 或 .js 中是可能的,无论你喜欢哪个...(我使用打字稿,因为编译器会做很多 type-safety 检查)

Auto-completion 打字稿

将您现有的 gruntfile.js 重命名为 gruntfile.ts。

添加 IGrunt 类型以启用 auto-completion:

module.exports = function (grunt: IGrunt) {
    // auto-complete works for grunt-dot now
    ...
}

最后,记得编译你的 gruntfile.ts 以便它产生一个新的 gruntfile.js。

Auto-completion 在 Javascript

如果你更愿意避免打字稿....

使用jsdoc在javascript中启用auto-completion:

/**
* 
* @param {IGrunt} grunt
*/
module.exports = function (grunt) {
    // auto-complete works for grunt-dot now
    ...
}

如果您想坚持使用 JavaScript,这将 运行 与您的 JavaScript 一样好,但智能感知与 grunt: IGrunt 一样好:

/**
 * @param {IGrunt} grunt
 */
module.exports = function (grunt) {...}

(为什么是的, 已经 建议这样做,但我想说清楚这可能是 all 你需要做的。)

在 Visual Studio 代码中,如果您将 typescript.disableAutomaticTypeAcquisition 设置为 true(或该功能遇到某种障碍)并且没有 @types/grunt 在你的 package.json 中,但如果是这种情况,grunt: IGrunt 似乎也不起作用。