Articles of gruntjs

通过bower安装jQuery-Mobile

在我的项目中,我想通过凉亭使用jquery-mobile。 在我可以使用它之前,我必须在bower_components/jquery-mobile之后运行npm install和grunt然后才能使用缩小的.js和.css文件。 这是非常乏味的,如果我不得不为每个使用的库都做这个,我想我会后退到下载文件并将它们添加到我的项目中。 那么有没有更优雅的方式通过鲍尔依赖关系到达这些“最终”文件? 我的bower.json "dependencies": { … "jquery-mobile": "latest", }

通过一个咕噜任务更新json文件中的文件引用

我是一名JavaScript开发人员,从头开始创build构build过程相当新颖。 我select使用Grunt来处理当前的项目,并且创build了一个GruntFile,这个GruntFile约占我需要的90%,除了这个问题之外,它工作的很好。 我有几个JavaScript文件,我在manifest.json文件中开发chrome扩展时引用。 对于我的构build过程,我连接所有这些文件,并将其缩小到一个文件,以包含在manifest.json 。 有没有在生成过程中更新manifest.json文件中的文件引用,所以它指向缩小版本? 这是src清单文件的一个片段: { "content_scripts": [{ "matches": [ "http://*/*" ], "js": [ "js/lib/zepto.js", "js/injection.js", "js/plugins/plugin1.js", "js/plugins/plugin2.js", "js/plugins/plugin3.js", "js/injection-init.js" ] }], "version": "2.0", } 我有一个长长的任务,将上面列出的所有js文件连接并缩小到一个名为inject.js的文件中,并且想要一个可以修改清单文件的grunt任务,如下所示: { "content_scripts": [{ "matches": [ "http://*/*" ], "js": [ "js/injection.js" ] }], "version": "2.0", } 我现在所做的是有两个版本的清单文件,一个用于开发,另一个用于构build,在构build过程中,它复制构build版本。 这意味着我需要保持2个版本,我宁愿不要做。 有没有办法更好地与Grunt做这个?

在Docker容器内部或外部运行Grunt / Gulp?

我试图找出一个良好的做法,使用grunt / gulp部署在Docker容器内的nodejs应用程序的构build过程。 我很满意以下顺序: 在容器外部使用grunt(或gulp)构build 将./dist文件夹添加到容器 在容器内运行npm install(带–production标志) 但在每一个我发现的例子中,我看到了一个不同的方法: 将./src文件夹添加到容器 在容器内运行npm install(使用dev依赖) 在容器内运行凉亭安装(如果需要的话) 在容器内部运行grunt(或gulp) 国际海事组织,第一种方法生成一个更轻,更有效的容器,但所有的例子都在使用第二种方法。 我错过了什么吗?

我可以在我的代码组织项目中有多个gruntjs文件吗?

我为我的项目使用gruntjs,并想知道是否有可能在我的项目中有多个grunt.js文件? 我问的原因是我的项目是这样组织的: grunt.js | |- project1 | | | |-grunt.js | |- project2 | |- project3 (etc..) 我想要顶级的grunt.js来构build所有的项目。 但随着项目列表的增长,我不希望我的顶级grunt.js文件变得巨大。 所以我想组织它,以便最高级的咕噜声可以调用项目级咕噜文件来构build它们。 或者如果有人想要构buildproject1,他们可以到project1文件夹并运行它自己的grunt.js。 可以这样做吗? 如果是这样,我该如何调用其他grunt文件? 如果没有,那么除了拥有一个巨大的grunt.js文件之外,还有什么其他解决scheme? 谢谢。

如何运行grunt 0.4。*没有grunt-cli

我想知道是否可以运行grunt 0.4。*而不用安装grunt-cli。 我明白,grunt-cli寻找安装在我的项目目录中的节点模块中的grunt的版本,以便运行该版本的grunt,但是…是否可以在没有安装grunt-cli的情况下运行grunt? 怎么样? 提前致谢!

在OS X上安装Grunt

以下是我迄今为止所做的: brew install nodejs npm npm install -g grunt 我也设置了我的path包括正确的目录。 当我运行echo $PATH我得到: /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/lib/node:/usr/local/lib/node_modules:/usr/local/share/npm/bin:/usr/local/share/npm/lib/node_modules:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/landonschropp/.rbenv/shims:/usr/local/sbin:/usr/local/lib/node:/usr/local/lib/node_modules:/usr/local/share/npm/bin:/usr/local/share/npm/lib/node_modules:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 安装成功没有任何问题。 但是,如果我试图运行grunt我得到这个错误: zsh: permission denied: grunt 我错过了一个步骤?

使用grunt-contrib-less编译较less的文件将不起作用

我正在使用Grunt来构build我的Web项目。 我安装了grunt-contrib-less软件包,并将一个任务添加到我的grunt.initConfig({..}); less : { options: { paths: ['js/base'] }, files: { 'js/base/*.css' : 'js/base/*.less' } } 当我通过grunt less运行目标less ,它运行没有错误,但不编译less文件到一个CSS文件。 Running "less:files" (less) task Done, without errors. 我也通过节点安装了lessc软件包。 做lessc <source> <dest>工作正常。 目前我已经将文件选项直接指向一个包含less一个testing文件的目录。 即使我将整个文件名写入文件选项 ,它也没有发生什么… 后来我想扫描整个js目录并编译所有新的修改的* .less文件。 我已经安装了以下版本: grunt-cli v0.1.6 grunt v0.4.0 node v0.8.7 npm 1.1.49 BR,mybecks

在VM中运行的node.js脚本不会看到主OS所做的文件夹更改

我有以下设置: 由Vagrant创build的Ubuntu Lucid 32 VM。 Vagrant是用一些CSS和JS文件启动的文件夹。 该文件夹被安装在地址为/ vagrant /的虚拟机内部。 grunt.js带有从VM开始的监视任务,监视css和js文件的变化。 文件更改后,必须将这些文件连接到一个css和一个js文件。 问题:grunt.js中的监视任务没有看到安装文件夹中的更改。 如果我改变虚拟机内的文件,看任务正常工作。 如果我不是从虚拟框启动grunt.js,而是从主要的os启动它也可以。 尝试在Mac OS和Windows 7。 问题只发生在任务从VM开始,文件从主OS改变。 有没有解决这个问题的方法? 更新。 关于我们的使用场景的一些细节,以更好地理解上下文 我们正在devise工作室,10+人使用代码。 不同的人使用不同的OS。 我们有:Win 7,Mc OS X和Ubuntu Linux。 我们正在致力于支持100多个不同的项目。 主题使用不同的语言和设置:我们有我们自己的CMS上的PHP项目,Yii上的PHP项目,Django上的Python项目和一些node.js项目。 不同的开发者可能在某个时间点工作在这个项目上。 现在我们每次需要花费大量的时间在开发人员的计算机上进行项目工作,而之前没有使用过这个工具。 而且通常我们需要一些已经开始工作的开发人员的帮助。 我们想让它变得更加直接。 为此,我们尝试使用Vagrant和一些预configuration的操作系统映像。 现在项目设置看起来像这样: 从git开发人员签出项目。 开发者在terminal打开项目文件夹。 开发者进入“stream浪”。 5分钟后,他完全configuration和工作的项目副本。 我们喜欢这个设置,大部分时间我们没有任何问题。 但在我们的node.js项目中,我们使用了一些css和js预处理器,并且喜欢实时更新它们的文件。 最初的post有问题。 可以使用ssh虚拟机访问文件的解决scheme以及虚拟机内部的项目文件的解决scheme可能会起作用,但是它们并没有解决基本问题(在运行不同操作系统的开发人员组中大量项目的快速和轻松设置)

Grunt使用node.js应用程序进行livereload

我已经在Node.js(用Express&socket.io)编写了一个应用程序, 我想用Grunt在开发和连接到Node.js应用程序时使用livereload编译我的客户端的东西。 我怎样才能做到这一点? (最好不要在另一个端口运行Node.js应用程序,另一个端口运行客户端,因为path和跨域问题) 我也安装了Yeoman,它使用了开箱即用的grunt-contrib-livereload软件包,但是据我所知,它使用Node.js Connect服务器来提供客户端文件,从而与Node.js应用程序分离。 来自Yeoman生成的Gruntfile.js的示例: var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; var mountFolder = function (connect, dir) { return connect.static(require('path').resolve(dir)); }; // … cut some parts grunt.initConfig({ watch: { livereload: { files: [ '<%= yeoman.app %>/*/*.html', '{.tmp,<%= yeoman.app %>}/styles/*.css', '{.tmp,<%= yeoman.app %>}/scripts/*.js', '<%= yeoman.app %>/images/*.{png,jpg,jpeg}' ], tasks: ['livereload'] } // ..cut some parts }, connect: […]

Grunt产生的进程不捕获输出

我已经使用Grunt产生了一个进程,但没有写入输出stream(例如console.log )的东西正在控制台中显示。 我想Grunt显示过程的任何输出。 grunt.util.spawn( { cmd: 'node' , args: ['app.js'] , opts: { stdio: [ process.stdin , process.stout , process.stderr ] } })