Graunt学習ノートの開発環境の構築と基本的なプロジェクトの作成


**   **
Grunt   Nodejs   ,Grunt  Grunt       Nodejs     (npm)      。
        nodejs,      nodejs,   Grunt    nodejs      ,  nodejs,   npm update -g npm       (           sudo   )。
  Grunt    ,    Grunt,    grunt-cli,         ,Grunt CLI      :   Gruntfile       Grunt。        ,                    Grunt。

**nodejs  :**
1、      nodejs     。    :[https://nodejs.org/en/download/](https://nodejs.org/en/download/)。
2、                    ,windows:msi exe  Mac Os:pkg
3、          ,MacOs:
curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
           :[https://nodejs.org/en/download/package-manager/#windows](https://nodejs.org/en/download/package-manager/#windows)

**Grunt CLI  **
         sudo(  OSX、*nix、BSD    )         (  Windows  )       :
npm install -g grunt-cli

**Grunt CLI     **
    grunt  ,    node   require()          Grunt。        ,               grunt 。
            Grunt,CLI     ,   Gruntfile(      ,            )      ,           。      Grunt CLI            。  :[Grunt CLI   ](https://github.com/gruntjs/grunt-cli/blob/master/bin/grunt),         Grunt 。

**    Grunt  **
Grunt        :package.json   Gruntfile。
package.json:     npm          ,         npm  。               grunt Grunt  ,   devDependencies    。
Gruntfile:         Gruntfile.js   Gruntfile.coffee,         (task)   Grunt   。         Gruntfile          ,     Gruntfile.js   Gruntfile.coffee。

  :
1、      : :/Volum/D/gruntProject
2、        ,    package.json   (  :    json  ,  json       ,   json     :[json  ](http://www.json.org/)),package.json            , Gruntfile      ,                。
       :    package.json   ,      (  json          )
        {
          "name": "my-project-name",    //     
          "version": "0.1.0",    //      
          "devDependencies": {    //   grunt  
              "grunt": "~0.4.5",   //  grunt-cli   grunt       Grunt
              "grunt-contrib-jshint": "~0.10.0", //      grunt  ,      
          }
        }
       :      package.json  
        ①、    [grunt-init](http://www.gruntjs.net/project-scaffolding)               package.json  。
        ②、[npm init](https://docs.npmjs.com/cli/init)          package.json  。
           package.json    :
        {
              "name": "my-project-name",
              "version": "0.1.0",
              "devDependencies": {
                    "grunt": "~0.4.5",    //          grunt  
                    "grunt-contrib-uglify": "~0.5.0"
              }
        }
4、 package.json       npm install   package.json                       。      Gruntfile         。

Grunt        
   : package.json   devDependencies            : 
    ...
    "devDependencies": {
        "grunt": "~0.4.5",   //grunt    
        "grunt-contrib-jshint": "~0.10.0",  //grunt       
        "grunt-contrib-nodeunit": "~0.4.1",
        "grunt-contrib-uglify": "~0.5.0"
    }
    ...
   :       ,      package.json      Grunt grunt           *npm install  --save-dev*  ,       package.json devDependencies         
 :
  grunt,  grunt devDependencies  :
npm install grunt --save-dev
  JSHint       :
npm install grunt-contrib-jshint --save-dev

**Gruntfile**
Gruntfile.js   Gruntfile.coffee        JavaScript   CoffeeScript   ,            , package.json         ,               。
Gruntfile        :
"wrapper"   
       
  grunt     
     

①、"wrapper"   
        Gruntfile ( grunt  )        ,     Grunt          :
    module.exports = function(grunt) {
      // Do grunt-related things in here
    };
②、       
        Grunt         ,             ,    grunt.initConfig()  。   grunt.initConfig(Object o)      Grunt              Grunt。
                      ,                 ,      。  ,       JavaScript,       JSON;              JS  。     ,               。
    grunt.file.readJSON('package.json')     package.json    JSON      grunt config 。
     :
    grunt.initConfig({    //initConfig()  {...}        
      pkg: grunt.file.readJSON('package.json'),   //  package.json   grunt ,       pkg   package.json    
      uglify: {      //                 
        options: {
          banner: '/*!   */
' }, build: { //uglify src: 'src/.js', dest: 'build/.min.js' } } }); ③、 Grunt package.json dependency( ) , npm install , Gruntfile : // "uglify" 。 grunt.loadNpmTasks('grunt-contrib-uglify'); ④、 default , Grunt 。 // , uglify 。 grunt uglify grunt default grunt.registerTask('default', ['uglify']); grunt , Gruntfile 。 module.exports = function(grunt) { // A very basic default task. grunt.registerTask('default', 'Log some stuff.', function() { grunt.log.write('Logging some stuff...').ok(); }); };