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

ran*_*shu 3 javascript gruntjs gruntfile

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

得到一个错误:任务....不存在.你装了吗?

目录结构:

client/
  node_modules
  gruntfile
dev_server/
  node_modules/
    grunt-express-server
Run Code Online (Sandbox Code Playgroud)

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

jma*_*ins 6

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

在你的情况下:

grunt.loadTasks('../dev_server/node_modules/grunt-express-server/tasks');
Run Code Online (Sandbox Code Playgroud)

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

// Load taskfile.
fn = require(path.resolve(filepath))
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想知道是否可以重新定位咕噜咕噜的路径node_modules,请查看此问题