基于bower、grunt搭建angularjs项目

参考:http://blog.csdn.net/ch717828/article/details/50339087
http://www.cnblogs.com/ricky52529/p/4079514.html

说明一下,本机开发环境已准备好,包括nodejs、bower以及全局grunt都已经安装好了。

首先新建文件夹,并进入该文件夹目录

1、生成 package.json 文件
这个 package.json 文件其实是 Node.js 来描述一个项目的文件,JSON 格式。
使用 命令来生成 package.json

npm init

它会问我们一些问题,我们可以按需回答,也可以全部使用默认值,以后改起来也很容易。
生成的package.json如下

{
  "name": "myApp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

2、安装 Grunt

npm install grunt --save-dev 

将使用npm下载grunt插件,它们将保存到项目根目录下的node_modules目录下。

后面的–save-dev参数是说,把这个插件信息,同时添加到package.json的devDependencies中

"devDependencies": {  
    "grunt": "^1.0.1"  
  } 

由于grunt仅在开发阶段使用,所以使用–save-dev。如果是运行时使用的,则用–save
3、创建Grunt配置文件
创建一个Grunt的配置文件 Gruntfile.js,内容如下

module.exports = function(grunt) {  
  grunt.initConfig({  
  });  

};

4、为bower生成配置文件bower.json

bower  init

生成bower.json

{
  "name": "myApp",
  "description": "",
  "main": "index.js",
  "license": "ISC",
  "homepage": "",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ]
}

5、使用bower安装AngularJS

bower install angularjs --save

安装成功后,在bower.json增加了angularjs

"dependencies": {
    "angular": "angularjs#^1.6.6"
  }

6、安装grunt插件
concat插件:concat插件用来将多个文件合并成一个文件。安装该插件的命令如下:

npm install grunt-contrib-concat --save-dev  

安装成功后,可以看到package.json里面多了grunt-contrib-concat
接下来在 Gruntfile.js对该插件进行配置、

module.exports = function(grunt) {  
  grunt.initConfig({  
     //读取package.json文件  
    pkg: grunt.file.readJSON('package.json'),  
    //concat用来合并js文件  
    concat: {  
      options: {  
        // 定义一个用于插入合并输出文件之间的字符  
        separator: ';'  
      },  
      dist: {  
        // 将要被合并的文件  
        src: ['app/**/*.js'],  
        // 合并后的JS文件的存放位置  
        dest: 'dist/<%= pkg.name %>.js'  
      }  
    },  
  });  

  grunt.loadNpmTasks('grunt-contrib-concat');  
  grunt.registerTask('default', ['concat']);  

};

接下来在 app/目录下创建两个js文件, a.js 和 b.js 。
在命令行执行 grunt 之后,会发生在 dist/文件夹下多个一个myApp.js文件,该文件合并了 a.js和b.js 。

7、常用grunt插件
uglify 插件用来对文件进行压缩;
jshint插件用来对js的代码规范进行检查;
watch用来监听文件,当文件发生变化时会执行tasks中指定的任务;
wiredep插件用来自动将bower_components中的包加入到index.html中;
https://blog.csdn.net/ligang2585116/article/details/53790043

8、完整的gruntfile.js文件

module.exports = function(grunt) {  
    grunt.initConfig({  
        pkg: grunt.file.readJSON('package.json'), 

        //concat用来合并js文件  
        concat: {  
            options: {  
                // 定义一个用于插入合并输出文件之间的字符  
                separator: ';'  
            },  
            dist: {  
                // 将要被合并的文件  
                src: ['app/**/*.js'],  
                // 合并后的JS文件的存放位置  
                dest: 'dist/<%= pkg.name %>.js'  
            }  
        },  
        //uglify用来压缩js文件  
        uglify: {  
            options: {  
                // 此处定义的banner注释将插入到输出文件的顶部  
                banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'  
            },  
            dist: {  
                files: {  
                    //uglify会自动压缩concat任务中生成的文件  
                    'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']  
                }  
            }  
        },  
        //jshint用来检查js代码规范  
        jshint: {   
            files: ['Gruntfile.js', 'app/**/*.js'], //要进行js检查的文件  
            options: {  
                //这里是覆盖JSHint默认配置的选项  
                globals: {  
                    jQuery: true,  
                    console: true,  
                    module: true,  
                    document: true  
                }  
            }  
        },  
        //watch用来监听文件,当文件发生变化时会执行tasks中指定的任务  
        watch: {  
            //监听的文件  
            files: ['<%= jshint.files %>','app/index.html'],  
            tasks: ['jshint']  
        },  

    });  

    grunt.loadNpmTasks('grunt-contrib-concat');  
    grunt.loadNpmTasks('grunt-contrib-uglify');  
    grunt.loadNpmTasks('grunt-contrib-jshint');  
    grunt.loadNpmTasks('grunt-contrib-watch');  
    grunt.loadNpmTasks('grunt-wiredep');  

    grunt.registerTask('default',['concat','uglify','jshint']); 
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值