2016-05-01 11 views
2

Ich bin neu in Yeoman/Grunzen/Bower und ich arbeite mit einem AngularJS Projekt bis zur Einrichtung:Grunt: jit-Grunzen: Plugin für die „Transporteur“ Aufgabe nicht gefunden

yo angular 

Ich habe einige Änderungen Grunfile selbst und vor kurzem fand ich Winkelmesser sehr nützlich und ich wollte das zu meinem Projekt hinzufügen. Ich habe viele Anweisungen online verfolgt (wie diese Integrating Protractor with Yeoman via Grunt vor 2 Jahren), aber ich kann immer noch nicht Winkelmesser richtig installiert bekommen. Hier

ist mein Gruntfile.js: (nur relevante Teile gezeigt)

'use strict'; 
module.exports = function (grunt) { 

    // Time how long tasks take. Can help when optimizing build times 
    require('time-grunt')(grunt); 

    // Automatically load required Grunt tasks 
    require('jit-grunt')(grunt, { 
    useminPrepare: 'grunt-usemin', 
    ngtemplates: 'grunt-angular-templates', 
    cdnify: 'grunt-google-cdn' 
    }); 

    // Configurable paths for the application 
    var appConfig = { 
    app: require('./bower.json').appPath || 'app', 
    dist: 'dist' 
    }; 

    // Define the configuration for all the tasks 
    grunt.initConfig({ 

    // Project settings 
    yeoman: appConfig, 

    ... 
    ... 

    // Automatically inject Bower components into the app 
    wiredep: { 
     app: { 
     src: ['<%= yeoman.app %>/index.html'], 
     ignorePath: /\.\.\// 
     }, 
     test: { 
     devDependencies: true, 
     src: '<%= karma.unit.configFile %>', 
     ignorePath: /\.\.\//, 
     fileTypes:{ 
      js: { 
      block: /(([\s\t]*)\/{2}\s*?bower:\s*?(\S*))(\n|\r|.)*?(\/{2}\s*endbower)/gi, 
       detect: { 
       js: /'(.*\.js)'/gi 
       }, 
       replace: { 
       js: '\'{{filePath}}\',' 
       } 
      } 
      } 
     }, 
     sass: { 
     src: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], 
     ignorePath: /(\.\.\/){1,2}bower_components\// 
     } 
    }, 

    ... 
    ... 

    // Test settings 

    karma: { 
     unit: { 
     configFile: 'test/karma.conf.js', 
     singleRun: true 
     } 
    }, 

    protractor: { 
     options: { 
     keepalive: true, 
     configFile: 'protractor.conf.js' 
     }, 
     run: {} 
    } 

    }); 

    grunt.registerTask('serve', 'Compile then start a connect web server', function (target) { 
    if (target === 'dist') { 
     return grunt.task.run(['build', 'connect:dist:keepalive']); 
    } 

    grunt.task.run([ 
     'clean:server', 
     'wiredep', 
     'concurrent:server', 
     'postcss:server', 
     'connect:livereload', 
     'watch' 
    ]); 
    }); 

    grunt.registerTask('test', [ 
    'clean:server', 
    'wiredep', 
    'concurrent:test', 
    'postcss', 
    'connect:test', 
    'karma', 
    'protractor:run' 
    ]); 
}; 

Hier ist meine package.json:

{ 
    "name": "Website", 
    "private": true, 
    "devDependencies": { 
    "autoprefixer-core": "^5.2.1", 
    "compass": "^0.1.1", 
    "grunt": "^0.4.5", 
    "grunt-angular-templates": "^0.5.7", 
    "grunt-concurrent": "^1.0.0", 
    "grunt-contrib-clean": "^0.6.0", 
    "grunt-contrib-compass": "^1.0.0", 
    "grunt-contrib-concat": "^0.5.0", 
    "grunt-contrib-connect": "^0.9.0", 
    "grunt-contrib-copy": "^0.7.0", 
    "grunt-contrib-cssmin": "^0.12.0", 
    "grunt-contrib-htmlmin": "^0.4.0", 
    "grunt-contrib-imagemin": "^1.0.0", 
    "grunt-contrib-jshint": "^0.11.0", 
    "grunt-contrib-uglify": "^0.7.0", 
    "grunt-contrib-watch": "^0.6.1", 
    "grunt-filerev": "^2.1.2", 
    "grunt-google-cdn": "^0.4.3", 
    "grunt-jscs": "^1.8.0", 
    "grunt-karma": "^0.12.2", 
    "grunt-newer": "^1.1.0", 
    "grunt-ng-annotate": "^0.9.2", 
    "grunt-postcss": "^0.5.5", 
    "grunt-protractor-runner": "^3.0.0", 
    "grunt-svgmin": "^2.0.0", 
    "grunt-usemin": "^3.0.0", 
    "grunt-wiredep": "^2.0.0", 
    "jasmine-core": "^2.4.1", 
    "jit-grunt": "^0.9.1", 
    "jshint-stylish": "^1.0.0", 
    "karma": "^0.13.22", 
    "karma-jasmine": "^0.3.8", 
    "karma-phantomjs-launcher": "^1.0.0", 
    "karma2": "^0.13.22", 
    "phantomjs-prebuilt": "^2.1.7", 
    "protractor": "^3.0.0", 
    "time-grunt": "^1.0.0" 
    }, 
    "engines": { 
    "node": ">=0.10.0" 
    }, 
    "scripts": { 
    "test": "karma start test/karma.conf.js", 
    "install": "node node_modules/protractor/bin/webdriver-manager update" 
    }, 
    "dependencies": {} 
} 

I verwendet jit-grunt (als Standard jetzt), so wird diese Plugins für mich laden .

Ich habe sicherlich protractor und grunt-protractor-runner nach der Post installiere ich wie offizielle Website von protractor und grunt-protractor-runner oben und aus anderen Quellen erwähnt. In meinem lokalen node_modules:

$ ls node_modules/ | grep protractor 
grunt-protractor-runner 
protractor 

Aber egal, was ich tue, ich bin immer noch den Fehler von Grunzen bekommen:

$ grunt protractor 

jit-grunt: Plugin for the "protractor" task not found. 
If you have installed the plugin already, please setting the static mapping. 
See https://github.com/shootaroo/jit-grunt#static-mappings 

Warning: Task "protractor" failed. Use --force to continue. 

Und läuft Grunzen Test:

$ grunt test 

Running "clean:server" (clean) task 
>> 1 path cleaned. 

... 
... 

Running "karma:unit" (karma) task 
01 05 2016 15:03:51.048:WARN [watcher]: Pattern 
01 05 2016 15:03:51.094:INFO [karma]: Karma v0.13.22 server started at http://localhost:8080/ 
01 05 2016 15:03:51.112:INFO [launcher]: Starting browser PhantomJS 
01 05 2016 15:03:52.259:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket /#68w8QMUehAm8AAf2AAAA with id 17032121 
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 2 of 2 SUCCESS (0.003 secs/0.026 secs) 

jit-grunt: Plugin for the "protractor" task not found. 
If you have installed the plugin already, please setting the static mapping. 
See https://github.com/shootaroo/jit-grunt#static-mappings 

Warning: Task "protractor:run" failed. Use --force to continue. 

Aborted due to warnings. 

Gibt es etwas, Ich vermisste? Ich war tagelang damit beschäftigt. Jede Hilfe wird sehr geschätzt.

+1

Wenn Sie 'JIT-grunt' entfernen, läuft es richtig? – theaccordance

+0

Danke @theaccordance für die Antwort! Nach dem Deaktivieren von JIT-grunt versuchte ich diese Npm-Aufgabe zu laden. Ich musste feststellen, dass ich den "Grunt-Winkelmesser-Läufer" manuell laden müsste. Jetzt schien der Winkelmesser richtig zu funktionieren! (Zumindest wird es von Grunzen gefunden. Danke! – Fei

Antwort

1

Danke für den Vorschlag und Hinweis von @theaccordance. Stellt sich heraus, dass JIT-grunt hat wahrscheinlich Schwierigkeiten beim Laden grunt-protractor-runner.

Das Hinzufügen von grunt.loadNpmTasks('grunt-protractor-runner'); in Gruntfile.js wird das Problem beheben.

0

Die akzeptierte Antwort folgt einem Anti-Pattern und vereitelt den Zweck des JIT (Just In Time) Plugin Loader für Grunt.

Das Ziel von jit-grunt ist, die erforderlichen Plugins automatisch zu laden und macht damit die Verwendung von grunt.loadNpmTasks obsolet.

Die documentation für jit-grunt erklärt, wie das Plugin Loader für den Plugins sucht:

Wird für das Plugin aus den Task-Namen automatisch suchen.Suchen in der folgenden Reihenfolge:

  1. node_modules/Grunzen-contrib-Task-Name
  2. node_modules/Grunzen-Task-Name
  3. node_modules/Task-Name

Da Sie Haben Sie eine Aufgabe protractor, wird der Plugin Loader versuchen, ein entsprechendes Plugin in dieser Reihenfolge zu finden:

  1. grunt-contrib-protractor
    • existiert nicht in packages.json
  2. grunt-protractor
    • existiert nicht in packages.json
  3. protractor
    • gefunden in packages.json!
    • leider ist es eine Abweichung
    • das erforderliche Plugin für die Aufgabe protractor ist grunt-protractor-runner

In diesem Fall wird die statische Zuordnung festlegen können, wie die Fehlermeldung weist darauf hin. Wir tun dies im Format taskname: grunt_plugin_name:

// Automatically load required Grunt tasks 
require('jit-grunt')(grunt, { 
    useminPrepare: 'grunt-usemin', 
    ngtemplates: 'grunt-angular-templates', 
    cdnify: 'grunt-google-cdn', 
    protractor: 'grunt-protractor-runner' 
});

Dies ist eine alte Frage, aber ich hoffe, dass meine Antwort andere Menschen, die dieses Problem auftreten kann helfen.

Verwandte Themen