2015-02-09 11 views
74

में एसबीटी-आरजेएस का उपयोग कर वेबजर्स से जेएस को अनुकूलित करना क्या वेब प्लेर्स के माध्यम से मेरे ऐप में शामिल है जो प्ले 2.3 ऐप कॉन्सैट/एसएसटी-आरजेएस का उपयोग कर अनुकूलित है?
एक ठोस उदाहरण देने के लिए: मैं core.js मॉड्यूल बनाने की कोशिश कर रहा हूं जिसमें मेरी सभी तृतीय पक्ष पुस्तकालयों को एक फ़ाइल में संयोजित और छोटा बनाया गया है जिसे बाद में अन्य एएमडी मॉड्यूल के लिए निर्भरता के रूप में निर्दिष्ट किया जा सकता है।
स्रोतों को मैन्युअल रूप से डाउनलोड करने के बजाय वेब पुस्तकाारों के माध्यम से इन पुस्तकालयों को शामिल करना बहुत अच्छा होगा।प्ले 2.3.x ऐप

यहाँ मेरी build.sbt फ़ाइल से एक टुकड़ा, जहां मैं अपने webjar निर्भरता को निर्दिष्ट कर रहा हूँ है:

// Webjars 
libraryDependencies ++= Seq(
    "org.webjars" % "requirejs" % "2.1.15", 
    "org.webjars" % "underscorejs" % "1.7.0", 
    "org.webjars" % "jquery" % "1.11.1", 
    "org.webjars" % "bootstrap" % "3.3.1" exclude("org.webjars", "jquery"), 
    "org.webjars" % "angularjs" % "1.3.4-1" exclude("org.webjars", "jquery") 
) 

यहाँ मेरी requireJS config निर्माण

requirejs.config({ 
    baseUrl: '/assets/javascripts', 
    shim: { 
    'jsRoutes': { 
     deps: [], 
     exports: 'jsRoutes' 
    }, 
    'angular': { 
     deps: ['jquery'], 
     exports: 'angular' 
    }, 
    'underscore': { 
     exports: '_' 
    }, 
    'angularRoute': ['angular'], 
    'angularCookies': ['angular'], 
    'bootstrap': ['jquery'] 
    }, 
    paths: { 
    'requirejs': '../lib/requirejs/require', 
    'jquery': '../lib/jquery/jquery', 
    'underscore': '../lib/underscorejs/underscore', 
    'angular': '../lib/angularjs/angular', 
    'angularRoute': '../lib/angularjs/angular-route', 
    'angularCookies': '../lib/angularjs/angular-cookies', 
    'bootstrap': '../lib/bootstrap/js/bootstrap', 
    'jsRoutes': '/jsroutes', 
    'core': './core' 
    }, 
    modules: [ 
    { 
     name: 'core' 
    } 
    ] 
}); 

और अंत में है, यहाँ मेरी कोर है .js मॉड्यूल:

define(['angular', 'angularRoute', 'underscore', 'bootstrap'], function() { 
    // core dependencies are loaded... 
}); 

कमांड लाइन से activator clean stage चलाने के बाद मुझे उम्मीद थी कि निर्मित core.js फ़ाइल में मेरी सभी निर्दिष्ट निर्भरताओं को एक ही फ़ाइल में संयोजित और छोटा किया जाएगा, लेकिन इसमें इनमें से कोई भी शामिल नहीं है। यदि मैं core.js के लिए निर्भरता के रूप में एक गैर-वेबजर फ़ाइल निर्दिष्ट करता हूं, तो यह सही ढंग से अनुकूलित करता है।

क्या मैं संभव करने की कोशिश कर रहा हूं? मैं काफी हद तक गुस्सा कर रहा हूं और किसी भी तरह से एक स्पष्ट जवाब खोजने में सक्षम नहीं हूं।

धन्यवाद!

+1

मुझे यकीन नहीं है कि यह अभी 'sbt-rjs' के साथ संभव है या नहीं। आप एक समस्या दर्ज करना चाह सकते हैं: https://github.com/sbt/sbt-rjs/issues –

उत्तर

1

मैं Play 2.4.3 का उपयोग कर रहा हूं।

जोड़ा गया addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7") plugins.sbt को

// rjs = RequireJS, uglifies, shrinks to one file, replaces WebJars with CDN 
client accepts them 
pipelineStages := Seq(rjs, digest, gzip) 

यह मेरा build.sbt में सभी सिकुड़ काम आदि जे एस, और webjars बोवर के लिए करता है।

संबंधित मुद्दे