[英]In AngularJS how do I substitute minified javascript files with non-minified files in my development environment?
[英]How to enable minified JavaScript files in Play 2.3.1 templates?
我能夠在我的Play Framework 2.3.1應用程序中加載sbt-uglify 1.0.3插件。 加載非縮小的javascripts非常簡單,但加載縮小版本似乎是不可能的。
在我的模板中,我使用類似於此的<script>
標簽:
<script src="@routes.Assets.at("javascripts/app.js")"></script>
在開發模式下,加載了非縮小的javascript版本,這很好。 在prod模式下(使用activator start
),我看到sbt-uglify生成縮小版本到target/web/uglify/build
文件夾,但因為我沒有在模板中更改上面的<script>
標記行,所以非縮小版本加載了javascripts文件的版本。
有沒有辦法對這些路由進行僅prod映射以加載縮小版本?
反向路由器應該在生產中自動使用縮小資產的問題在Play 2.3.1中得到修復,完全符合您的要求。
根據Play 2.3.1更改日志 :
Assets反向路由器的行為已經改變,如果存在縮小版本的資產,它現在返回一個URL。 要禁用此行為,請在
application.conf
設置assets.checkForMinified=true
。
注意它應該讀取set assets.checkForMinified=false
,但無論如何......
接下來在生產模式下的作品只有這么開始與應用程序activator start
不run
或使用生成的啟動腳本(后stage
)。
默認情況下,應在Play with @routes.Assets.versioned
(而不是routes.Assets.at
)的版本中啟用在生產中使用縮小版資產的行為。
它確實要求conf/routes
中的適當路由聲明是:
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
我最初發現有點不清楚的是pipelineStages
中元素的順序以及在其中包含sbt-rjs的要求。
就在我寫了關於我在Play 2.3遷移指南的 “RequireJS”部分中找到的順序的句子之后:
階段的順序很重要。 您首先要優化文件,生成它們的摘要,然后生成所有結果資產的gzip版本。
我也在“關閉編譯器”部分的Play 2.3遷移指南中找到了:
目前通過RequireJS插件(下面描述)提供UglifyJS 2。 未來的目的是為不使用RequireJS的情況提供獨立的UglifyJS 2插件。
這一切都始於Play 2.3 sbt-web插件Javascript縮小的答案。
所以,下面的pipelineStages
是工作的 - 記住命令和rjs
:
pipelineStages := Seq(rjs, uglify, digest, gzip)
project/plugins.sbt
使用如下:
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.5")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.6")
不要忘記創建一個空的app/assets/javascripts/main.js
文件讓sbt-rjs
完成它的工作。
作為測試,我使用activator new playApp play-scala
創建了一個Play應用程序,並在構建以及app/views/main.scala.html
中應用了上述更改,最終看起來如下(注意@routes.Assets.versioned
):
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">
<script src="@routes.Assets.versioned("javascripts/hello.js")" type="text/javascript"></script>
</head>
<body>
@content
</body>
</html>
執行activator start
並調用curl http://localhost:9000
給出(格式化為我的可讀性):
➜ play-uglify curl http://localhost:9000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Play</title>
<link rel="stylesheet" media="screen" href="/assets/stylesheets/d41d8cd98f00b204e9800998ecf8427e-main.css">
<link rel="shortcut icon" type="image/png" href="/assets/images/84a01dc6c53f0d2a58a2f7ff9e17a294-favicon.png">
<script src="/assets/javascripts/4302136334616ae0605d47a1932ee262-hello.min.js" type="text/javascript"></script>
</head>
<body>
<h1>Your new application is ready.</h1>
</body>
</html>
注意4302136334616ae0605d47a1932ee262-hello.min.js
和消化的非JavaScript資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.