2017-08-08 19 views
2

我使用的播放框架2.4我的應用程序工作正常安裝UI組件如前(gruntrubynpmcpmpass)我不很瞭解他們,但我需要這些爲我的項目UI工作有一個文件夾node_modules下的public目錄的播放應用程序這是造成太多的時間來運行/測試項目,每當我給runtest命令我已經看到很多文件夾正在啓動在位置創建如何停止node_modules文件夾進入遊戲框架的目標目錄2.4

playapp/target/web/classes/main/META-INF/resources/webjars/playapp/0.1.0-7708ad295b8fe2c87a28bdb6afa7c10401c12a61-SNAPSHOT/node_modules 

我該如何避免這種情況? 這裏有一些解決方案,我已經試過,但沒有奏效

項目/咕嚕

import play.PlayRunHook 
import sbt._ 

import java.net.InetSocketAddress 

object Grunt { 
    def apply(base: File): PlayRunHook = { 

    object GruntProcess extends PlayRunHook { 

     var process: Option[Process] = None 

     override def beforeStarted(): Unit = { 
     Process("grunt dist", base).run 
     } 

     override def afterStarted(addr: InetSocketAddress): Unit = { 
     process = Some(Process("grunt watch", base).run) 
     } 

     override def afterStopped(): Unit = { 
     process.map(p => p.destroy()) 
     process = None 
     } 
    } 

    GruntProcess 
    } 
} 

這裏是build.sbt的一部分文件 編輯

import Grunt._ 
import play.PlayImport.PlayKeys.playRunHooks 

import play.sbt.PlayImport.PlayKeys.playRunHooks 

lazy val gruntDirectory = baseDirectory { 
    _/"public" 
} 

excludeFilter := HiddenFileFilter -- ".tmp" 

unmanagedResourceDirectories in Assets <+= gruntDirectory { _/"dist"} 

unmanagedResourceDirectories in Assets <+= gruntDirectory { _/".tmp"} 

unmanagedResourceDirectories in Assets <+= gruntDirectory { _/"bower_components"} 

unmanagedResourceDirectories in Assets <+= gruntDirectory { _/"node_modules"} 

//this is for development environment 
unmanagedResourceDirectories in Assets <+= gruntDirectory { _/"src"/"app"} 

playRunHooks <+= baseDirectory.map(base => Grunt(base)) 

但還是目標文件夾得到填補與上runtest命令創建它的很多文件夾裏面的文件夾node_modules,請幫助。 編輯

我已經添加

unmanagedResourceDirectories in Assets <+= gruntDirectory { _/"node_modules"} 

這條線,但現在我gettig這個錯誤

[trace] Stack trace suppressed: run last playapp/web-assets:webExportedDirectory for the full output. 
[error] (playapp/web-assets:webExportedDirectory) Duplicate mappings: 
[error]  playapp/target/web/classes/main/META-INF/resources/webjars/arteciate/0.1.0-7708ad295b8fe2c87a28bdb6afa7c10401c12a61-SNAPSHOT/requirejs/require.js 
[error] from 
[error]  playapp/public/bower_components/requirejs/require.js 
[error]   /home/sara/git/arteciate/public/node_modules/requirejs/require.js 
[error]  playapp/target/web/classes/main/META-INF/resources/webjars/arteciate/0.1.0-7708ad295b8fe2c87a28bdb6afa7c10401c12a61-SNAPSHOT/requirejs/README.md 
[error] from 
[error]  playapp/public/bower_components/requirejs/README.md 
[error]   playapp/public/node_modules/requirejs/README.md 
[error] Total time: 5 s, completed Aug 8, 2017 5:09:17 PM 

公用文件夾具有下列內容

app    bower.json dist Gruntfile.js node_modules README.md   test 
bower_components config  fonts Gruntfile.js~ package.json _SpecRunner.html 

和,我想再問一個問題我不知道這些UI組件如何UI工具實際上如何工作,如npm, yeoman, bower, sass, grunt,什麼是node_modules和它們是什麼和「我真的需要我的構建過程中使用sbt模塊」

+0

你在哪裏添加跳過node_modules文件夾??? –

+0

'''非託管資源目錄中的資產<+ = gulpDirectory {_ /「node_modules」} ''' –

+0

請參閱我編輯的問題 – swaheed

回答

2

作爲一名Scala開發人員,我認爲你對這些工具如何協同工作沒有太多的認識。首先,您需要了解這些工具的工作原理以及爲什麼需要它們。

我想你正在使用約曼咕嚕鮑爾SASS(雖然北斗)和使用它們通過NPM(節點包管理器)

NPM(節點Pakcage經理):

,當我們安裝在我們的機器節點它被安裝,它是用來安裝/你的機器上從NPM倉庫上運行不同的軟件工具。

約曼:

其網絡腳手架工具,通過這一點,我們可以通過選擇工具的組合(如角+ Requirejs + SASS +咕嚕聲等)腳手架我們的Web應用程序。它通過配置所有這些模塊組合在一起可以節省我們的時間,我們可以不必配置/已創建的組件中嵌入的後顧之憂,通過創建命令的詳細成分(即網頁,控制器等)。 yeoman爲我們做這個。

咕嚕:

它在JavaScript任務運行。你可以在GruntFile.js中配置任務並通過grunt-cli來運行它(你也需要安裝它)。我們可以通過使用配置了像compile,concate,minify/uglify,運行測試用例,運行jshint/lint等自動任務的watchcher來節省大量的開發時間,只要更改了SASS/SCSS就可以編譯成CSS。

Bower:

它用於web的自動依賴關係管理,這意味着,無論何時需要通過bower發送/部署到任何服務器,您都不必隨項目一起發送所有庫,您可以安裝所有依賴關係只是一個命令(即涼亭安裝)和讀取形成bower.json文件,並安裝所有列出的依賴關係。 (內部它使用GIT)

指南針:

及其在SASS/SCSS一個編譯器,它是用來SASS/SCSS文件轉換成普通的css文件。 爲什麼使用SASS/SCSS? --->我們可以通過SASS/SCSS使用變量,父/子概念,繼承的概念,它降低了我們的工作,它很容易改變的變量/父類,而不是在純CSS的每一個元素改變造型,所以它爲我們節省了大量的開發時間,並提供更好的管理機制。 (紅寶石寶石需要安裝此)

node_modules:

當我們需要使用JavaScript的一些自動任務,我們需要通過NPM安裝它們(NPM安裝),它讀取的形式的package.json文件,並安裝在由咕嚕或其他工具(一飲而盡,指南針,自耕農等)所需要的package.json文件中列出的所有依賴。我們也可以通過npm而不是bower來安裝開發依賴。

你真的需要node_modules?

如果您使用的依賴管理圖書館涼亭,那麼我們可以爲您的問題解決方法,你可以保持公用文件夾分離即在你的主項目之外,並運行grunt命令來編譯/編譯JS/CSS文件,然後你可以將這些已編譯的文件複製到公用文件夾中(你可以通過grunt配置整個過程,而不必單獨管理它)和那麼你的項目目錄中就不會有node_modules文件夾,並且它不會被編譯,並且希望它能節省您的時間。

+0

它工作謝謝:) – swaheed