素材巴巴 > 程序开发 >

js css 压缩混淆

程序开发 2023-09-17 21:07:45

Grunt

Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台。Grunt 能够从模板快速创建项目,合并、压缩和校验 CSS & JS 文件,运行单元测试以及启动静态服务器。

Grunt 是什么

Grunt是一个基于JavaScript上的一个很强大的任务管理器(task runner),或许这么一说让很多人觉得费解,简单来说就是你可以在你的终端机上,用JavaScript去执行一些程序来完成一些任务。比如说验证HTML、CSS、JavaScript的语法,压缩CSS、JavaScript、图像,Sass、LESS和Stylus编译成CSS等等,这些东西很适合用Grunt来解决。

Grunt其实就是一个基于NodeJS,可用于自动化构建、测试、生成文档的项目管理工具。他可以更好的帮助一个团队更好的提高效率、减少错误率。

为什么要用Grunt

或许有很多要都像我一样,会问“为什么要用Grunt”?其实用一句话可以概括出来:为了自动化。对于前端项目,为了明确模块分工,我们可以会将JavaScript、CSS代码拆解成很多个模块,他们都有独立的一个个文件,但这样一来用来页面上,增加了文件个数,同时也产生过多的Http请求,可从性能的角度来考虑,不利于页面优化。所以我们需要合并这些JavaScript和CSS文件。这样一来,也期望有一种工具能代替我们手工操作,去完成这些任务。

大家都非常清楚,在项目发布之前,我们都需要做一个步骤,那就是尽可能的将项目中的文件进行尽可能压缩,比如JavaScript、CSS、images甚至是HTML文件,主要目的是减小加载文件的带宽。另外,在很多情况为了安全性考虑,我们需要对我们项目的源代码做一些单元测试和回归测试。然而这些工作都是一些重复性的、乏味的工作。对于一个小型项目来说,或许没有太大的感觉,但对于一个大中型的项目,特别的参与人员过多的项目时,这些工作就显得更重要了。同时让大家更觉得自动化工具是多么的重要。

Grunt能做什么

Grunt就是一个工具箱,就像一个百宝箱,拥有非常丰富的任务插件,可以帮助开发人员实现各式各样的构建目标。 
在Grunt工具箱中,按任务目标我们可以分为:

· 编译文档型:比如编译LESS、Sass、Stylus、Coffeescript等;

· 文件操作型:比如说合并、压缩JavaScript、CSS、图片等;

· 质量保障型:比如JSHint、Jasmin、Mocha等;

· 类库构建型:比如说Backbone.js、ember.js、angular.js等。

这些任务都依赖于给Grunt提供的插件来完成的,但很多工作依旧需要在命令终端手工输入命令来完成这些操作。为此在Grunt中可以使用watch任务来实现一些监听文件改变、自动触发构建等功能。从而减少人工去每次操作任务。

安装NodeJS
Ubuntu下安装NodeJS

推荐使用源码安装,因为apt-get安装不能控制NodeJS的版本 
首先你要安装一些依赖项:

sudo apt-get install g++ libssl-dev apache2-utilssudo apt-get install git-core

接下来在命令终端执行:

git clone https://github.com/nodejs/node.git

./configure

sudo make

sudo make install

Windows下安装NodeJS

推荐使用安装包进行安装。可以直接进入Nodejs官网中下载各系统所需要的安装包进行安装。(使用安装包安装会自带把NPM也装好)

安装NPM

装好NodeJS后,可以在你的终端执行下面的命令安装NPM:

curl http://npmjs.org/install.sh | sh

如果这样安装失败,或许你要在上面的命令之前加上sudo,并按提示输入你的用户密码。

如果需要检验安装NodeJS或NPM是否要成功,可以通过下面的命令来检验:

$ node -v

v0.12.2

$ npm -v2.7.4

这样你的NodeJS和NPM表示安装成功。

安装Grunt-cli

为了方便使用Grunt,你应该在全局范围内安装Grunt的命令行接口(CLI)。要做到这一点,需要在命令行中执行:

$ npm install -g grunt-cli

这条命令将会把grunt命令植入到你的系统路径中,这样就允许你从任意目录中运行Grunt(定位到任意目录运行grunt命令)。

注意:安装grunt-cli并不等于安装了Grunt任务运行器! Grunt CLI的工作很简单:在Gruntfile所在目录调用运行已安装好的相应版本的Grunt。这就意味着可以在同一台机器上同时安装多个版本的Grunt。

安装Grunt

$ npm install grunt

你会在你的命令终端看到下面的安装信息:

npm http 304 https://registry.npmjs.org/underscore.stringnpm 
 http 304 https://registry.npmjs.org/underscore
 grunt@0.4.5 node_modules/grunt
 ├── which@1.0.5
 ├── dateformat@1.0.2-1.2.3
 ├── eventemitter2@0.4.13
 ├── colors@0.6.2
 ├── hooker@0.2.3
 ├── async@0.1.22
 ├── lodash@0.9.2
 ├── coffee-script@1.3.3
 ├── underscore.string@2.2.1
 ├── iconv-lite@0.2.11
 ├── nopt@1.0.10 (abbrev@1.0.4)
 ├── findup-sync@0.1.2 (lodash@1.0.1)
 ├── glob@3.1.21 (inherits@1.0.0, graceful-fs@1.2.3)
 ├── minimatch@0.2.12 (sigmund@1.0.0, lru-cache@2.3.1)
 ├── rimraf@2.0.3 (graceful-fs@1.1.14)└── js-yaml@2.0.5 (esprima@1.0.4, argparse@0.1.15)

在命令行中输入:

$ grunt --version 

grunt-cli v0.1.13

grunt v0.4.5

表示在项目中已成功安装了Grunt。

配置Grunt

要正确运行Grunt项目,必须依赖于package.json和Gruntfile.js文件。

package.json模板文件:

采用了一种最简单的方式——手工创建package.json文件。而这个文件又是Grunt项目中必备文件之一,因此如何创建package.json文件内容就非常的重要,那么这里,向大家显示一个最简单的package.json文件模板:

{    "name":"项目名称",    "version":"项目版本号",    "description":"项目描述",    "author":"项目创建者",    "license":"项目版权",    "devDependencies": {        //项目依赖插件    }}

我们来看看一个测试项目的package.json文件中的真正内容:

{  "name": "testGrunt",

  "version": "0.1.0",

  "description": "this is test project with grunt.",

  "author": "airen",

  "license": "BSD",  "devDependencies": {    "grunt": "~0.4.5",    "grunt-contrib-jshint": "~0.10.0",    "grunt-contrib-nodeunit": "~0.4.1",    "grunt-contrib-uglify": "~0.5.0"  }}

创建Gruntfile.js文件

package.json文件搞定之后,就可以在项目根目下创建Gruntfile.js文件,这个时候你可以使用grunt-init或者直接手工创建一个。我们先来看一个Gruntfile.js的文件模板:


我们来看一个简单的示例:

到此,Grunt项目所需的package.json和Gruntfile.js文件都算是创建完成。有了这两个文件之后,Grunt项目算是万事具备,只欠东风了。你只需要在你的Grunt项目下运行:

$ npm install

执行完后,你将会在你的命令终端看到一大串类似于下面的一些信息:



这个时候表示你的Grunt项目创建完成。你的项目结构也将变化成:

|--testGrunt

|----Gruntfile.js

|----node_modules

|--------grunt

|--------grunt-contrib-uglify

|----package.json


|--testGrunt

|----Gruntfile.js

|----node_modules

|--------grunt

|--------grunt-contrib-uglify

|----package.json

运行Grunt

$ grunt

执行完后,你将会在你的命令终端看到一大串类似于下面的一些信息:

Running "copy:main" (copy) task
Created 210 directories, copied 1627 files

Running "uglify:build" (uglify) task
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: .././public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/*.js completed.
File: ../../public/js/index.js completed.

···Done, without errors.

表示Grunt执行的任务都成功了。


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。