从事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
在克隆时运行(注意,没有参数)或者是否将依赖项添加到构建文件中。