如果模块位于不同的目录中,如何在 gruntfile 中使用 loadNpmTask 加载任务

How to load a task using loadNpmTask in gruntfile if module is in different directory

正在尝试从外部目录加载模块:grunt.loadNpmTasks('grunt-express-server');

出现错误:任务....不存在。你加载了吗?

目录结构:

client/
  node_modules
  gruntfile
dev_server/
  node_modules/
    grunt-express-server

所以我的问题是:你如何使用存储在外部目录中的节点模块运行 g运行t-task?

您需要使用 grunt.task.loadtasks 将其指向您要加载任务的任务目录。

你的情况:

grunt.loadTasks('../dev_server/node_modules/grunt-express-server/tasks');

如果您在 github 上检查 grunt 的 master,在 task.js 的第 325 行,它需要位于您作为参数传递的文件路径中的任务文件 (.../tasks/express.js) .

// Load taskfile.
fn = require(path.resolve(filepath))

编辑

如果您想知道是否可以将 grunt 的路径重新定位到 node_modules,请查看此 question