Обработка «исчезающих» пакетов nodejs на Github - PullRequest
0 голосов
/ 12 декабря 2018

TL: DR;

В общем, что может сделать разработчик / DevOps для предотвращения уничтожения сборки npm при исчезновении зависимостей Javascript из Github?Почему сопровождающие пакета удаляют помеченные артефакты из Npm?

Ниже приведен пример

 [exec] Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.3/win32-x64-67_binding.node
 [exec] Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.3/win32-x64-67_binding.node":
 [exec]
 [exec] HTTP error 404 Not Found

Я задаю этот вопрос в отношении 1) срочности выпуска программного обеспечения, которое зависит отв пакетах npm и 2) необходимо повторно запустить ручной контроль качества при изменении / обновлении зависимостей Javascript.

Когда эти проблемы возникают, я знаю, что вынужден обновить зависимости.Я просто хотел бы знать, как предотвратить блокировку и обострение этих проблем, особенно когда мне нужно завершить срочные выпуски.

Более длинная версия

Наше программное обеспечение, как и другие, состоит из gulp Построение задачи.Наш единственный эксперт по Javascript developer давно создал скрипт сборки.Он недавно ушел, поэтому я оставляю в ведении что-то, в чем я компетентен, но не являюсь экспертом.

Некоторое время назад мы столкнулись с вышеуказанной проблемой с другим пакетом, который я не помню.Обратите внимание, что мы должным образом не поддерживаем зависимости Javascript.Наш packages.json не обновлялся в течение более года (прочитайте ограничение № 2, прежде чем комментировать вопросы безопасности), затем однажды, внезапно, когда нам потребовалось выпустить версию с исправлением, затрагивающую производственного клиента, Gulp прекратил работать, и яне удалось собрать.

Я потратил более полдня на исправление зависимостей , когда мы явно использовали устаревшие пакеты.

Моя проблема в том, что у меня есть ограничения: 1) согласно политике управления наше программное обеспечение не может быть построено с использованием подстановочных знаков версий зависимостей, но только с фиксированными версиями зависимостей и 2) наши клиенты не финансируют нас достаточно для поддержания уязвимых зависимостей;они нормально работают с устаревшими зависимостями.

Я решил потратить первые полчаса своего времени на исследования и вопросы здесь.

Наш файл package.json:

{
  "name": "Phoenix3",
  "version": "0.0.2",
  "config": {
    "unsafe-perm": true
  },
  "dependencies": {
    "font-awesome": "4.7.0",
    "@flowjs/flow.js": "2.13.0",
    "@flowjs/ng-flow": "2.7.8",
    "angular": "1.7.2",
    "angular-animate": "1.7.2",
    "angular-aria": "1.7.4",
    "angular-chart.js": "1.1.1",
    "angular-cookies": "1.7.2",
    "angular-fancybox-plus": "1.0.3",
    "angular-i18n": "1.7.2",
    "angular-material": "1.1.10",
    "angular-messages": "1.7.2",
    "angular-resource": "1.7.2",
    "angular-sanitize": "1.7.2",
    "angular-smart-table": "2.1.11",
    "angular-timeago": "0.4.6",
    "angular-timer": "1.3.5",
    "angular-touch": "1.7.2",
    "angular-ui-bootstrap": "2.5.6",
    "angular-ui-codemirror": "0.3.0",
    "angular-ui-mask": "1.8.7",
    "angular-ui-tree": "2.22.6",
    "angular-ui-utils": "0.1.1",
    "angularjs-toaster": "2.2.0",
    "bootstrap": "3.3.7",
    "bootstrap-sass": "3.3.7",
    "chart.js": "2.7.2",
    "checklist-model": "1.0.0",
    "codemirror": "5.32.0",
    "file-saver": "1.3.3",
    "humanize-duration": "3.15.1",
    "jquery": "3.3.1",
    "jquery-fancybox": "3.1.0",
    "jquery-ui": "1.12.1",
    "jquery.browser": "0.1.0",
    "lr-sticky-header": "1.1.0",
    "matchmedia-polyfill": "0.3.0",
    "ng-tags-input": "3.2.0",
    "ngstorage": "0.3.11",
    "node-sass": "4.9.3",
    "npm-font-source-sans-pro": "0.0.3",
    "pivottable": "2.1.0",
    "screenfull": "3.0.2",
    "simple-line-icons": "2.4.1",
    "ui-select": "0.19.8",
    "underscore": "1.8.3"
  },
  "devDependencies": {
    "@babel/core": "7.1.0",
    "ajv": "6.5.3",
    "ajv-keywords": "3.2.0",
    "autoprefixer": "6.2.3",
    "babel-loader": "8.0.2",
    "babel-preset-es2015-without-strict": "0.0.2",
    "bless-webpack-plugin": "1.0.0",
    "bower-webpack-plugin": "0.1.9",
    "clean-webpack-plugin": "0.1.9",
    "css-loader": "0.23.1",
    "del": "2.1.0",
    "exports-loader": "0.6.2",
    "expose-loader": "0.7.1",
    "extract-text-webpack-plugin": "3.0.2",
    "file-loader": "0.8.5",
    "gulp": "4.0.0",
    "gulp-bless": "3.0.1",
    "gulp-concat": "2.6.0",
    "gulp-copy": "4.0.0",
    "gulp-data": "1.2.0",
    "gulp-eslint": "5.0.0",
    "gulp-flatten": "0.4.0",
    "gulp-footer": "1.0.5",
    "gulp-git": "1.11.3",
    "gulp-header": "1.7.1",
    "gulp-if": "2.0.0",
    "gulp-inject": "3.0.0",
    "gulp-jscs": "4.1.0",
    "gulp-jshint": "2.1.0",
    "gulp-minify-css": "1.2.1",
    "gulp-ng-annotate": "1.1.0",
    "gulp-ngdocs": "0.3.0",
    "gulp-protractor": "4.1.0",
    "gulp-rename": "1.2.2",
    "gulp-sass": "4.0.1",
    "gulp-strip-debug": "1.1.0",
    "gulp-template": "5.0.0",
    "gulp-uglify": "1.5.1",
    "gulp-util": "3.0.7",
    "html-webpack-plugin": "3.2.0",
    "import-glob-loader": "1.1.0",
    "imports-loader": "0.6.5",
    "istanbul-instrumenter-loader": "3.0.1",
    "jshint": "2.9.6",
    "merge-stream": "1.0.1",
    "minimatch": "3.0.4",
    "moment": "2.22.2",
    "null-loader": "0.1.1",
    "phantomjs": "2.1",
    "postcss-loader": "0.8.0",
    "protractor": "5.4.1",
    "raw-loader": "0.5.1",
    "resolve-url-loader": "1.4.3",
    "run-sequence": "1.1.5",
    "sass-loader": "7.1.0",
    "style-loader": "0.13.0",
    "ts-helpers": "1.1.1",
    "ts-loader": "0.8.2",
    "ts-node": "0.7.1",
    "tslint": "3.7.1",
    "tslint-loader": "2.1.3",
    "typedoc": "0.12.0",
    "typescript": "1.8.10",
    "url-loader": "1.1.1",
    "webpack": "4.19.1",
    "webpack-dev-server": "3.1.8"
  },
  "scripts": {
    "tslint": "tslint",
    "typedoc": "typedoc",
    "typings": "typings",
    "pnxdev": "gulp dev",
    "pnxprod": "gulp prod",
    "pnxdoc": "gulp doc",
    "pnxinstall": "npm --cache-min 9999999 install ",
    "pnxwatch": "gulp watch",
    "test": "gulp webdriver_update && gulp test",
    "webpack-dev": "npm install && gulp webdriver_update && ./node_modules/.bin/webpack",
    "webpack-prod": "npm install && gulp webdriver_update && NODE_ENV=production ./node_modules/.bin/webpack",
    "webpack-start": "./node_modules/.bin/webpack-dev-server"
  }
}

Так что, хотя до прошлой недели все было хорошо, сегодня node-sass версия 4.9.3 перестала существовать на GitHub ( действительно ?) Или, по крайней мере, недоступна согласно опубликованному мною журналу.

Вопрос:

Почему исчезают из Github артефакты после их выпуска?

Я привык к тому, что Maven и NuGet сохраняют постоянную историю артефактов.Наша компания использует сервер Artifactory для кеширования ресурсов Java, но мы не купили Artifactory Pro, чтобы служить постоянным кешем ресурсов Npm

Без перехода на подстановочную версию , что может разработчик / devopsсделать, чтобы эти проблемы не возникли в будущем, учитывая, что зависание сборки наверняка изменит расписания?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...