【问题标题】:Import npm node_modules' css into Play Framework 2.4 app将 npm node_modules 的 css 导入 Play Framework 2.4 应用程序
【发布时间】:2016-07-28 07:15:16
【问题描述】:

我正在尝试几种将 Browserify 与我的 play 框架应用程序一起使用的方法,其中之一是使用 npm 作为包管理器。安装了几个模块,典型的 node_modules 文件夹出现在项目的根目录下。

使用 Browserify 和 Gulp,我能够从这些模块中“要求”Javascript 并使用它(例如 Bootstrap)。

但是,加载 CSS(例如,对于 Bootstrap)我尝试了不同的方法,但都不起作用。

首先,我尝试让它在一个普通的 HTML/css 项目中工作,并且在安装了 npm 模块之后,能够通过简单的一行来导入 css:

    <link type="text/css" rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">

在 play 应用程序的上下文中,我会在该 CSS 上不断收到 404。以下是我尝试过的一小部分内容:

  • 简单地包含 CSS 外部样式表(使用 ../../ 退出应用程序/视图)
  • @import 在我的本地 CSS 之一中(也使用 ../../)
  • 将 node_modules 文件夹复制到目标文件夹中,位于 WebJars 旁边的某个位置。我尝试这样做的原因是Play 2.3 Migration 的以下摘录。这一段也让我尝试 Webjars.locate 我复制到目标的 npm 包。

通过在项目的根目录中声明一个 package.json 文件,npm 可以与 WebJars 一样使用。 npm 包中的资源被提取到与 WebJars 相同的 lib 文件夹中,因此从代码的角度来看,无需担心资源是来自 WebJar 还是来自 npm 包。

  • 在线阅读,似乎很多人实际上将他们的 npm_module css 复制到资产中。这不会消除使用 NPM 等包管理器的意义吗?
  • 我还尝试在我的 javascript 中使用 require(bootstrap/path-to-css)。
  • 查看了 browserify-css 和 npm-css 模块,但 @import 和 @require(css-file) 也会失败。

如何在 Play 环境中将 node_modules css 带入我的应用程序? 推荐哪种方法可以让它以干净的方式工作?

谢谢

【问题讨论】:

    标签: playframework npm playframework-2.0 browserify


    【解决方案1】:

    添加你的 build.sbt:

    unmanagedResourceDirectories in Assets += baseDirectory.value / "node_modules"
    

    添加你的html

    <link type="text.css" rel="stylesheet" href="@routes.Assets.versioned("bootstrap/dist/css/bootstrap.css")" />
    

    【讨论】:

    • @Khorkhe,在编辑时向帖子本身添加编辑通知被认为是不好的做法,因此我已将其从您提议的更改中删除。Stack Overflow saves a history of revisions to posts,所以那里有您的更改的踪迹,这是记录您的编辑的首选方式。
    • 听起来不错。所以真的只是想要一个超过 6 个字符的更改,并且单独修复错字并没有做:)
    猜你喜欢
    • 2015-11-13
    • 2018-01-15
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多