2014-01-21 42 views
2

我在這裏搜索了一個相當長的谷歌搜索,並且看不到任何明顯的東西,但我告誡說,這是我第一次使用jshint/uglify和grunt 。grunt:uglify發出警告後的jshint

我(爲簡潔起見)2測試JS文件:

(function() { 
console.log("I'm in your build, testing your stuff (1)"); 
})(); 

(function() { 
console.log("I'm in your build, testing your stuff (2)"); 
})(); 

我咕嚕文件做了一些建設任務,但本質上我跑jshint兩次 - 一次在src上(如果出現問題,請提前停止),並且一次性完成concat/uglify以確保最終文件輸出仍然通過。

jshint上的源代碼(上圖)可以作爲一種享受,但jshint post'build'似乎失敗了,因爲uglify已經刪除了幾個分號。

我咕嚕文件(REF)的相關部分:

jshint: { 
     jshintrc: '.jshintrc', 
     source: { 
      files: { 
       src: ['app/common/scripts/**/*.js', 
         'app/games/**/*.js' 
       ] 
      } 
     }, 
     dist: { 
      files: { 
       src: [ 'dist/' + targetEnvironment + '/common/scripts/**/*.js', 
         'dist/' + targetEnvironment + '/games/**/*.js' 
       ] 
      } 
     } 
    }, 
concat: { 
    scriptsCommon: { 
       src: [ 'app/common/scripts/*.js', 
       ], 
       dest: 'dist/' + targetEnvironment + '/common/scripts/common.concat.js', 
       nonull: true 
      } 
     }, 
uglify: { 
      all: { 
       files: [ 
        { src: 'dist/' + targetEnvironment + '/common/scripts/common.concat.js', 
         dest: 'dist/' + targetEnvironment + '/common/scripts/common.min.js' }, 
       ] 
      } 
     } 

和運行我的呼嚕聲的任務基本上是(再次,切下來的例子):

grunt.registerTask('default', [ 
     'jshint:source', 
     'concat:scriptsCommon', 
     'uglify:all', 
     'jshint:dist' 

jshint:source作品一種享受,jshint:dist不會抱怨丟失分號。

(供參考)的uglify'd腳本是:

!function(){"use strict";angular.module("TestingStuffs",[]).controller("TestController",["$http","$log",function(){}]).controller("Test2Controller",["$http","$log",function(){}])}(),function(){console.log("I'm in your build, testing your stuff (1)")}(),function(){console.log("I'm in your build, testing your stuff (2)")}(); 

,你可以看到,這兩個聲明的console.log有他們分號的去除 - 安全看起來。我可以理解爲什麼uglify已經做到了這一點,我也可以理解爲什麼jshint會抱怨它。

理想情況下,我想修改uglify,使其留下分號(雖然我可能會從分號警察那裏獲得憤怒),儘管理想情況下我很想看到兩個選項 - 讓jshint忽略分號問題,但也得到uglify離開它。

任何幫助感激地讚賞!

乾杯, 特里

回答

1

我不認爲JSHint應在變醜/ CONCAT輸出只是輸入運行。 JSHint是一個用於消除人爲錯誤的語法檢查程序,uglify顯然會嘗試將文件大小降至最低。

JSHint.com

JSHint是一個社區驅動的工具來檢測在JavaScript代碼和執行團隊的編碼規範的錯誤和潛在的問題......這個項目的目標是幫助JavaScript開發人員編寫無需擔心拼寫錯誤和語言的複雜程序陷阱

顯然,這意味着你必須把一個很大的信心在醜化任務,什麼修改,它使你的代碼。然而,對錯誤的代碼運行你的單元測試(假設你有它們)會增加信心並找出任何問題。