Nach der Migration nach El Capitan scheint es, dass Benutzer ein Problem mit Grunt-Installationen haben, möglicherweise im Zusammenhang mit den wurzellosen Änderungen von El Capitan. Insbesondere führt das Ausführen des Befehls grunt --force zu EPERM-Fehlern. Der Workflow wird wie folgt dar:Ist 'El Capitan' wurzellos, bricht alte Grunt-Konfigurationen?
Unter der Annahme, npm installiert wurde, navigieren Sie zu dem Grunzen Verzeichnis mit package.json und gruntfile.js und rufen Grunzen:
grunt --force
Beispiel Gruntfile.js Dateiinhalt:
module.exports = function(grunt) { // All configuration goes here grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { // Configuration for concatenating files goes here. dist: { src: [ '../js/libs/owl.carousel.js', '../js/libs/jquery.actual.js', '../js/libs/chosen.jquery.js', '../js/libs/jquery.parallax.js', '../js/src/common.js' ], dest: '../js/pro/global.js', }, }, uglify: { build: { src: '../js/pro/global.js', dest: '../js/pro/global.min.js', }, }, imagemin: { dynamic: { files: [{ expand: true, cwd: '../img/src/', src: ['**/*.{png,jpg,gif}'], dest: '../img/pro/' }] } }, compass: { dev: { options: { sassDir: '../sass', cssDir: '../css', fontsDir: '../fonts', imagesDir: '../img/', images: '../img/', javascriptsDir: '../js/pro', //environment: 'development', outputStyle: 'compressed', relativeAssets: true, httpPath: '.', } }, }, watch: { scripts: { files: ['../js/**/**.js'], tasks: ['concat', 'uglify'], options: { spawn: true, }, }, images: { files: ['../img/src/**.{png,jpg,gif}'], tasks: ['imagemin'], options: { spawn: true, } }, compass: { files: ['../**/*.{scss,sass}'], tasks: ['compass:dev'], } }, svgstore: { defaults: { options: { prefix : 'icon-', }, files: { '../img/svg-defs.svg': ['../img/svg/*.svg'] } } }, }); // Where we tell Grunt we plan to use this plug-in. grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-compass'); grunt.loadNpmTasks('grunt-svgstore'); // Where we tell Grunt what to do when we type "grunt" into the terminal. grunt.registerTask('default', ['concat', 'uglify', /*'imagemin',*/ 'compass', 'svgstore', 'watch']); };
Beispiel package.json Dateiinhalt:
{
"name": "Call Me Maybe",
"version": "0.2.0",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-compass": "^1.0.4",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-imagemin": "^0.9.4",
"grunt-contrib-sass": "^0.9.2",
"grunt-contrib-uglify": "^0.9.2",
"grunt-contrib-watch": "^0.6.1",
"grunt-svgstore": "^0.5.0"
}
}
Die resul ting EPERM Fehler sind wie folgt:
Running "concat:dist" (concat) task
Warning: Unable to write "../js/pro/global.js" file (Error code: EPERM). Used --force, continuing.
Running "uglify:build" (uglify) task
Warning: Unable to write "../js/pro/global.min.js" file (Error code: EPERM). Used --force, continuing.
Running "compass:dev" (compass) task
Warning: Command failed: /bin/sh: compass: command not found. Used --force, continuing.
Warning: You need to have Ruby and Compass installed and in your system PATH for this task to work. More info: https://github.com/gruntjs/grunt-contrib-compass Used --force, continuing.
Running "svgstore:defaults" (svgstore) task
Warning: Unable to write "../img/svg-defs.svg" file (Error code: EPERM). Used --force, continuing.
Running "watch" task
Waiting...
Interessanterweise sind Ruby und Kompass auch installiert, so dass es mit der Theorie der wurzellos nicht in der Lage ist ausrichten auf Ordner Themen zu schreiben, aber wie kann die Abhängigkeits Kerne an anderer Stelle bewegt werden (dh/usr/local/bin) das ist also kein Problem?
Während der El Capitan Betas haben einige Benutzer die Aktivierung von root via terminal vorgeschlagen - obwohl dies anscheinend nicht mehr funktioniert, da der Fehler weiterhin besteht und der/usr/bin-Ordner immer noch keine Erlaubnisänderungen zulässt.
ich mit globalem gem Installationen nach El Capitan ein paar Problemen hatte und ließ sich auf den '/ usr/local wieder neu zu installieren/bin 'Verzeichnis mit' sudo gem installieren -n/usr/local/bin compass'. Aber ich erkenne deine Fehler nicht. Ist es möglich, dass alle Knotenabhängigkeiten global im Stammverzeichnis installiert sind? – Joao
Möglicherweise habe ich das 'sudo-Juwel installiert -n/usr/local/bin compass' verwendet, aber das Problem nicht gelöst. Ich finde, dass beim Ausführen von 'grunt -v --force' alles gut läuft, aber wenn jede Datei zum Schreiben geht, kann sie nicht schreiben, zum Beispiel' Warning: Kann nicht schreiben "../img/svg-defs. svg "Datei (Fehlercode: EPERM). Verwendet --force, continuing.' – beta208
'brew install node' wird npm in' usr/local/bin' setzen, so dass Sie Probleme mit Berechtigungen vergessen können. Ich empfehle auch einen Neustart zur Wiederherstellung und eine 'csrutil disable', um SIP auszuschalten. Vor allem, wenn Sie Formeln haben, die sich in 'usr/local/sbin' befinden. DISCLAIMER: Ich empfehle SIP zu deaktivieren, wenn Sie ziemlich sicherheitsbewusst sind und ich nicht verantwortlich bin für eine versehentliche' sudo rm -rf/.' check 'brew install safe- Wenn du wirklich vorsichtig sein willst. Prost. – suzumakes