gruntjs - 在哪里安装任务?

时间:2012-09-18 20:56:15

标签: javascript gruntjs

处理gruntjs'Hello World'项目,似乎没有最佳位置来安装grunt任务。比方说,我想开始编译coffeescript,我需要安装'grunt-coffee'任务。

选项1:将其安装到我的src树

这似乎是the way grunt would like you to do it,而且有效。

cd $MY_PROJECT_HOME
npm install grunt-coffee
grunt coffee

但是,这会为我的项目树增加7.2mg。我不想把它放在我的src控件中,但如果我删除它,grunt将不会构建我的项目。我可以.gitignore它,但是其他下载存储库的人如果不进行相同的安装就无法构建。这对CI服务器来说也有点混乱。

选项2:全局安装

cd $MY_PROJECT_HOME
npm install -g grunt-coffee
grunt coffee

如果我以这种方式安装插件,Grunt找不到我的插件:

Local Npm module "grunt-coffee" not found. Is it installed?

我不清楚为什么不支持这个。

选项3:将它们安装在其他地方?

Grunt有一个名为loadTasks的api方法,它在本地加载任务。我试着拉下npms并将它们自己移动到我在这里引用的自定义目录中,没有运气。 EG

grunt.loadTasks('$SHARED_TASKS_FOR_ALL_MY_GRUNT_PROJECTS/node_modules/grunt-coffee')

然后:

cd $SHARED_TASKS_FOR_ALL_MY_GRUNT_PROJECTS
npm install grunt-coffee
cd $MY_PROJECT_HOME
grunt coffee

Task "coffee" not found. Use --force to continue.

选项4:Grunt在其loadNpmTasks调用中,在某处的.grunt目录中为我拉下依赖项

那很好......:)


修改

下面的Sindre是正确的。选项1是可行的方法,但缺少一部分 - package.json文件。所以:

  • 添加一个package.json文件并放置所有grunt项目的dependencies in there
  • 确保node_modules.gitignore - ed。
  • 在自述文件中,提供一些指令,以便在克隆时运行npm install(注意,没有参数),或者是否在构建文件中添加依赖项。

2 个答案:

答案 0 :(得分:9)

第一种选择是正确的方法。您不提交node_modules文件夹,而只是指示用户执行npm install获取所有必需的依赖项。

答案 1 :(得分:1)

如果您想使用选项3,正确的语法是:

grunt.loadTasks('$SHARED_TASKS_FOR_ALL_MY_GRUNT_PROJECTS/node_modules/grunt-coffee/tasks')

我们必须以某种方式使用它来构建在与“外部世界”隔离的计算机上运行的构建过程,并且不能在构建时拉入依赖项...