2016-07-19 1 views
1

Nous voulons utiliser les plugins Foundation 6 JS dans notre application Phoenix/Brunch, mais je n'arrive pas à comprendre comment raccorder correctement les scripts Foundation. Pour autant que je comprends, ils devraient être chargés après jQuery et l'étendra avec la fonction .foundation().Comment charger Foundation 6 JS dans Brunch?

package.json

"dependencies": { 
    "foundation-sites": "^6.2.3", 
    "jquery": "^3.1.0", 
    "sass-brunch": "^2.6.3", 
}, 

brunch-config.js

exports.config = { 
    files: { 
    javascripts: { 
     joinTo: "js/app.js", 
     order: { 
     before: [ 
      "node_modules/jquery/dist/jquery", 
      "node_modules/foundation-sites/js/foundation.core", 
      "node_modules/foundation-sites/js/foundation.topbar" 
     ] 
     } 
    }, 
    stylesheets: { 
     joinTo: "css/app.css" 
    }, 
    templates: { 
     joinTo: "js/app.js" 
    } 
    }, 

    conventions: { 
    assets: /^(web\/static\/assets)/, 
    ignored: [ 
     /\/_.*/ 
    ] 
    }, 
    paths: { 
    watched: [ 
     "web/static", 
     "test/static" 
    ], 
    public: "priv/static" 
    }, 

    plugins: { 
    babel: { 
     ignore: [/web\/static\/vendor/, /web\/static\/elm/] 
    }, 
    eslint: { 
     pattern: /^web\/static\/js\/.*\.js?$/ 
    }, 
    sass: { 
     mode: 'native', 
     options: { 
     includePaths: [ 
      'node_modules/foundation-sites/scss' 
     ] 
     } 
    } 
    },  

    modules: { 
    autoRequire: { 
     "jquery":   "node_modules/jquery/dist/jquery", 
     "foundation_core": "node_modules/foundation-sites/js/foundation.core", 
     "foundation_topbar": "node_modules/foundation-sites/js/foundation.topbar", 
     "js/app.js":   ["web/static/js/app"] 
    } 
    }, 

    npm: { 
    enabled: true, 
    whitelist: ["phoenix", "phoenix_html", "jquery", "foundation-sites", "scrollreveal"], 
    globals: { 
     $:  'jquery', 
     jQuery: 'jquery', 
    } 
    } 
}; 

La documentation Brunch n'est pas très explicite je pourrais donc faire quelques erreurs dans cette configuration (quand essayé d'utiliser autoRequire et npm.globals - quelles sont les clés de la carte là?), mais néanmoins $ et jQuery les variables globales sont t ici et en pointant vers la bibliothèque jQuery, ce qui est bien. Le problème est que $(document).foundation n'est pas défini.

Répondre

0

Brunch n'a pas compilé des actifs, la cause dans la section « modules » vous utilisé des valeurs de chaîne:

modules: { 
    autoRequire: { 
     "jquery":   "node_modules/jquery/dist/jquery", 
     "foundation_core": "node_modules/foundation-sites/js/foundation.core", 
     "foundation_topbar": "node_modules/foundation-sites/js/foundation.topbar", 
     "js/app.js":   ["web/static/js/app"] 
    } 
}, 

au lieu vous devez utiliser un tableau de chaînes avec des chemins. Modifiez-la en:

modules: { 
    autoRequire: { 
     "jquery":   ["node_modules/jquery/dist/jquery"], 
     "foundation_core": ["node_modules/foundation-sites/js/foundation.core"], 
     "foundation_topbar": ["node_modules/foundation-sites/js/foundation.topbar"], 
     "js/app.js":   ["web/static/js/app"] 
    } 
},