【问题标题】:gruntjs - where to install tasks?gruntjs - 在哪里安装任务?
【发布时间】:2013-04-17 19:11:58
【问题描述】:

从事 gruntjs 'Hello World' 项目,似乎没有安装 grunt 任务的最佳位置。例如,假设我想开始编译咖啡脚本,我需要安装“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。
  • 在您的 README 中,提供一些说明以在克隆时运行 npm install(注意,没有参数),或者如果它们将依赖项添加到构建文件中。

【问题讨论】:

    标签: javascript gruntjs


    【解决方案1】:

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

    【讨论】:

    • 感谢 Sindre,这就是答案。我在问题中对其进行了扩展。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多