Cannot find module 'autoprefixer' (Grunt)


#1

Пытался настроить автоматическую сборку проекта и столкнулся с проблемой, при использовании следующего (рис. 1) кода, получаю ошибку - Error: Cannot find module ‘autoprefixer’. Плагин postcss установлен, если я правильно понял, этот модуль должен быть внутри, но его нет. Как восстановить модуль?


Автомат. + grunt + less
#2

А какой из препроцессоров вы все-таки выбрали? Less или postcss?


#3

Я остановился на Less


#4

Тогда почему в Gruntfile друг за другом написаны оба? И еще вопрос, что скрывается за задачей с названием “serve”?


#5

Если вы имеете ввиду эту строку: grunt.loadNpmTasks(“grunt-postcss”); , - то она нужна, поскольку “autoprefixer”, как отдельный плагин, устарел и сейчас находится в составе “grunt-postcss”. Назначение “serve” для меня на данный момент - вопрос, поскольку приведенный выше код - клон чужого файла автоматизации, который я пытаюсь заставить работать у себя.


#6

Спасибо за уточнение на счет autoprefixer, я этого не знала.
Я думаю, что могу помочь разобраться, я тоже составляла файл для Grunt.
В строке grunt.registerTask должны быть перечислены все задачи, которые вы запускаете, то есть скорее всего будет что-то вроде: grunt.registerTask(‘default’, [‘less’, ‘postcss’, ‘browserSync’, ‘watch’]);


#7

SyntaxError: Unexpected identifier


#8

А запустите просто “grunt” без less.


#9

Результат тот же


#10

В моем файле все grunt.loadNpmTasks находятся после функции grunt.initConfig. Может в этом дело.


#11

Та же ошибка


#12

Еще дело может быть в кавычках. У меня везде одинарные. В чем разница, не скажу. Но помню, что ошибки связанные с этим тоже были.


#13

К сожалению, точно та же ошибка.


#14

Я не вижу ваш файл целиком… Может вы поделитесь ссылкой на свой репозиторий и я попробую посмотреть у себя?


#15

Как оказалось, моя проблема была более чем банальна - пропущенная запятая.


#16

Ну да, это относится к SyntaxError. Linter установили, да?


#17

Нет, просмотрел вручную. Раньше о нем не слышал, нужно будет установить.


#18

Обратите внимание, кто попал сюда по поиску – для того, чтобы работала сборка автора, должны быть установлены как минимум следующие пакеты:
---- в package.json должен быть такой кусок: ----

(версии актуальны на 14.03.2018)
“devDependencies”: {
“autoprefixer”: “^8.1.0”,
“css-mqpacker”: “^6.0.2”,
“grunt”: “^1.0.2”,
“grunt-browser-sync”: “^2.2.0”,
“grunt-contrib-less”: “^1.4.1”,
“grunt-contrib-watch”: “^1.0.0”,
“grunt-postcss”: “^0.9.0”
}

установить их можно командой:
npm install --save-dev autoprefixer css-mqpacker grunt grunt-browser-sync grunt-contrib-less grunt-contrib-watch grunt-postcss

Не лишним будет прочитать про формат JSON, как в нем представлены данные (в виде объектов js – и про них тоже), чтобы не лажать с запятыми и скобками – будущим фронтендерам очень пригодится.