Во-первых, я очень новичок в npm и хрюкаю. У нас есть проект, в котором мы используем Grunt для компиляции и создания выходных файлов. Я пытаюсь настроить наш сервер сборки на использование Grunt для создания выходных файлов. Мы используем Windows с контролем источника TFS, и из-за этого 260-символьного ограничения пути мы не можем проверить модуль командной строки grunt-bower-task в исходное управление (поскольку он один использует 230 символов в установленном пути).
Когда я запускаю npm install из каталога моего проекта, он отлично работает и устанавливает следующие необходимые модули в папку node_modules в моем каталоге проектов:
- хрюкать
- пехотинец-становой-задачи
- пехотинец-вно-компас
- пехотинец-вно-подключения
- пехотинец-вно-jshint
- пехотинец-CONTRIB-requirejs
- пехотинец-вно-часы
И затем, когда я запускаю развертывание grunt из моего каталога проектов, все работает так, как ожидалось.
В то время как я мог просто запустить npm install часть процесса сборки, я предпочитаю не делать этого, так как для загрузки всех файлов требуется несколько минут, и я не хочу, чтобы наши сборки зависели от внешнего веб-сервиса доступны.
Я видел, что вы можете устанавливать модули как локально, так и глобально, поэтому я надеюсь только, что смогу установить модули по всему миру на сервере сборки что они не должны находиться в папке node_modules непосредственно внутри каталога проекта, прежде чем запускать развертывание grunt. Я запускал npm install -g, а также npm install -g [module] для каждого из перечисленных выше модулей, а также npm install -g grunt-cli.
Если я делаю npm prefix -g, он показывает мне, что глобальный каталог модуля - C:\Users [Мой пользователь]\AppData\Роуминг\npm, и когда я смотрю в эту папку node_modules, я вижу все модулей. Однако, когда я запускаю развертывание grunt, он жалуется:
Неустранимая ошибка: не удается найти локальный хрюканье
Если я включаю только каталог * node_modules\grunt *, то я все равно получаю следующие ошибки:
Локальный модуль Npm "grunt-contrib-watch" не найден. Установлен ли он?
Локальный модуль Npm "grunt-contrib-jshint" не найден. Установлен ли он?
...
Я также попытался использовать * grunt deploy --base "C:\Users [My User]\AppData\Roaming\npm", но он жалуется, что он не может найти другие файлы, такие как .jshintrc.
Итак, есть способ, которым я могу запустить развертывание grunt, и проверить ли он общий путь префикса npm для модулей, а не искать в каталоге проекта?
Хакерная работа заключается в том, чтобы скопировать модули вручную во время процесса сборки в локальный каталог проекта, но я хотел бы избежать этого, если это возможно.
Для справки, это мой файл package.json выглядит следующим образом:
{
"name": "MyProject",
"version": "0.0.1",
"scripts": {
"preinstall": "npm i -g grunt-cli bower"
},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-compass": "~0.2.0",
"grunt-contrib-watch": "~0.4.4",
"grunt-contrib-jshint": "~0.6.0",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-connect": "~0.3.0",
"grunt-bower-task": "~0.2.3"
}
}
Спасибо.