Po migracji do El Capitan wydaje się, że użytkownicy mają problem z instalacjami gruntowymi, prawdopodobnie powiązanymi z bezkształtnymi zmianami El Capitan. W szczególności uruchamianie polecenia grunt - siła powoduje błędy EPERM. Przepływ pracy jest w następujący sposób:Czy "El Capitan" to rootless łamanie starych konfiguracji?
Zakładając npm został zainstalowany, przejdź do katalogu grunt z package.json i gruntfile.js i powołać grunt:
grunt --force
Przykład Gruntfile.js zawartość pliku:
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']); };
przykład zawartości pliku package.json:
{
"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"
}
}
resul Błędy ting EPERM są następujące:
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...
Co ciekawe, Ruby i Compass są również zainstalowany, więc nie wyrównać z teorii rootless stanie pisać do zagadnień folderach ale jak rdzenie zależnościami być przeniesiony gdzie indziej (tj/usr/local/bin) , więc to nie jest problem?
Podczas El Capitan Betas, niektórzy użytkownicy sugerowali włączanie roota przez terminal - choć to już nie działa, ponieważ błąd nadal występuje, a folder/usr/bin nadal nie pozwala na zmiany uprawnień.
miałem kilka problemów z instalacjami globalny gem po El Capitan i musiał ponownie zainstalować je ponownie do '/ usr/local/bin 'katalog z' sudo gem install -n/usr/local/bin compass'. Ale nie rozpoznaję twoich błędów. Czy jest możliwe, że wszystkie zależności węzłów są instalowane globalnie w katalogu głównym? – Joao
Prawdopodobnie użyłem tego 'sudo gem install -n/usr/local/bin compass', ale nie rozwiązałem problemu. Uważam, że przy uruchomieniu 'grunt -v --force' wszystko działa dobrze, ale kiedy każdy plik idzie do pisania, nie może pisać, na przykład' Ostrzeżenie: Nie można pisać. ../img/svg-defs. svg "plik (kod błędu: EPERM). Używane --force, kontynuowanie. " – beta208
' węzeł instalacji zaparzania' zainstaluje npm w 'usr/local/bin', dzięki czemu można zapomnieć o problemach z uprawnieniami. Polecam również ponowne uruchomienie odzyskiwania i "wyłączenie csrutil", aby wyłączyć SIP. Zwłaszcza jeśli masz formuły rezydujące w 'usr/local/sbin' DISCLAIMER: Polecam wyłączenie SIP, jeśli jesteś całkiem bezpieczny i nie jestem odpowiedzialny za przypadkowe" sudo rm -rf /. "Sprawdź' brew install safe- rm', jeśli chcesz być naprawdę ostrożny. Twoje zdrowie. – suzumakes