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сделать, чтобы эти проблемы не возникли в будущем, учитывая, что зависание сборки наверняка изменит расписания?