2017-08-08 40 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