Articles of gruntjs

咕噜表的任务似乎需要很长时间

我正在运行两个简单的任务,每个任务的运行时间都小于100ms,但是在watch命令下运行时,两个组合任务总共花费了大约8秒(每个任务的开销似乎为3.5秒)。 我正在使用它与现场重新开发,我觉得非常沮丧。 我尝试设置spawn为false但这似乎打破了它,并没有任何相关的任务运行。 这里是从sass文件更改时的示例输出。 >> File "app/styles/main.scss" changed. File "app/styles/main.css" created. Done, without errors. Elapsed time loading tasks 4ms ▇▇▇▇▇ 9% sass 1ms ▇▇ 2% sass:dist 39ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 89% Total 44ms Completed in 3.862s at Mon Nov 18 2013 17:05:57 GMT+0000 (GMT) – Waiting… OK >> File "app/styles/main.css" changed. Running "copy:styles" (copy) task Copied 1 […]

运行跨多个grunt.js文件configuration的任务

我有一个包含多个未发布模块的节点应用程序。 我的应用程序的package.json包含一些git依赖项: "module-a": "git+ssh://git@github.com:me/module-a.git", "module-b": "git+ssh://git@github.com:me/module-b.git" 每个人都有自己的gruntconfiguration。 例如在node_modules/module-a/grunt.js : module.exports = function(grunt) { grunt.initConfig({ lint: { files: ['server/**/*.js', 'test/**/*.js'] }, jshint: { options: require('./lint-ci') } }); grunt.registerTask('default', 'lint'); }; (他们也运行testing等,但我在这里保持简单) 有没有一个内置的方式来做到这一点与咕噜? 请注意,为了方便起见,我只想保留相关的grunt.js文件,只是在该依赖项中更改了某些内容。 我find的唯一解决scheme是 以编程方式构build我的主要grunt.js(例如,遍历我的package.json中的依赖项来构buildlint和testingconfiguration) 使用–config node_modules/module-a/grunt.js多次调用grunt 两者都不是理想的。 有没有更好的办法?

使用Grunt(Yeoman)的多个构build文件夹(多个客户端,多个任务,多个目标)

我正在构build一个项目,它将是一个webapp(浏览器可运行)和一个Phonegap应用程序(iOS和Android)。 尽pipe我的项目在理论上可以使用我的Yeoman生成的相同的dist文件夹,但是Grunt任务通过运行grunt build build生产就绪代码。 我想运行一些像grunt build_web , grunt build_ios和grunt build_android ,为每个平台单独构build生产代码。 或grunt build:web , grunt build:ios , grunt build:android 。 这样,我可以自定义一些加载的脚本,图像等,每个都有自己的构build指令。 那么,我是否应该通过我的Gruntfile复制粘贴所有的dist并负责任地build指令? 或者,对此有最佳做法吗? (试过这个,没有工作) Yeoman伙计,这可能吗? 这是我目前的Gruntfile.js ,以防万一。 'use strict'; var LIVERELOAD_PORT = 35729; var lrSnippet = require('connect-livereload')({port: LIVERELOAD_PORT}); var mountFolder = function (connect, dir) { return connect.static(require('path').resolve(dir)); }; // # Globbing // for performance reasons […]

在部署Grunt应用程序到heroku时,NPM不会安装模块依赖项

我使用grunt制作了一个静态单页面网站。 我现在正在尝试使用heroku buildpack将其部署到heroku,以用于节点咕噜声。 以下是我的根目录的图片: 这是我的Gruntfile,package.json和Procfile: https://gist.github.com/callumflack/8038464 https://gist.github.com/callumflack/8038483 web:node index.html 当我$ git push heroku master它到Gruntfile并失败: —–> Found Gruntfile, running grunt heroku:production task >> Local Npm module "grunt-contrib-uglify" not found. Is it installed? 上述错误继续列出所有本地NPM模块为未find。 如果我列出所有的loadNpmTasks而不是使用“load-grunt-tasks”,我会得到完全相同的错误。 当我$ heroku logs我得到: Starting process with command `node web.js` Error: Cannot find module '/app/web.js' 任何人都可以看到我哪里出了错?

如何使Grunt等待任务完成后再运行另一个?

这是我的Gruntfile和输出 。 正如您在输出中看到的那样,有几个与asynchronous任务相关的问题: imagemin被称为,下一个直线前进。 这使得它的输出出现在任务的最后,有什么相当混乱的; build ,这是一个自定义任务,使用var done = this.async()并在完成命令后调用done() ; 但是,如果我单独运行任务,这只能正常工作。 用另一个任务运行它也会使其运行asynchronous; 随着build运行后, jasmine没有什么可testing,因此是无用的。 有没有办法解决这个问题?

获取grunt-express重新启动更改

我正在尝试使用grunt-express和grunt-watch。 我想服务器重新加载,我改变我的服务器文件。 这是我得到的。 Gruntfile.js var path = require('path'); module.exports = function(grunt) { grunt.initConfig({ express: { options: { port: 8000 }, load: { server: path.resolve('./app') } }, watch: { express: { files: ['app.js'], tasks: ['express:load'] } } }); grunt.loadNpmTasks('grunt-karma'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-express'); grunt.registerTask('server', ['express:load', 'express-keepalive', 'watch']); }; app.js var express = require('express'); var app = express(); var […]

如果助手离开,如何从Grunt中的代码调用任务

咕噜是删除帮手,这已经发生在grunt-contrib。 然而,我有一个Grunt文件依靠一些自定义任务调用一些帮助。 没有帮手的话就打破了。 我只是想知道什么应该是正确的方法来取代这些。 我得到它将通过以某种方式直接调用任务,但我不知道如何。 一个例子会帮助很多,因为Grunt文档还没有更新。 谢谢。

如何使用摩卡生成多个报告?

我想要有以下报告: 覆盖 规范 的xUnit 所有在我的咕噜声中执行的一个摩卡执行 目前 – 我必须运行testing3次,每次生成一个不同的报告(!)。 所以我用2个configuration的grunt-mocha-test (只有记者不同)(一次xunit-file和一次spec)。 然后我又有grunt-mocha-istanbul再次运行testing,并生成覆盖报告。 我试过使用 { options: { reporters : ['xunit-file', 'spec'] } } 对于grunt-mocha-test ,至less把它降到2,但这并不是工作。 阅读grunt-mocha-istanbul文档,我似乎无法find关于reporterconfiguration的任何信息。 我该如何解决这个问题?

Grunt Globbing模式

什么是需要实现以下模式。 匹配目录.tmp中的所有html文件 匹配.tmp / views及其所有子目录中的所有html文件(recursion到任何深度) 这是在Grunt文件中注册livereload任务。 我尝试了以下configuration的几个品种。 它匹配.tmp中的所有文件,但不能在.tmp/viewsrecursion地匹配 还试过, '.tmp/{,views/**/}*.html' 但结果相同。 livereload: { options: { livereload: LIVERELOAD_PORT }, files: [ '.tmp/{,views/**}*.html' ] }

如何testing一个Grunt任务? 理解和最佳实践

理解如何编写复杂的Gruntfile.js并在testing中使用它,我有点Gruntfile.js 。 我是否正确使用Grunt? 我想问社区的帮助,并以另一种方式作出贡献。 我正在为Grunt写一个新的任务 ,并希望在Github和npm上为广泛的读者推出它。 我想为这个任务进行自动化testing(我想学习如何正确执行)。 我想testing不同的选项组合(现在大约15个)。 所以,我应该多次: 运行清理 运行我的任务设置下一个选项 运行testing并将选项对象传递给testing 一些非工作代码,以便更好地理解: Gruntfile: grunt.initConfig({ test_my_task: { testBasic: { options: { //first set } }, testIgnore: { options: { //another set } }, //… } clean: { tests: ['tmp'] // mmm… clean test directory }, // mmm… unit tests. nodeunit: { tests: ['test/*.js'] //tests code […]