Ho creato una semplice applicazione JavaScript utilizzando AngularJS.Browserify sovrascrive la propria configurazione durante l'esplorazione di una cartella che contiene un pacchetto.json?
sto usando NPM e Bower per gestire le mie dipendenze, Gulp a AUTOMATISE miei compiti e voglio utilizzare i CommonJS 'module.exports
/require()
a legare tutto insieme: ho deciso di andare per Browserify per raggruppare tutto questo.
C'è my very empty and clean project on Github, se vuoi dare un'occhiata.
Per poter require('angular')
, ho configurato Browserify a spessorare che AngularJS nei moduli disponibili, utilizzando browserify-shim. Piuttosto semplice, ecco la parte rilevante della mia package.json
:
"browser": {
"angular": "./bower_components/angular/angular.min.js"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"angular": {
"exports": "angular"
}
}
E 'abbastanza carino, il mio file JS principale appare come segue:
'use strict';
var angular = require('angular');
angular.module('MyApp', [])
.controller('View1Ctrl', ['$scope', require('./view1/view1.js')])
.controller('View2Ctrl', ['$scope', require('./view2/view2.js')]);
e che funziona.
Ora, io sto cercando di entrare in alcune cose più avanzati, utilizzando le librerie esterne disponibili tramite Bower. Vengono installati sotto bower_components
e guardano -dove- proprio come il mio progetto, hanno uno package.json
, uno bower.json
e tutto il resto.
Prendiamo ad esempio ng-finestra, che anche require('angular')
. Una volta recuperate via bower install ng-dialog --save
, faccio due cose:
- link del file JS del loro dist a una parola chiave (diciamo
ng-dialog
) nel miopackage.json
require('ng-dialog')
nel principale file di JS principale al fine di avere il mio modulo angolare dipendono il loro.
Ecco la parte rilevante aggiornata del mio package.json
(notare che ng-finestra fa non bisogno di essere spessorato):
"browser": {
"angular": "./bower_components/angular/angular.min.js",
"ng-dialog": "./bower_components/ng-dialog/js/ngDialog.min.js"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"angular": {
"exports": "angular"
}
}
...e la mia aggiornato app.js
di file:
'use strict';
var angular = require('angular');
require('ng-dialog');
angular.module('MyApp', ['ngDialog'])
.controller('View1Ctrl', ['$scope', require('./view1/view1.js')])
.controller('View2Ctrl', ['$scope', require('./view2/view2.js')]);
ottengo il seguente errore durante Browserify-ing questo in su:
Error: Cannot find module 'angular' from 'C:\...\bower_components\ng-dialog\js'
Dopo una buona mezz'ora di tweaking in giro, si è scoperto che semplicemente eliminazione il file package.json
da bower_components/ng-dialog
rende tutto senza intoppi.
Cosa sta succedendo e come diavolo dovrei raggruppare quello ngDialog.min.js
?
Hai provato debowerify approccio da [Browserify e pergolato. Approccio canonico] (http://stackoverflow.com/questions/23691795/browserify-and-bower-canonical-approach)? – Artem