Ich habe eine einfache JavaScript-Anwendung mit AngularJS erstellt.Browserify überschreibt seine eigene Konfiguration beim Durchsuchen eines Ordners, der eine package.json enthält?
Ich verwende npm und Bower meine Abhängigkeiten zu verwalten, Gulp meiner Aufgaben zu automatisieren und ich möchte die Commonjs verwenden 'module.exports
/require()
alles zu binden zusammen: Ich beschloss, gehen für Browserify, um dies alles zu bündeln.
Es gibt my very empty and clean project on Github, wenn Sie einen Blick darauf werfen wollen.
Um require('angular')
der Lage sein, konfiguriert I Browserify dass AngularJS in die verfügbaren Module Shim, browserify-Shim verwenden. Ziemlich einfach, hier ist der relevante Teil meiner package.json
:
"browser": {
"angular": "./bower_components/angular/angular.min.js"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"angular": {
"exports": "angular"
}
}
Es ist recht ordentlich, meine Haupt-JS-Datei nun wie folgt aussieht:
'use strict';
var angular = require('angular');
angular.module('MyApp', [])
.controller('View1Ctrl', ['$scope', require('./view1/view1.js')])
.controller('View2Ctrl', ['$scope', require('./view2/view2.js')]);
Und das funktioniert. Jetzt
, ich versuche in eine fortgeschrittenere Sachen zu bekommen, mit externen Bibliotheken durch Bower. Sie werden unter bower_components
installiert und sehen aus wie mein Projekt, sie haben eine package.json
, eine bower.json
und alle.
Nehmen Sie zum Beispiel ng-Dialog, die auch require('angular')
. Sobald über bower install ng-dialog --save
abgerufen wird, kann ich zwei Dinge:
- Link zu ihrem dist JS-Datei in ein Schlüsselwort (sie
ng-dialog
sagt) in meinempackage.json
require('ng-dialog')
in Haupt-Haupt-JS-Datei, um meinen Eckige Modul zu haben, hängt davon ab, ihre.
Hier ist die aktualisierte relevante Teil meiner package.json
(beachten Sie, dass ng-Dialog tut nicht Notwendigkeit füttert werden):
"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"
}
}
...und meine aktualisiert app.js
Datei:
'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')]);
ich folgende Fehlermeldung erhalten, während Browserify-ing auf den Punkt:
Error: Cannot find module 'angular' from 'C:\...\bower_components\ng-dialog\js'
Nach einer guten halben Stunde zwicken um, stellte sich heraus, dass SIMPLY Löschen die package.json
Datei von bower_components/ng-dialog
macht alles reibungslos.
Was ist los und wie zum Teufel soll ich das ngDialog.min.js
bündeln?
Versuchen Sie debowerify Ansatz von [Browserify und Laube. Kanonischer Ansatz] (http://stackoverflow.com/questions/23691795/browserify-and-bower-canonical-approach)? – Artem