2017-02-21 51 views
0

我努力學習呻吟,我想了解咕嚕的背景下實體和關係:試圖瞭解一些基本的咕嚕術語,實體和關係

  • 插件
  • 任務
  • node_modules

我回顧了gruntfile.js現有項目。下面是一些示例代碼:

grunt.loadNpmTasks('grunt-contrib-sass');  

父項目結構具有與咕嚕-的contrib - 薩斯的文件夾的目錄node_modules。將整個grunt-contrib-sass子目錄稱爲「插件」還是將「插件」稱爲此目錄的某個子集?

grunt-contrib-sass目錄有一個嵌套的node_modules子目錄。我假設嵌套的node_modules子目錄包含grunt-contrib-sass的註冊依賴項。它是否正確?

grunt-contrib-sass目錄有一個帶有sass.js文件的任務子目錄。該目錄有一個帶有check.js文件的lib子目錄。是否lib子目錄用於保存主要grunt js模塊/任務的支持js文件?

由於sass.js位於任務子目錄中,我假設這被認爲是一個「sass任務」。它是否正確?這個任務是否也被稱爲模塊?或者模塊引用其父節點node_modules目錄?

我假設示例代碼將從node_modules \ grunt-contrib-sass的任務子目錄導入所有js模塊/任務。它是否正確?

回答

0

Grunt是Node.js Javascript運行時引擎的模塊。因此,您看到的是與Grunt和Node.js相關的術語的混合體。

node_modules文件夾是Node.js模塊存儲它們的依賴關係的地方。如果在package.json文件中聲明瞭相關性,則節點數據包管理器npm將在該文件夾中安裝它們。

Grunt作爲一個約定有一個tasks文件夾,其中提供了Grunt任務的可執行代碼。項目基礎文件夾中的Gruntfile.js配置grunt.registerTask()定義的任務運行。但是你不需要在你的項目中做任務,它也可以利用像你所看到的grunt-contrib-sass這樣的插件。

如果Grunt遇到grunt.loadNpmTasks('task-module')命令,它將查找node_module/task-module/tasks文件夾。它將在那裏加載.js文件,如果遇到命令grunt.registerTask('myTask', function ...),則註冊該任務功能。它將使用項目Gruntfile.js中定義的全局配置對象中的myTask條目作爲其參數來執行。

儘管一個插件完全可以定義多個任務,但明確的做法是每個模塊只定義一個。相反,您的項目將利用(或定義自己)多項任務。

如果您運行grunt myTask --verbose命令,則可以在命令行上正確執行加載過程。

要恢復,

  • 咕嚕插件是Node.js的模塊由一個咕嚕負荷命令提及並且通常具有tasks子目錄
  • 任務是註冊的功能(如在Grunt API中描述)放在項目本身的Gruntfile中或者Grunt將掃描的每個子文件夾中的每個文件中。
  • node_modules是Node.js的模塊的所有依賴關係都存儲在文件夾中。
+0

夢幻般的答案!非常感謝! – details1