试图理解一些基本的 grunt 术语、实体和关系

trying to understand some basic grunt terminology, entities and relationships

我正在尝试学习 grunt,并且我正在尝试在 grunt 的上下文中理解以下实体和关系:

我正在审查一个 gruntfile.js 的现有项目。这是一些示例代码:

grunt.loadNpmTasks('grunt-contrib-sass');    

父项目结构有一个 node_modules 目录,其中有一个文件夹用于 grunt-contrib-sass。整个 grunt-contrib-sass 子目录是指 "plugin" 还是 "plugin" 指的是该目录的某个子目录?

grunt-contrib-sass 目录有一个嵌套的 node_modules 子目录。我假设嵌套的 node_modules 子目录包含 grunt-contrib-sass 的注册依赖项。这个对吗?

grunt-contrib-sass 目录有一个带有 sass.js 文件的任务子目录。该目录有一个带有 check.js 文件的 lib 子目录。 lib 子目录是否用于保存主要 grunt js module/task 的支持 js 文件?

因为 sass.js 在任务子目录中,我假设这被认为是 "sass task." 这是否正确?这个任务也称为模块吗?或者模块是否引用其父 node_modules 目录?

我假设示例代码将从 node_modules\grunt-contrib-sass 的任务子目录中导入所有 js modules/tasks。这是正确的吗?

G运行t 是 Node.js Javascript 运行 时间引擎的模块。因此,您看到的是与 G运行t 和 Node.js.

相关的术语混合体

node_modules 文件夹是 Node.js 模块存储其依赖项的地方。如果 package.json 文件中声明了依赖项,节点数据包管理器 npm 会将它们安装到此文件夹中。

G运行t 作为约定有一个 tasks 文件夹,其中提供了 G运行t 任务的可执行代码。项目基础文件夹中的 Gruntfile.js 将 grunt.registerTask() 定义的任务配置为 运行。但是你的项目中不需要有一个任务,它也可以利用像grunt-contrib-sass这样的插件,正如你所看到的。

如果G运行t遇到grunt.loadNpmTasks('task-module')命令,它会寻找node_module/task-module/tasks文件夹。它将在那里加载 .js 文件,如果遇到命令 grunt.registerTask('myTask', function ...),则注册该任务函数。它将以项目 Gruntfile.js 中定义的全局配置对象中的 myTask 条目作为其参数来执行。

虽然一个插件完全可以定义多个任务,但每个模块只定义一个任务显然是个好习惯。相比之下,您的项目将利用(或自行定义)多项任务。

如果您 运行 grunt myTask --verbose 命令,您可以直接在命令行上执行加载过程。

要恢复,

  • G运行t plugins 是 g运行 提到的 Node.js modules t 加载命令,通常有一个 tasks 子文件夹
  • tasks是你项目的G运行t文件中注册的函数(如G运行tAPI中所述)本身或 G运行t 将扫描的每个子文件夹中的每个文件。
  • node_modules是存放Node.js个模块所有依赖的文件夹。