gruntjs - 在哪里安装任务?

Roy*_*ove 8 javascript gruntjs

gruntjs的 "Hello World"项目上工作,似乎没有一个安装grunt任务的最佳位置.比方说,我想开始编译coffeescript,我需要安装'grunt-coffee'任务.

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

这似乎是grunt希望你这样做的方式,并且它有效.

cd $MY_PROJECT_HOME
npm install grunt-coffee
grunt coffee
Run Code Online (Sandbox Code Playgroud)

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

选项2:全局安装

cd $MY_PROJECT_HOME
npm install -g grunt-coffee
grunt coffee
Run Code Online (Sandbox Code Playgroud)

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

Local Npm module "grunt-coffee" not found. Is it installed?
Run Code Online (Sandbox Code Playgroud)

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

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

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

grunt.loadTasks('$SHARED_TASKS_FOR_ALL_MY_GRUNT_PROJECTS/node_modules/grunt-coffee')
Run Code Online (Sandbox Code Playgroud)

然后:

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.
Run Code Online (Sandbox Code Playgroud)

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

那太好了...... :)


编辑

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

  • 添加一个package.json文件,并将所有grunt项目的依赖项放在那里.
  • 确保node_modules.gitignore-ed.
  • 在自述文件中,给出一些npm install在克隆时运行(注意,没有参数)的指令,或者它们是否为构建文件添加依赖项.

Sin*_*hus 9

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