8

从事gruntjs 'Hello World' 项目,似乎没有安装 grunt 任务的最佳位置。例如,假设我想开始编译咖啡脚本,我需要安装“grunt-coffee”任务。

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

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

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 并将它们自己移动到我在这里引用的自定义目录中,但没有成功。例如

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 目录中拉下依赖项

那会很好... :)


编辑

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

  • 添加一个 package.json 文件并将所有 grunt 项目的依赖项放在那里
  • 确保它node_modules.gitignore-ed。
  • 在您的自述文件中,提供一些说明以npm install在克隆时运行(注意,没有参数)或者是否将依赖项添加到构建文件中。
4

2 回答 2

9

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

于 2012-09-24T09:57:13.927 回答
1

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

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

我们必须以某种方式将其用于我们的构建过程,该过程在与“外部世界”隔离的计算机上运行并且无法在构建时引入依赖项......

于 2013-04-17T11:11:58.900 回答