,便用 concat 把 css 或 js 目录下的文件进行了合并,再用 cssmin 或 uglify 把刚刚合并的文件压缩,最后用 clean 把合并但未压缩的文件删除掉。...grunt-newer 使用了 cssmin 和 uglify 之初项目还不算大的时候,你也许已经发现了一个现象。...> 上面一段代码在上线时是需要注释掉的,那在修复时又要重新打开这份代码,注释掉上面上线使用的代码。...如果涉及到多个页面的修改,那得手动打开很多份类似这样的代码,而在修复完成后又得重新重复地进行注释和打开上线代码。万一有哪一段代码没看见忘了就不好了。...接着将 html 代码复制到 dest 目录,替换里面引用到的图片和 css 文件名。最后将 tmp 目录删除。
但是,如果我们将它们合并到一个文件中,浏览器只需发送一个请求即可,从而节省了9个请求所需的时间。 缩小 在缩小过程中,从CSS和JavaScript文件中删除所有空行、注释和额外空格。...此外,该示例将完整的代码放在一行,所有代码注释也都被删除了。这种缩小尺寸的方法有助于快速装载,并且该文件将消耗更少的带宽,这在服务器资源有限的情况下是非常有用的。..."grunt-contrib-uglify" : "0.2.0" }, "author" : "Altaf Hussain", "license" : "" } 代码中添加了一些注释方便大家理解...但在最终部署使用时,这些内容会被删除。 我们找到DevDependencies处的配置,添加三个Grunt插件。...js', 'cssmin:css', 'uglify:js']);}; //module.exports结束 上面的代码清晰明了,关键环节也添加了注释。
背景 有时,我们需要删除Java源代码中的注释。目前有不少方法,比如: 实现状态机。该方式较为通用,适用于多种语言(取决于状态机支持的注释符号)。 正则匹配。该方式容易误判,尤其是容易误删字符串。...上述代码已有注释,因此不再详述。 封装为IDEA插件 考虑到我们平时可能会大量使用该功能,因此将其封装为了IDEA插件,名为remove.comments。下面简要介绍该插件的工作原理及使用方式。...首先读取当前文件内容也即源码,然后交给前面已经介绍过的CommentsRemover.doAction处理,就拿到了删除注释后的源码。 格式化代码。...重启IDEA后,可以看到插件已安装成功: 此时我们就可以使用该插件,一键删除代码中的注释了。...总结 本文首先介绍了若干删除注释的手段;继而介绍了一种利用第三方库JavaParser删除Java注释的思路,并加以分析和实践;最终将其封装为IDEA插件,方便其他用户使用。
背景 有时,我们需要删除Java源代码中的注释。目前有不少方法,比如: 实现状态机。该方式较为通用,适用于多种语言(取决于状态机支持的注释符号)。 正则匹配。...上述代码已有注释,因此不再详述。 封装为IDEA插件 考虑到我们平时可能会大量使用该功能,因此将其封装为了IDEA插件,名为remove.comments。下面简要介绍该插件的工作原理及使用方式。...其中包含两段核心代码: 删除源码注释。首先读取当前文件内容也即源码,然后交给前面已经介绍过的CommentsRemover.doAction处理,就拿到了删除注释后的源码。 格式化代码。...在弹出的目录树中,选中remove.comments.zip安装包,确定即可。 重启IDEA后,可以看到插件已安装成功: ? 此时我们就可以使用该插件,一键删除代码中的注释了。演示一下效果: ? ?...总结 本文首先介绍了若干删除注释的手段;继而介绍了一种利用第三方库JavaParser删除Java注释的思路,并加以分析和实践;最终将其封装为IDEA插件,方便其他用户使用。
以下内容分别是:grunt安装和配置grunt压缩一个js的实例分析grunt 美化、压缩、合并代码文件或者代码文件夹里所有代码文件的代码实例grunt的安装与配置grunt的安装grunt 依赖Node.js...插件加载代码:你在这个过程中使用了哪些插件,把这些插件名称声明出来,仅仅的grunt是不能完成任务的,任务注册代码第一步分条写了很多条任务的具体内容,最后一步就是把注册一个总任务名称,比如:打扫卫生。...grunt-contrib-uglify监听文件变动:grunt-contrib-watch建立本地服务器:grunt-contrib-connect这些插件都是grunt使用过程中最常用的。...grunt.loadNpmTasks('grunt-contrib-uglify');任务注册代码最后一步是注册一个总任务名称,总任务里面包含了任务配置代码中的哪些任务。...'; } } ] } }具体用法代码注释已经写得很清楚的
grunt是什么,grunt就是个东西.. grunt作为一个前端构建工具,有资源压缩,代码检查,文件合并等功能。 下面就简单了解grunt的使用。...: { "grunt": "^0.4.5" } } 好这时,我们用grunt命令执行一下,果然出现了没有default这货,看了它是需要这货的,那就把上头那个注释去掉,再试试 ?...三、各插件使用 而一般常用方法是使用提供的 插件,进一步作处理 1)比如代码压缩: html压缩:htmlmin css压缩: cssmin js压缩:uglify 官方提供了充足的介绍,当然了,初次接触...true, //在头部添加 js文件名和时间的注释 banner: '/*!...当然了,还有图片的压缩 imagemin 也可以去试试 2)jshint 代码检查 js代码的检查可以使用 jshint插件 同理,先 装好 grunt-contrib-jshint 检查的规则见 DOCS
grunt和grunt-cli的分离确保每个团队的成员使用同一版本的grunt task runner。 Grunt Task Runner grunt命令会调用Grunt task runner。...Grunt的插件可以用npm安装。这里我们将使用插件——grunt-contrib-uglify。 Gruntfile 现在我们该告诉 GruntJS该做哪些任务了。...在blog目录下创建一个新文件,起名为 Gruntfile.js,加入下列代码: module.exports = function(grunt){ }; 这是我们开始使用Gruntfile所需的样板...'); grunt.registerTask('default', ['uglify']); }; 上面的代码做了这些事: 我们配置了uglify任务,指定了源文件和目标文件。...app.min.js如下所示,所有的空格被删除了,函数的参数被重构为单一字母,整个文件被压缩成一行。
grunt集成Babel 实现ES6转ES5 背景:原来前端项目使用ES5开发,后来有个小伙伴使用了ES6的高级语言,导致项目无法通过grunt压缩。...grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-babel'); // 默认被执行的任务列表。...需要注意的是,由于原来项目代码是ES5和ES6混用的状态,所有有部分代码是不符合ES6的标准的。...Babel将ES6的语法转化成ES5,会给每一个文件加上“use strict”,导致原来部分使用ES5的代码暴露在严格模式下,这在转化或者运行时会报错。 本人在转化和运行时就遇到了两个错误。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
本文介绍如何使用make命令,作为网站的构建工具。以下内容既是make语法的实例,也是网站构建的实战教程。你完全可以将代码略作修改,拷贝到自己的项目。 ?...(3)语法问题 Grunt和Gulp都有自己的语法,并不容易学,尤其是Grunt,语法很罗嗦,很难一眼看出来代码的意图。当然,make也不容易学,但它有复用性,学会了还可以用在其他场合。...$ make UGLIFY=node_modules/.bin/jsmin min 上面代码,将jsmin命令给变量UGLIFY,压缩时就会使用jsmin命令。...九、删除临时文件 构建结束前,删除所有临时文件。 clean: rm -rf build 使用时调用下面的命令。...build: template concat min clean 上面代码将build指定为执行模板编译、文件合并、脚本压缩、删除临时文件四个任务。 使用时调用下面的命令。
想如何删掉所有java 或xml 中的注释,还在寻找eclipse 中的快捷键了吗,你out了,现在都用正则表达式了、 首先我们了解java 中的注释无非3种: // 单行注释.../* */ 多行注释 /** */ 文档注释 我们可以使用 Ctrl+F 中替换方式来解决,把注释都替换为为空,这样就解决了删除注释的目的。...在上面方框填入正则表达式 删除 java 注释 /* */: /\*{1,2}[\s\S]*?\*/ 删除 java 注释 //: //[\s\S]*?\n 删除xml注释: 删除空白行: ^\s*\n \n或者是\r\n 或者是\r 都可能是换行符,要看你的系统是windows还是Unix/Linux或者是mac的系统
实际上,安装的并不是 Grunt,而是 Grunt-cli,也就是命令行的 Grunt,这样你就可以使用 grunt 命令来执行某个项目中的 Gruntfile.js 中定义的 task 。...在这里面的代码,除去你自己写的乱七八糟的 JS,与 Grunt 有关的主要有三块代码:任务配置代码、插件加载代码、任务注册代码。...插件加载代码 这个就超级简单了,由于上面任务需要用到 grunt-contrib-uglify,当 grunt-contrib-uglify 安装到我们的项目之后,写下下面代码即可加载: grunt.loadNpmTasks...('grunt-contrib-uglify'); 任务注册代码 插件也加载了,任务也布置了,下面我们得注册一下任务,使用 grunt.registerTask('default', ['uglify'...也就是说,当我们执行 grunt 命令的时候,uglify 的所有代码将会执行。
grunt-contrib-uglify:Minify files with UglifyJS....,添加要使用插件配置 'use strict'; module.exports = function(grunt) { // 构建的初始化配置 grunt.initConfig({ //配置具体任务...}); // 载入要使用的插件 grunt.loadNpmTasks('grunt-contrib-clean'); // 注册刚配置好的任务 grunt.registerTask(...dirs: { src: 'path', dest: 'dest//', }, // clean任务(删除...'/bulit.min.js': ['/*.js'] } } } }); // 载入要使用的插件
Grunt每天都有数以千计的下载和应用。 使用Grunt 这个实例使用Empty ASP.NET项目模板来展示自动化的客户端构建工作。非空的ASP.NET项目模板默认使用Gulp。...:一个用来移除文件和目录的任务 grunt-contrib-jshint:一个审查代码质量的任务 grunt-contrib-concat:一个连接多文件在一个文件中的任务 grunt-contrib-uglify...集成起来 使用grunt.registerTask方法来注册运行一系列指定顺序的任务,比如,运行上文中任务的顺序应该为clean->concat->jshint->uglify。...在文件中添加以下代码,并且保持方法调用和loadNpmTasks调用时同级的 grunt.registerTask("all", ['clean', 'concat', 'jshint', 'uglify...使用Gulp 除了一些著名的不同以外,Gulp的配置文件和grunt的非常相似,下文中的例子对比grunt的示例但是使用gulp包和约定。
/grunt.log.writeln('aaaaaaaa'); //函数中可以传递参数 }) }; 随便举的例子2: 执行多任务 module.exports= function...,'b','c']); }; 我们可以初始化一些数据,这些数据可以用到不同的任务里面 module.exports= function (grunt) { grunt.initConfig({...+':'+this.data); }); }; 以下是插件的一部分功能 复制文件 npm install grunt-contrib-copy --save-dev grunt.loadNpmTasks...--save-dev //安装合并插件 npm install grunt-contrib-uglify --save-dev //安装js压缩插件 js压缩合并 concat:{...注释信息 */' }
grunt与seajs grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我们做一些重复度很高的事情,如压缩,合并,js语法检查等。...在seajs社区中,已经提供了一款npm模块,即grunt-cmd-transport。我们通过该模块给seajs模块命名,并处理各模块之间的依赖。...Gruntfile.js其实就是一个node模块,依然使用闭包将所有的逻辑进行包裹,并提供了grunt参数,通过grunt.initConfig进行任务的配置。 ...但是如果通过grunt对seajs进行打包,则模块之间的关系由transport来维护。...concat、uglify、clean任务 这两个任务很容易定义,而且grunt官网上就是以uglify为例讲解Gruntfile的配置,因此,这两个任务的配置我们有很多资料可以参考。
grunt.loadNpmTasks('grunt-contrib-uglify'); // 加载包含 "htmlmin" 任务的插件。...grunt.registerTask('default', ['uglify', 'htmlmin']); }; 这个文件需要理解一下每个Gruntfile(和Grunt插件)都使用下面这个基本格式,...并且所有Grunt代码都必须指定在这个函数里面: module.exports = function(grunt) { // 在这里处理Grunt相关的事情 } 这个函数里面的内容一般会有一个项目配置...']); 然后就可以使用grunt task1:target1, grunt task2(这个会执行task2下的所有目标), grunt task3来执行了, 其中名称叫default的自定义任务比较特殊...了解地差不多了,我准备把前两个写的那个pingdemo使用grunt来构建试试看,期间还稍微看了下bower。
如果希望对在静态页面中引入的相关资源进行压缩(比如:CSS,JavaScript,图片等),可以使用Gulp实现。 当然,还可以其他其他打包工具,比如:Grunt,Webpack等等。...实际上,Gulp是一个插件化的工具,配置文件中的各个任务都是通过指定的插件实现的,当需要使用某个插件时需要先安装该插件。 可以在这里搜索指定的Gulp插件。...在项目根目录下安装对应插件: # 使用gulp-uglify压缩js npm install --save-dev gulp-uglify # 使用gulp-clean-css压缩css npm install... ==> removeScriptTypeAttributes: false, //删除的type="text/...javascript" removeStyleLinkTypeAttributes: false, //删除和的type="text/css"
Grunt不使用数据流,而是使用文件,对文件执行单个任务然后保存到新的文件中,每个任务都会重复执行所有进程,文件系统频繁的处理任务会导致Grunt的运行速度比Gulp慢。...其他两个插件的作用很清楚:uglify()函数压缩代码,concat(‘app.js’)函数将所有文件合并到一个叫app.js的文件中。...(查看大图) BrowserSync不需要使用浏览器插件,因为它本身就可以为你提供文件服务(如果文件是动态的,则为他们提供代理服务)和用来开启浏览器和服务器之间的socket的脚本服务。...目前最流行的两种使用JavaScript开发的构建工具是Grunt和Gulp。...Grunt在2013年非常流行,因为它彻底改变了许多人开发网站的方式,它有上千种插件可供用户使用,从linting、压缩、合并代码到使用Bower安装程序包,启动Express服务都能办到。
在软件开发中使用自动化构建工具的好处是显而易见的。...通过工具自动化运行大量单调乏味、重复性的任务,比如图像压缩、文件合并、代码压缩、单元测试等等,可以为开发者节约大量的时间,使我们能够专注于真正重要的、有意义的工作,比如设计业务逻辑,编写代码等等。...例如 JSHint, Sass 以及 Uglify 也使得 Grunt 具有了良好的可扩展性。...---- 安装 Gulp.js Gulp.js 是基于 Node 的构建工具,类似 Grunt, 要使用它,你的机器上需要装有 Node.js。...当然,这行代码通常也要放到某个任务中去运行。 ---- 转到 Gulp.js 在我开始使用 Grunt 之前的几年里,一直是使用 涛哥 开发的 CssGaga 来做前端构建工具。
这不会执行 live reloading,它试图和 grunt-contrib-watch 或者其他根据文件的修改触发 live reload 的服务器结合使用。...grunt.loadNpmTasks( 'grunt-contrib-uglify' ); grunt.loadNpmTasks( 'grunt-newer' ); grunt.registerTask...( 'minify' , [ 'newer:uglify:all' ]); minify 任务只有在 src/**/*.js 中的一个或多个文件比 dest/app.min.js 更新时, uglify...ngAnnotate mzgol/grunt-ng-annotate 用来将 Angular 添加、删除或者重建 Angular 中的依赖注入。...styles/main.css' : [ '.tmp/styles/{,*/}*.css' ] } } } uglify 使用 useminPrepare 生成的配置
领取专属 10元无门槛券
手把手带您无忧上云