【问题标题】:How to stop node_modules folder to go into target directory of Play Framework 2.4如何停止 node_modules 文件夹进入 Play Framework 2.4 的目标目录
【发布时间】:2018-01-15 23:19:02
【问题描述】:

我正在使用 play framework 2.4 我的应用程序在安装 UI 组件之前运行良好,例如 (grunt,ruby,npm,cpmpass) 我对它们了解不多,但我的项目需要这些UI 工作有一个文件夹 node_modules 在 play 应用程序的 public 目录下,每当我给 runtest 命令时,这都会导致运行/测试项目的时间太多我见过很多正在开始在位置创建文件夹

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))

但目标文件夹仍然充满了 node_modules 文件夹,该文件夹在 runtest 命令上创建了很多文件夹,请帮助。 编辑

我已经添加了

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

这一行,但现在我开始犯这个错误

[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 构建过程中的模块"

【问题讨论】:

  • 你在哪里添加到跳过 node_modules 文件夹???
  • unmanagedResourceDirectories in Assets &lt;+= gulpDirectory { _ / "node_modules"}
  • 请看我编辑的问题
  • 它不是 graut,campass,它的 gruntcompass

标签: scala npm playframework gruntjs sbt-0.13


【解决方案1】:

作为一名 Scala 开发人员,我认为您对这些工具如何协同工作并不太了解。首先,您需要了解这些工具的工作原理以及我们为什么需要它们。

我想你正在使用 YeomanGruntBowerSASS(Though Compass) 并使用它们通过NPM(节点包管理器)

NPM(节点包管理器):

当我们在我们的机器上安装 node 时会安装它,它用于从 npm 存储库在您的机器上安装/运行不同的软件工具。

约曼:

它是一个 web 脚手架工具,通过使用它,我们可以通过选择任何工具组合(如 angular + Requirejs + SASS + Grunt 等)来搭建我们的 web 应用程序。它通过将所有这些模块配置在一起来节省我们的时间,我们可以通过命令创建更多组件(即网页、控制器等),而无需担心在已创建的组件中进行配置/嵌入。约曼为我们做这件事。

咕噜声:

它是一个 javascript 任务运行器。您可以在 GruntFile.js 中配置任务并通过 grunt-cli 运行它(您也需要安装它)。我们可以通过使用配置了自动任务的观察器来节省大量开发时间,例如编译、连接、缩小/丑化、运行测试用例、运行 jshint/lint、在更改时将 SASS/SCSS 编译为 CSS 等。

鲍尔:

它用于 web 的自动依赖管理,这意味着当您需要在任何服务器上发送/部署时,您不必将所有库与项目一起发送,通过 bower,您只需一个即可安装所有依赖项命令(即 bower install),它从 bower.json 文件中读取并安装所有列出的依赖项。 (内部使用 git)

指南针:

它是 SASS/SCSS 的编译器,用于将 SASS/SCSS 文件转换为纯 css 文件。 为什么要使用 SASS/SCSS? ---> 我们可以通过 SASS/SCSS 使用变量、父/子概念、继承概念,它减少了我们的工作量,并且比更改更容易更改变量/父类用纯 css 对每个元素进行样式设置,因此它节省了我们大量的开发时间并提供了更好的管理机制。 (安装这个需要来自 ruby​​ 的 gem)

node_modules:

当我们需要为javascript使用一些自动任务时,我们需要通过npm安装它们(npm install),它从package.json文件中读取并安装package.json中列出的所有依赖项grunt 或其他工具(gulp、Compass、yeoman 等)所需的文件。我们也可以通过 npm 而不是 bower 来安装开发依赖。

你真的需要 node_modules 吗?

如果您使用 bower 来管理库的依赖项,那么我们可以为您的问题提供解决方法,您可以将公共文件夹分开,即在您的主项目之外并运行 grunt 命令来编译/构建 JS/CSS 文件,然后您可以将这些编译的文件复制到您的公共文件夹中(您可以通过 grunt 配置整个过程,您不必单独管理它)然后您的项目目录中不会有 node_modules 文件夹并且它不会被编译希望它可以节省您的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2015-08-16
    • 2015-11-07
    • 2015-11-16
    • 2019-07-27
    相关资源
    最近更新 更多