2016-02-09 11 views
5

Sto provando a creare una semplice applicazione desktop con NW.js. Ispirato da alcuni post tra cui this one, volevo provare un approccio puro npm senza alcun bower, grunt o gulp.Caricamento Bootstrap nell'app NW.js (node-webkit) con puro npm build

Quindi vado avanti e utilizzo le librerie jquery e bootstrap installate come moduli npm. Quando sto iniettando i moduli in javascript del mio app come questo:

global.jQuery = $ = require("jquery"); 
var bootstrap = require("bootstrap"); 

sto ottenendo un ReferenceError: document is not defined da bootstrap. Posso caricare bootstrap attraverso il documento HTML nella vecchia maniera però:

<script type="text/javascript" src="node_modules/bootstrap/dist/js/bootstrap.js"></script> 

Mi chiedo se è un'idea stupida per caricare attraverso bootstrap require nel file di script? Fondamentalmente, non ne ho bisogno lì. Può essere caricato tramite un tag script in html. Quali sono le migliori pratiche? Non ho capito bene.

Aggiornamento . La soluzione

aver preso il consigliare dai @Kuf, ho creato un build.js sceneggiatura

var copyfiles = require('copyfiles'); 
copyfiles(["node_modules/bootstrap/dist/js/bootstrap.js", "vendor/js"], true, function (err) { 
    if (err) return console.error(err); 
}); 
copyfiles(["node_modules/bootstrap/dist/css/bootstrap.css", "vendor/css"], true, function (err) { 
    if (err) return console.error(err); 
}); 

innescato da un gancio prestart:

"scripts": { 
    "build": "node build.js", 
    "prestart": "npm run build" 
} 

che mi permette di accedere bootstrap risorse da sentieri comodi :

<link href="vendor/css/bootstrap.css" rel="stylesheet"> 
<script type="text/javascript" src="vendor/js/bootstrap.js"></script> 

risposta

0

Penso che l'errore si verifica perché si sta eseguendo il fabbisogno senza contesto di finestra. Da dove stai eseguendo l'inclusione? notare che il codice in esecuzione da node-main:

finestra: ... non è disponibile al momento lo script viene caricato, perché lo script viene eseguito prima del carico finestra di DOM. (source)

Anche quando l'importazione del JS usando richiedono, è ancora necessario includere il css files.I non credo che ci sia un 'pulito' o out-of-the-box soluzione ancora. Anche se quello che stai facendo funzionerà sicuramente, genererà un percorso di script strano e non naturale.

vorrei aggiungere una build script:

"scripts": { 
    "build": "node build.js" 
    } 

in package.json per copiare bootstrap da node_modules in '/ dist /' per rendere il più pulito percorso.

Problemi correlati