Tag: gruntjs

将现有JavaScript项目导入到Grunt / Brunch项目

我看了保罗·爱尔兰人的讲话,宣布了Yeoman(www.yeoman.io),而且我迷上了运行连续构build环境的概念。 不满意等待一个文曼的邀请,我尝试了咕噜和早午餐。 两者都可以轻松安装,而且我可以用最less的努力启动并运行新的项目。 我不明白如何将现有的项目迁移到任何平台。 我的项目使用单个命名空间,并为模块使用两个约定(一个用于实例化另一个实用程序),每个模块都封装在自执行的匿名函数中,导出到实例或名称空间。 我有至less200个模块和许多简单的辅助函数导出到命名空间; 因此使用控制台在grunt / brunch项目中创build这些控制台并且单独手动导入每个模块并不是很有效。 此外,我正在使用至less15个不同的第三方JavaScript工具。 我不清楚如何把这些东西带进去。 什么是最有效的方式来采取一个大的,现有的项目,并将其迁移到Grunt /早午餐最小的重构和支持任意的第三方工具? 更新 :这两个,我发现早午餐更容易应付。 如果你使用股票“骨架”(即“模板” – 从命令行{在你想要更改的文件夹中执行]执行“brunch new [project_name] –skeleton git://github.com/brunch /simple-js-skeleton.git“)为纯JS,你会得到一个新的文件夹结构,实际上是相当敏感的。 当你运行“早午餐”时,任何你进入“应用程序”(你自己的代码)或“供应商”(第三方)文件夹的文件都会自动重新编译。 这很好,除了。 根据文档,您可以控制订单供应商脚本从Brunch config.coffee文件(JSON文本文件)编译和连接在一起。 对这个文件的改变似乎没有任何效果,所以你最终会得到期待其他插件的插件的第三方竞争条件。 而且,当你把你自己的代码放到自动创build的“app”文件夹中时,你会得到一个自动编译的,即时编辑的代码版本; 但是无法访问 早午餐模糊窗口对象,所以我的初始命名空间声明window.myNameSpace失败,所有后续库调用命名空间也失败。 这与Brunch的模块系统有关,对此我找不到任何文档。 我通过将我的命名空间类放在'vendor'文件夹中来解决这个问题,这个文件夹确保它连接到窗口对象; 然而,现在有一个竞争条件:我的名字空间并不总是可用于我所有的模块。 现在的问题是这样的: 将所有内部和外部库复制到Brunch项目后,如何将应用程序configuration为按照正常顺序加载它们?

在gruntfile中执行shell脚本并将结果赋值给variables

我正在使用grunt来pipe理一套摩卡运行testing。 摩卡testing套件中需要的一件事情是设置某些环境variables,以便根据运行testing的开发人员的环境正确执行testing。 其中一个环境variables在每个开发人员的机器上都会有不同的值,所以我们执行一个bash脚本来为我们设置的环境variables返回这个值。 我正在使用grunt.util.spawn来运行脚本并将其结果分配给在gruntfile中定义的variables,然后使用grunt-env设置具有该值的环境variables。 下面是我的gruntfile(在coffeescript中)的例子: module.exports = (grunt) -> envvar = '' grunt.initConfig pkg: grunt.file.readJSON('package.json') env: dev: ENV_VAR: envvar simplemocha: options: timeout: 30000 reporter: 'spec' compilers: 'coffee:coffee-script' all: src: ['Tests/**/*.coffee'] grunt.registerTask 'init', -> done = this.async command = cmd: './bin/get_envvar.sh' grunt.util.spawn command, (error, result, code) -> envvar = result console.log 'envvar: ' + envvar done […]

添加文件Grunt – concat之间的分界线

我想知道当我们使用Grunt concat来连接文件时,是否有在每个文件之间添加一行的方法。 因为我收到错误,因为在文件结尾的一些内联注释,当它们合并注释也是下一个文件的第一行。 实际上有点棘手,我手动删除这些评论,但如果我能避免明确这个问题,可能会更好。 只要为每个文件添加一行concat就可以了。 我将使用Grunt – uglify删除评论和空间。

Grunt watch:只编译一个文件不是全部

我有咕噜安装程序将我所有的咖啡文件编译成JavaScript,并使用dynamic_mappings维护所有文件夹结构,这很好。 coffee: { dynamic_mappings: { files: [{ expand: true, cwd: 'assets/scripts/src/', src: '**/*.coffee', dest: 'assets/scripts/dest/', ext: '.js' }] } } 我想要做的是使用手表编译任何改变的咖啡文件,仍然保持文件夹结构。 这个工作使用上面的任务,这个任务: watch: { coffeescript: { files: 'assets/scripts/src/**/*.coffee', tasks: ['coffee:dynamic_mappings'] } } 问题是,当一个文件改变时,它将咖啡的整个目录再次编译成Javascript,如果只编译改变为Javascript的单个咖啡文件,那将是非常好的。 这在Grunt中是自然的可能还是这是一个自定义function。 这里的关键是它必须保持文件夹结构,否则它会很容易。 我们有自定义的观察脚本在工作,我试图卖给他们在Grunt,但需要这个function来做到这一点。

我可以在Grunt中执行两次“min”任务吗?

有没有办法在Grunt中以不同的configuration运行两次任务? 假设我的项目中有两组源文件,我想将它们缩减为两个单独的缩小输出文件。 喜欢这个: project srcA fileA1.js fileA2.js srcB fileB1.js fileB2.js 作为预期的结果,我想看到fileA.min.js和fileB.min.js 。 我怎样才能做到这一点,因为min似乎只支持一组src和dest属性? min: { dist: { src: [ 'srcA/*.js'], dest: 'fileA.min.js' } }

漂亮打印HTML模块?

我正在处理一个grunt构build文件,命中一个URL并将输出写入一个静态的HTML文件。 我打的URL有压缩的HTML,我想漂亮的打印它,然后写入静态文件。 有没有好的模块来做到这一点? 我环顾四周,似乎Max Ogden的漂亮打印机是我最亲密的select(https://github.com/maxogden/commonjs-html-prettyprinter)。 也许如果我把它与grunt-shell任务结合起来呢? 真的,我宁愿只需要一个模块在咕噜,说漂亮(my-file.html),然后用fs来写,但到目前为止,这是难以捉摸的。

Gruntjs:复制文件时replace模板

我正在写一个Gruntjs脚本 连接+将一些JS文件的模板replace成目标目录(contrib-concat) 复制+replace一些其他文件的模板(contrib-copy) 将文件打包成一个zip文件 contrib-concat有一个布尔选项过程来处理文件时replace模板(如<% pkg.version %> )。 contrib-copy也有一个选项processContent ,但是我不知道如何用这个选项触发模板处理。 module.exports = function(grunt) { grunt.initConfig({ meta: { banner: ' \ /*! <%= pkg.title || pkg.name %> – v<%= pkg.version %> – <%= grunt.template.today("yyyy-mm-dd") %>\n \ * <%= pkg.homepage %>\n \ */\n\n', build_date: '<%= grunt.template.today("yyyy-mm-dd") %>', build_num: process.env.BUILD_NUMBER || 0, // Jenkins build number if available […]

Grunt无法在Azure网站上运行

我正在尝试使用Azure的Git部署来构build和打包项目。 我创build了以下文件 .deployment deploy.cmd Gruntfile.js package.json 我的.deployment文件调用了deploy.cmd 。 deploy.cmd通过将path设置为包含Node.js和npm的检查副本来设置环境。 我可以打电话给npm install就好了。 当我调用grunt ,它似乎执行到第一个标准输出消息,然后返回并设置错误返回码。 除此之外,我没有收到任何其他消息。 其他命令似乎运行得很好。 我试过把STDERR弄出来,没有运气。 我尝试在远程执行控制台下运行,没有运气。 我的Gruntfile.js本地运行就好了。 有没有我失踪的魔法酱?

如何自动完成在我的Node.js项目中编译前端框架(如Twitter Bootstrap)的任务?

我如何自动完成在我的Node.js项目中编译Twitter Bootstrap的任务? 我正在编辑LESS文件,这些文件编译为我的Node.js项目的自定义Bootstrap版本,因此我不能只使用在线定制器或预编译的JavaScript / CSS分发版。 我如何使用Grunt或Bower这样的工具来自动化构build和编译Twitter Bootstrap前端框架到我的项目中的过程? 是否有前端库和框架的包pipe理器?

如何使用package.json中的“version”属性作为grunt中的应用程序目录?

我正在用angularjspipe理一个项目,使用默认的目录结构,不包括使用版本控制的app目录(例如“app / 0.0.0 /”,“app / 0.1.0 /”等等)。 我试图使用grunt的package.json文件的“版本”属性来加载正确的目录,所以我将不必手动更改gruntfile.js中的应用程序path,但由于某种原因,我不断得到“无法GET /”,当我运行“grunt服务器”。 为了更好地解释这一点,下面是我的gruntfile.js的示例: var yeomanConfig = { app: 'app/<% pkg.version %>/', dist: 'dist' … grunt.initConfig({ yeoman: yeomanConfig, pkg: grunt.file.readJSON('package.json'), … 如果我手动将应用程序属性更改为“app / 0.0.0”,它就像一个魅力,所以我猜这是与模板有关。 有任何想法吗? 非常感谢你的帮助。 编辑:感谢您的更正安德烈亚斯和Matjaz,但这并没有解决问题,并给出了同样的错误…这解决了我的问题,但没有模板系统: var pkgVersion = grunt.file.readJSON('package.json').version; // configurable paths var yeomanConfig = { app: 'app/'+pkgVersion, dist: 'dist' }; 这是相当丑陋的,但它的作品。 希望得到一个合适的解决scheme。