处理gruntjs'Hello World'项目,似乎没有最佳位置来安装grunt任务。比方说,我想开始编译coffeescript,我需要安装'grunt-coffee'任务。
这似乎是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服务器来说也有点混乱。
cd $MY_PROJECT_HOME
npm install -g grunt-coffee
grunt coffee
如果我以这种方式安装插件,Grunt找不到我的插件:
Local Npm module "grunt-coffee" not found. Is it installed?
我不清楚为什么不支持这个。
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.
那很好......:)
下面的Sindre是正确的。选项1是可行的方法,但缺少一部分 - package.json文件。所以:
node_modules
为.gitignore
- ed。npm install
(注意,没有参数),或者是否在构建文件中添加依赖项。答案 0 :(得分:9)
第一种选择是正确的方法。您不提交node_modules文件夹,而只是指示用户执行npm install
获取所有必需的依赖项。
答案 1 :(得分:1)
如果您想使用选项3,正确的语法是:
grunt.loadTasks('$SHARED_TASKS_FOR_ALL_MY_GRUNT_PROJECTS/node_modules/grunt-coffee/tasks')
我们必须以某种方式使用它来构建在与“外部世界”隔离的计算机上运行的构建过程,并且不能在构建时拉入依赖项...