Webpack с html-webpack-plugin, ошибка при глобальной установке

Я знаю, что об этой проблеме сообщалось в другом месте, когда webpack и html-webpack-plugin устанавливаются с помощью npm -g:

    module.js:341
    throw err;
    ^

Error: Cannot find module 'html-webpack-plugin'
    at Function.Module._resolveFilename (module.js:339:15)

И люди нашли ответ: установите один или оба локально в проект. Но для меня это не сработает. Мне нужно, чтобы это работало в нашей общей системе сборки, а не только в моей среде разработки. Это означает, что он установлен глобально, чтобы все проекты имели к нему доступ через свои скрипты сборки ant / nant, запускаемые Jenkins.

Мой проект очень простой. Пара html-страниц с контентом, сгенерированным скриптами responseJS, включенными в html с тегами скриптов. Это должно быть легко, и это должно вызывать боль. Подумываю о сбросе веб-пакета и поиске другого простого менеджера пакетов javascript.

Есть ли переменные среды, которые мы можем использовать, чтобы указать webpack искать в каталоге 'node_modules' глобального узла 'require'd plugings / packages?

Предложения?


person MonkeyWrench    schedule 29.03.2016    source источник
comment
Вы не можете установить и локально, и глобально?   -  person aw04    schedule 29.03.2016
comment
Я могу сделать это локально в своей среде разработки, но не могу сделать это на сервере сборки. Сервер сборки создает / уничтожает среду сборки по мере необходимости, и размещение там специального скрипта для локальной установки html-webpack-plugin перед запуском сборки кажется дерьмовым решением, и я бы хотел этого избежать.   -  person MonkeyWrench    schedule 29.03.2016


Ответы (1)


Вам не нужно устанавливать глобальный веб-пакет для Jenkins. Добавьте в свой package.json в сценариях команду, запускающую локальный веб-пакет, например:

  "scripts": {
    "start": "webpack-dev-server --inline --hot",
    "build": "webpack -p"
  },

Теперь Дженкинс может запускать ваш скрипт сборки без установленного глобального веб-пакета:

npm run build

Таким образом, вы можете поддерживать несколько проектов с разными версиями webpack, и каждый проект может иметь свои собственные локальные зависимости.

Опора скриптов является частью проекта package.json. Package.json содержит все зависимости и зависимости от разработчиков (сборка, тестирование и т. Д.) Проекта. Используя package.json, запускающий NPM install на вашем компьютере сборки, вы можете установить локально (часть каталога проекта) все зависимости. Пример package.json для проекта angular, созданного с помощью webpack:

{
  "name": "whatever",
  "version": "1.2.0",
  "description": "whatever",
  "scripts": {
    "start": "webpack-dev-server --inline --hot", // runs the dev server
    "build": "webpack -p" // builds the release
  },
  "dependencies": { // the dependencies that are part of the actual release
    "angular": "1.5.0",
    "angular-animate": "1.5.0",
    "angular-messages": "1.5.0",
    "angular-ui-router": "0.2.15"
  },
  "devDependencies": { // build dependencies 
    "babel-core": "6.5.2",
    "babel-eslint": "6.0.0-beta.1",
    "babel-loader": "6.2.3",
    "babel-preset-es2015": "6.5.0",
    "babel-preset-stage-0": "6.5.0",
    "css-loader": "0.23.1",
    "file-loader": "0.8.5",
    "html-loader": "0.4.3",
    "html-webpack-plugin": "2.14.0",
    "less-loader": "2.2.2",
    "style-loader": "0.13.0",
    "url-loader": "0.5.7",
    "webpack": "1.12.14",
    "webpack-dev-server": "1.14.1"
  },
  "license": "MIT"
}

Каждый раз, когда обновляется мастер git, Дженкинс извлекает последнюю фиксацию, очищает текущий каталог сборки, включая все зависимости, и запускает в папке проекта следующие команды: npm install для локальной установки всех зависимостей как часть папки проекта npm run build для сборки выпускать

Дженкинс не знает о веб-пакете или любом другом инструменте сборки или зависимости. Единственные вещи, которые устанавливаются на Jenkins глобально, - это nodejs и npm.

А вот простой сценарий bash, который запускает команды:

rm -rf node_modules || true // remove node_modules (all deps)
npm install // install all deps
npm run build // run the build script
person Ori Drori    schedule 29.03.2016
comment
Спасибо, но нам не нужны разные версии webpack для каждого проекта. Я до сих пор не понимаю, зачем нам все это устанавливать локально в строящийся проект. Я новичок в npm, и мне придется разобраться, что делает ваш сценарий выше. - person MonkeyWrench; 29.03.2016
comment
Я добавлю еще кое-что. - person Ori Drori; 29.03.2016
comment
Что устанавливает плагин html-webpack локально в проект? - person MonkeyWrench; 29.03.2016
comment
npm install as html-webpack-plugin является частью devDependencies - person Ori Drori; 29.03.2016
comment
Спасибо, сегодня работает локально. Как только мы установим nodejs / npm на сервер сборки, все должно быть готово. Спасибо. - person MonkeyWrench; 21.04.2016
comment
@Ori Drori, ошибка все еще остается в ubuntu 18.4 - person Mohammad Heydari; 11.02.2019