吉特仓储管系统(开源)--使用Grunt压缩JS文件

 

  在吉特仓储管理系统开发的过程中大量使用到了JS,随着JS文件的增多我们需要对JS进行有效的管理,同时也要对JS文件进行一些压缩。文本用于记录一下使用grunt压缩JS的操作步骤,便于遗忘之后记录查找,文章内容非常浅显。

 

  一. 什么是grunt

    JavaScript世界的构建工具,官网上是这么描述的,姑且这么描述,个人感觉还比较好用。官网地址: http://www.gruntjs.net/  更多的参考资料也可以查询官网

 

  二. 安装grunt

    Grunt和Grunt插件是通过npm安装并管理的,npm是Node.js的一个包管理器,不理解的可以查看NodeJS 的相关资料。本文操作都是在Windows系统环境中操作,其他的操作系统命令行可能稍微有点不一样。(如果没有nodejs环境的请先安装nodejs环境)

npm install -g grunt-cli

    在CMD命令窗口中输入如上命令,grunt命令就会加入到你的系统路径中,后面你就可以可以使用grunt命令构建压缩JavaScript了。

    上面的命令是按照grunt-cli,但是这并不等于按照了grunt,grunt-cli用于协调调用任务的。

 

  三. 项目准备

    在编辑JS的时候我使用的sublime编辑器,这个编辑非常的不错,个人比较喜欢这个编辑器

    

    如上图是在吉特仓储管理系统开发的过程中使用到的部分JS截图,在这里我们将处理如何压缩这些JS文件。在使用grunt压缩JS的时候我们需要两个文件package.json 和 Gruntfile。

    package.json 用于npm存储项目的元数据,可以设置项目的描述信息以及项目依赖的grunt以及grunt插件。

    Gruntfile 可以使用Gruntfile.js或者Gruntfile.coffee,个人喜欢使用Gruntfile.js文件,这个文件用于配置和定义任务并加重Grunt插件的。

 

    在CMD命令行中进入到JS项目对应的根目录。

    在此目录下输入命令行

G:\Mui\gitwms>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (gitwms)
version: (1.0.0)
description:
entry point: (index.js)
test command: ""
git repository:
keywords: gitwms
author: hechen
license: (ISC)
About to write to G:\Mui\gitwms\package.json:

{
  "name": "gitwms",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "\"\""
  },
  "keywords": [
    "gitwms"
  ],
  "author": "hechen",
  "license": "ISC"
}

Is this ok? (yes) yes

初始化代码

    在命令行输入npm init 后会自动生成package.json文件,生成的文件内容如下:

{
  "name": "gitwms",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "\"\""
  },
  "keywords": [
    "gitwms"
  ],
  "author": "hechen",
  "license": "ISC"
}

package.json文件内容

     在项目中安装grunt,使用如下的命令,如果安装成功命令行中会显示相关成功的信息。

npm install grunt --save-dev

    grunt 本身不会压缩JS文件,我们需要使用grunt的插件grunt-contrib-uglify 来处理文件的压缩

npm install grunt-contrib-uglify --save-dev

     安装好grunt 以及压缩的插件之后,我们会发现package.json文件内容会发生一些变化

{
  "name": "gitwms",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "\"\""
  },
  "keywords": [
    "gitwms"
  ],
  "author": "hechen",
  "license": "ISC",
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-contrib-uglify": "^2.0.0"
  }
}

更新之后package.json

    devDependencies 之后的内容发生了变化,指向了grunt的依赖。

    在项目的根目录新建文件Gruntfile.js, 然后将如下代码复制到该JS文件中。

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'customer/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  // 加载包含 "uglify" 任务的插件。
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // 默认被执行的任务列表。
  grunt.registerTask('default', ['uglify']);

};

配置插件文件

    先不管该代码的意思,在项目根目录下执行grunt命令 (CMD命令窗口中执行)

G:\Mui\gitwms>grunt
Running "uglify:build" (uglify) task
>> Destination build/gitwms.min.js not written because src files were empty.
>> No files created.

    命令行输出错误信息,没有压缩创建文件成功。这个主要是Gruntfile.js中的文件配置错误引起的

    src: 'customer/<%= pkg.name %>.js',   这里找不到src 对应的目录下的文件,修改代码如下:

build: {
        src: 'customer/*.js',
        dest: 'build/<%= pkg.name %>.min.js'
}

    然后再次运行grunt 命令,发现在根目录下创建了一个build文件夹,并且生成了一个gitwms.min.js 的压缩JS文件。在这里grunt压缩JS文件的操作任务成功了。

 

  四. 文件被合并了

    上面的操作执行成功,但是多个文件被压缩成了一个文件,我们需要每个文件压缩成一个文件。修改Gruntfile.js文件内容如下:

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      /*build: {
        src: 'customer/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }*/
      my_target:{
        files:[
          {expand:true,cwd:"customer/",src:"*.js",dest:"build/",ext:".<%= pkg.version %>.min.js"},
          {expand:true,cwd:"customer/User/",src:"*.js",dest:"build/User/",ext:".<%= pkg.version %>.min.js"},
        ]
      }
    }
  });

  // 加载包含 "uglify" 任务的插件。
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // 默认被执行的任务列表。
  grunt.registerTask('default', ['uglify']);

};

不同目录文件压缩配置

    编辑上述代码之后再次使用grunt命令进行压缩文件,发现生成了两个目录。但是同一个目录的文件还是被压缩成了一个文件,而且查看文件名称存在较大的问题。

上面被压缩的代码并不是我们想要的,文件还是被合并了。导致这个问题的原因是JS源文件的命名 . 导致的。 这里修改代码如下:

{expand:true,cwd:"customer/",src:"*.js",dest:"build/",ext:".<%= pkg.version %>.min.js",extDot:"last"},
{expand:true,cwd:"customer/User/",src:"*.js",dest:"build/User/",ext:".<%= pkg.version %>.min.js",extDot:"last"},

    重新运行grunt 命令现在可以满足要求了。这里主要使用到了extDot 属性。extDot:first:表示以文件名后的第一个点后面开始作为后缀名;last:表示以文件名后的最后一个点后面开始作为后缀名。

     files 中属性说明:

    expand: 值 true 或 false ,如果设置为true 标识后面文件名的占位符(*)都要具象到具体的文件

    cwd: 需要输出的处理文件目录

    src: 需要匹配的文件,和cwd相对,如果是数组形式,数组每一个item都是一个文件名(可以使用通配符)

    dest:压缩生成的文件路径前缀

    ext: 处理之后的文件后缀名

    extDpt: first 表示源文件名的第一个. 后面的开始作为后缀名 | last 表示源文件名的最后一个. 后面的开始作为后缀名

    flatten: 删除所有生成的dest的路径部分,值为boolean类型(true、false)用来指定是否保持文件目录结构,true是保持文件目录

  

  五. 配置简单说明

    pkg: grunt.file.readJSON('package.json')

    用于读取package.json中的内容,并且可以赋值到pkg中。后面就可以使用<% %>模板字符串引用任意的配置属性。

 

 

作者:情缘

出处:http://www.cnblogs.com/qingyuan/

关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

联系方式: 个人QQ  821865130 ; 仓储技术QQ群 88718955,142050808 ;

吉特仓储管理系统 开源地址: https://github.com/hechenqingyuan/gitwms

 

时间: 2024-09-20 10:29:55

吉特仓储管系统(开源)--使用Grunt压缩JS文件的相关文章

吉特仓储管系统(开源WMS)--分享两月如何做到10W+的项目

  在此文开篇之处先特别申明,此文在有些人的眼中会有广告的嫌疑,但是本人不想将其作为一个广告宣传的文章,在此提到软件内容部分请大家予以谅解和包含,作为时间不算短的程序员给大家分享一些自己开发吉特仓储管理软件相关的经验和坑,当然还有一些自己从中获利的方式,不能说给大家指条明路吧,算是作为程序开发人的相互经验交流. 此文本来想写在国庆假期之前的,但是那段时间公司事情刚好很忙,所以没有来得及写此文.当时要搞Solr搜索引擎,因为自己不熟悉java程序所以在弄得过程中有些费力,而且自己本身也不是一心苦心

吉特仓储管系统(开源WMS)--Web在线报表以及打印模板分享

   很早之前就想写这篇文章与大家分享一下自己在吉特仓储管理系统中开发打印和报表的功能,在GitHub(https://github.com/hechenqingyuan/gitwms)上公开下载的代码中很多人觉得在线设计报表这个功能比较不错,但是很多人也会有疑问.这边文章就简单讲解一下如何开发这个功能的,供大家学习参考,如果有任何疑问可以直接联系我,当然也有很多不足之处希望大家多多谅解和指点.   一. 各种需求报表以及打印 最开始之初在Web上做打印是每个打印也都会做一个页面,利用的是浏览器

[开源]吉特仓储管系统--2017年底应该写一些东西(一)

  又到2017年年底了,今年文章产出数量特别少,年底了觉得还是要写一些什么,毕竟为此目标奋斗了一年,为分享也好为纪念也好,终究是一年过去了,有辛酸,有收获也还要期待.2016年底,也就是2017年元旦上海出发前往山西,巍巍太行山,绵延八百里,大雪纷飞从山西太行山段四天时间徒步穿越到河南,虽说路线不是很难,一路上我就在想2017年我要干什么.   一. 2016年回顾 2016年一波三折的经历,小儿出生了,突然觉得自己要干些什么,其实不是觉得要干些什么,应该说是干什么能够赚钱,能够快速的赚钱.出

吉特仓库管理系统-ORM框架的使用

  最近在园子里面连续看到几篇关于ORM的文章,其中有两个印象比较深刻<<SqliteSugar>>,另外一篇文章是<<我的开发框架之ORM框架>>, 第一个做的ORM是相当的不错的,第二个也是相当的不错, 至少在表面上看起来是这么一回事.至于具体的用法和实践我没有深入的去测试过,所以也不便发表更多的意见,不过这种造轮子的精神我个人还是比较佩服的, 虽说有时候造轮子是闲的蛋疼的事情,但是如果你没有早过轮子你也体会不到造轮子给你带来的感官感受.目前比较受欢迎的

吉特仓库管理系统-.NET4.0环境安装不上问题解决

  在给客户实施软件的过程中要,要安装.NET 4.0 环境,而且是在XP的系统上. 目前的客户中仍然有大量使用XP的机器,而且极为不稳定,在安装吉特仓库管理系统客户端的时候出现了如下问题: 产品: Microsoft .NET Framework 4 Client Profile -- 错误 1402.无法打开键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ZONE_E

吉特仓库管理系统-.SQL Server 2012 升级企业版

  随着业务数据的不断增大,单表的数量已经上亿,查询的数据越来越慢,所以考虑到将数据库表分区,同时也将数据库升级到SQL Server 2012. 当时没有考虑更多,在服务器上安装了 SQL Server 2012 standard edition 版本.在测试数据的时候发现不支持分区,必须要企业版, 这里记录一下如何将 Standard edition 升级到企业版.   1. 找到原先的安装文件,运行Setup.exe  运行如上界面,点击维护,点击右侧版本升级.   2.  紧接着下一步

EduSoHo开源网络课堂 系统“开源”机构“节流”

在线教育这两年十分火热, 2011年开始,各种类型和名称的在线教育网站就开始冒头,甚至连百度.腾讯.阿里等互联网巨头也声势浩大地加入,但是在这股浪潮里,却很少能听到传统教育机构,尤其是中小型教育机构的声音. 教育机构:开拓在线教育市场 遭遇技术难题 主要原因是"技术"这个门槛的存在.对于教育机构而言,要进入在线教育领域一般有三种选择:自己开发程序.购买现成程序或入驻第三方平台.这三种方案都有各自的优势,但是缺憾或制约也同样明显. 第一种方案的优点在于量身定制.不同领域或行业的教育机构在

Linux 系统中使用 logwatch 监控日志文件

Linux 系统中使用 logwatch 监控日志文件 Linux 操作系统和许多应用程序会创建特殊的文件来记录它们的运行事件,这些文件通常被称作"日志".当要了解操作系统或第三方应用程序的行为或进行故障排查时,这些系统日志或特定的应用程序日志文件是必不可少的的工具.但是,日志文件并没有您们所谓的"清晰"或"容易"这种程度的可读性.手工分析原始的日志文件简直是浪费时间,并且单调乏味.出于这个原因,对于系统管理员来说,发现任何一款能把原始的日志文件

win7系统中如何将常用的文件夹添加到收藏夹中?

  每个人的电脑中都会有一些常使用到的文件资料,咱们习惯将这些资料全部存放在一起,行程一个单独的文件夹,而这些文件夹就是咱们日常操作中经常需要使用到的文件夹.但是一般来说,咱们都会将这些文件夹存放到win7 64位旗舰版电脑的磁盘之中,每次打开都需要一级一级的点击,十分的麻烦,那么有没有更加的方式可以实现操作呢?其实,咱们只需要将这些常使用到的文件夹添加到收藏夹中就可以了,下面,小编就来介绍一下,win7旗舰版系统中如何将常用的文件夹添加到收藏夹中? 推荐系统:win7纯净版64位下载 1.首先