似乎想要在“干净”的机器上运行grunt,我们必须首先编写一个运行“npm install”的外部脚本。
有没有办法让grunt首先运行“npm install”来在devDependencies中安装它的插件?
答案 0 :(得分:1)
Grunt只是一个节点模块,与任何其他模块一样,它使用npm进行依赖关系管理。据我所知,无法通过模块以编程方式访问npm本身。
但你的问题可以用咕噜咕噜的方式解决。 Grunt有一个名为grunt.task.exists的界面。您可以使用它来检查任务是否已加载以及某些内容是否已加载,然后运行grunt-shell包含npm install
的任务。实现此目的的一种方法是动态创建别名:
function safeTasks(tasks) {
exists: for (var task in config) {
if (!grunt.task.exists(task)) {
tasks.unshift('shell:dependencies');
break exists;
}
}
return tasks;
}
grunt.registerTask('default', safeTasks(['one', 'another']));
config
是传递给grunt.initConfig()
的对象。