debian-mirror-gitlab/debian/patches/0740-use-packaged-modules.patch

246 lines
9 KiB
Diff
Raw Normal View History

2020-04-13 13:49:04 +05:30
Use debian packaged node modules when available
- Exclude packaged modules from transpiling
- Remove webpack-bundle-analyzer
- Resolve .json files
- Add more plugins to babel.config.js
- Add mkdirp 1.0 and loader-utils 2.0 to ensure compatibility for packaged
modules (See #976310)
- Use link protocol for modules with permission issues (which has a bin: entry
in package.json) or dependencies. Use portal protocol only for modules that
1. does not have any other dependency and 2. does not have a bin: entry
See https://github.com/yarnpkg/berry/issues/2266
- Even better, portal protocol tries to satisfy even devDependencies so avoid
it
- Modules with problems compression-webpack-plugin, copy-webpack-plugin,
jszip, mkdirp, js-yaml, font-awesome, katex, cache-loader, webpack
- babel-loader, cache-loader needs loader-utils 1.x and we already have 2.x and
no compat patch
- brace-expansion is a major version ahead in the archive
- xterm build is broken (#980406)
2020-04-13 13:49:04 +05:30
2019-08-08 15:17:34 +05:30
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
2021-04-17 20:43:06 +05:30
@@ -10,7 +10,6 @@
const VUE_LOADER_VERSION = require('vue-loader/package.json').version;
const VUE_VERSION = require('vue/package.json').version;
const webpack = require('webpack');
-const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const { StatsWriterPlugin } = require('webpack-stats-plugin');
const WEBPACK_VERSION = require('webpack/package.json').version;
2021-09-04 02:51:02 +05:30
@@ -188,6 +187,8 @@
entry: generateEntries,
+ externals: [ 'canvas' ],
+
output: {
2021-02-22 22:40:45 +05:30
path: WEBPACK_OUTPUT_PATH,
publicPath: WEBPACK_PUBLIC_PATH,
2021-09-04 02:51:02 +05:30
@@ -197,10 +198,15 @@
},
2019-08-08 15:17:34 +05:30
resolve: {
2021-06-09 22:52:32 +05:30
- extensions: ['.js'],
+ extensions: ['.js', '.gql', '.graphql', '.json'],
+ modules: ['node_modules','/var/lib/gitlab/node_modules','/usr/share/gitlab/vendor/node_modules','/usr/share/gitlab/node_modules/mermaid/node_modules', '/usr/share/nodejs/markdown-it/node_modules/', '/usr/lib/nodejs', '/usr/share/nodejs'],
2019-08-08 15:17:34 +05:30
alias,
},
2021-06-09 22:52:32 +05:30
+ resolveLoader: {
+ modules: ['node_modules','/var/lib/gitlab/node_modules', '/usr/lib/nodejs','/usr/share/nodejs'],
2021-06-09 22:52:32 +05:30
+ },
+
2019-08-08 15:17:34 +05:30
module: {
2021-06-09 22:52:32 +05:30
strictExportPresence: true,
rules: [
2021-09-04 02:51:02 +05:30
@@ -211,9 +217,13 @@
2020-03-28 19:53:26 +05:30
},
{
test: /\.js$/,
2021-04-17 20:43:06 +05:30
- exclude: (modulePath) =>
+ exclude: [(modulePath) =>
/node_modules\/(?!tributejs)|node_modules|vendor[\\/]assets/.test(modulePath) &&
!/\.vue\.js/.test(modulePath),
+ /\/usr\/share\/nodejs/,
+ /\/usr\/lib\/nodejs/,
+ /\/usr\/share\/javascript/
2020-04-08 15:34:39 +05:30
+ ],
2020-03-28 19:53:26 +05:30
loader: 'babel-loader',
options: {
cacheDirectory: path.join(CACHE_PATH, 'babel-loader'),
2021-09-04 02:51:02 +05:30
@@ -290,7 +300,7 @@
},
{
test: /\.(eot|ttf|woff|woff2)$/,
- include: /node_modules\/(katex\/dist\/fonts|monaco-editor)/,
+ include: /(node_modules\/monaco-editor|\/usr\/share\/fonts\/truetype\/katex)/,
loader: 'file-loader',
options: {
name: '[name].[contenthash:8].[ext]',
2021-09-04 02:51:02 +05:30
@@ -579,19 +589,6 @@
2019-08-08 15:17:34 +05:30
// enable HMR only in webpack-dev-server
DEV_SERVER_LIVERELOAD && new webpack.HotModuleReplacementPlugin(),
- // optionally generate webpack bundle analysis
- WEBPACK_REPORT &&
- new BundleAnalyzerPlugin({
- analyzerMode: 'static',
- generateStatsFile: true,
- openAnalyzer: false,
- reportFilename: path.join(ROOT_PATH, 'webpack-report/index.html'),
- statsFilename: path.join(ROOT_PATH, 'webpack-report/stats.json'),
2019-12-21 21:33:11 +05:30
- statsOptions: {
- source: false,
- },
2019-08-08 15:17:34 +05:30
- }),
-
new webpack.DefinePlugin({
// This one is used to define window.gon.ee and other things properly in tests:
2019-12-21 21:33:11 +05:30
'process.env.IS_EE': JSON.stringify(IS_EE),
2021-09-04 02:51:02 +05:30
@@ -628,6 +625,7 @@
2019-08-08 15:17:34 +05:30
node: {
fs: 'empty', // sqljs requires fs
+ Buffer: 'mock',
setImmediate: false,
},
2019-08-08 15:17:34 +05:30
};
--- a/package.json
+++ b/package.json
2021-09-04 02:51:02 +05:30
@@ -46,19 +46,19 @@
2021-04-21 01:01:41 +05:30
"webpack-prod": "NODE_OPTIONS=\"--max-old-space-size=3584\" NODE_ENV=production webpack --config config/webpack.config.js"
},
"dependencies": {
- "@babel/core": "^7.10.1",
- "@babel/plugin-proposal-class-properties": "^7.10.1",
- "@babel/plugin-proposal-json-strings": "^7.10.1",
- "@babel/plugin-proposal-private-methods": "^7.10.1",
- "@babel/plugin-syntax-import-meta": "^7.10.1",
- "@babel/preset-env": "^7.10.1",
+ "@babel/core": "link:/usr/share/nodejs/@babel/core",
+ "@babel/plugin-proposal-class-properties": "link:/usr/share/nodejs/@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings": "link:/usr/share/nodejs/@babel/plugin-proposal-json-strings",
+ "@babel/plugin-proposal-private-methods": "link:/usr/share/nodejs/@babel/plugin-proposal-private-methods",
+ "@babel/plugin-syntax-import-meta": "link:/usr/share/nodejs/@babel/plugin-syntax-import-meta",
+ "@babel/preset-env": "link:/usr/share/nodejs/@babel/preset-env",
"@gitlab/at.js": "1.5.7",
"@gitlab/favicon-overlay": "2.0.0",
2021-09-04 02:51:02 +05:30
"@gitlab/svgs": "1.199.0",
2021-05-10 01:10:00 +05:30
"@gitlab/tributejs": "1.0.0",
2021-09-04 02:51:02 +05:30
"@gitlab/ui": "29.35.0",
2021-05-10 01:10:00 +05:30
"@gitlab/visual-review-tools": "1.6.1",
2021-09-04 02:51:02 +05:30
- "@rails/actioncable": "6.1.3-2",
2021-05-10 01:10:00 +05:30
+ "@rails/actioncable": "link:/usr/share/nodejs/@rails/actioncable",
2021-09-04 02:51:02 +05:30
"@rails/ujs": "6.1.3-2",
"@sentry/browser": "5.26.0",
2021-06-09 22:52:32 +05:30
"@sourcegraph/code-host-integration": "0.0.57",
2021-09-04 02:51:02 +05:30
@@ -96,7 +96,7 @@
"aws-sdk": "^2.637.0",
"axios": "^0.20.0",
"babel-loader": "^8.2.2",
- "babel-plugin-lodash": "^3.3.4",
+ "babel-plugin-lodash": "link:/usr/share/nodejs/babel-plugin-lodash",
2021-06-09 22:52:32 +05:30
"bootstrap": "4.5.3",
"cache-loader": "^4.1.0",
"clipboard": "^1.7.1",
2021-09-04 02:51:02 +05:30
@@ -130,29 +130,29 @@
"jquery": "^3.6.0",
"jquery.caret": "^0.3.1",
"jquery.waitforimages": "^2.2.0",
2020-04-08 15:34:39 +05:30
- "js-cookie": "^2.2.1",
- "js-yaml": "^3.13.1",
- "jszip": "^3.1.3",
- "jszip-utils": "^0.0.2",
2021-06-12 00:45:14 +05:30
- "katex": "^0.13.2",
- "lodash": "^4.17.20",
+ "js-cookie": "link:/usr/share/nodejs/js-cookie",
+ "js-yaml": "link:/usr/share/nodejs/js-yaml",
+ "jszip": "link:/usr/share/nodejs/jszip",
+ "jszip-utils": "link:/usr/share/nodejs/jszip",
2021-06-12 00:45:14 +05:30
+ "katex": "link:/usr/share/nodejs/katex",
+ "lodash": "link:/usr/share/nodejs/lodash",
2021-09-04 02:51:02 +05:30
"lowlight": "^1.20.0",
2020-04-08 15:34:39 +05:30
"marked": "^0.3.12",
2021-03-08 22:12:33 +05:30
"mathjax": "3",
2021-09-04 02:51:02 +05:30
"mermaid": "^8.10.2",
2021-04-30 00:10:56 +05:30
- "minimatch": "^3.0.4",
+ "minimatch": "link:/usr/share/nodejs/minimatch",
2020-07-29 00:16:15 +05:30
"monaco-editor": "^0.20.0",
2021-04-30 00:10:56 +05:30
"monaco-editor-webpack-plugin": "^1.9.1",
2021-01-29 14:51:13 +05:30
"monaco-yaml": "^2.5.1",
"mousetrap": "1.6.5",
- "pdfjs-dist": "^2.0.943",
+ "pdfjs-dist": "link:/usr/share/nodejs/pdfjs-dist",
2020-01-11 19:09:17 +05:30
"pikaday": "^1.8.0",
2020-04-08 15:34:39 +05:30
- "popper.js": "^1.16.1",
+ "popper.js": "link:/usr/share/nodejs/popper.js",
2021-06-09 22:52:32 +05:30
"portal-vue": "^2.1.7",
"prismjs": "^1.21.0",
2021-06-09 22:52:32 +05:30
"prosemirror-inputrules": "^1.1.3",
2021-04-17 20:43:06 +05:30
- "prosemirror-markdown": "^1.5.1",
- "prosemirror-model": "^1.13.3",
+ "prosemirror-markdown": "link:/usr/share/nodejs/prosemirror-markdown",
+ "prosemirror-model": "link:/usr/share/nodejs/prosemirror-model",
2020-02-23 17:54:41 +05:30
"raphael": "^2.2.7",
2021-03-11 21:09:22 +05:30
"raw-loader": "^4.0.2",
2021-06-09 22:52:32 +05:30
"scrollparent": "^2.0.1",
2021-09-04 02:51:02 +05:30
@@ -164,27 +164,26 @@
2021-06-09 22:52:32 +05:30
"style-loader": "^2.0.0",
2021-04-17 20:43:06 +05:30
"swagger-ui-dist": "^3.44.1",
"three": "^0.84.0",
- "three-orbit-controls": "^82.1.0",
+ "three-orbit-controls": "link:/usr/share/nodejs/three-orbit-controls",
"three-stl-loader": "^1.0.4",
- "timeago.js": "^4.0.2",
+ "timeago.js": "link:/usr/share/nodejs/timeago.js",
2021-04-17 20:43:06 +05:30
"tiptap": "^1.32.1",
"tiptap-extensions": "^1.35.1",
2021-04-30 00:10:56 +05:30
"url-loader": "^4.1.1",
- "uuid": "8.1.0",
+ "uuid": "link:/usr/share/nodejs/uuid",
"visibilityjs": "^1.2.4",
- "vue": "^2.6.12",
+ "vue": "link:/usr/share/nodejs/vue",
2020-05-24 23:50:06 +05:30
"vue-apollo": "^3.0.3",
2021-03-08 22:12:33 +05:30
"vue-loader": "^15.9.6",
2021-06-09 22:52:32 +05:30
"vue-observe-visibility": "^1.0.0",
"vue-resize": "^1.0.1",
2021-02-22 22:40:45 +05:30
"vue-router": "3.4.9",
- "vue-template-compiler": "^2.6.12",
+ "vue-template-compiler": "link:/usr/share/nodejs/vue-template-compiler",
2021-04-30 00:10:56 +05:30
"vue-virtual-scroll-list": "^1.4.7",
"vuedraggable": "^2.23.0",
2021-02-22 22:40:45 +05:30
"vuex": "^3.6.0",
"web-vitals": "^0.2.4",
2021-03-11 21:09:22 +05:30
"webpack": "^4.46.0",
2021-06-09 22:52:32 +05:30
- "webpack-bundle-analyzer": "^4.4.2",
2021-03-11 21:09:22 +05:30
"webpack-cli": "^3.3.12",
"webpack-stats-plugin": "^0.3.1",
"worker-loader": "^2.0.0",
--- a/babel.config.js
+++ b/babel.config.js
2021-04-17 20:43:06 +05:30
@@ -14,9 +14,12 @@
// include stage 3 proposals
const plugins = [
'@babel/plugin-syntax-import-meta',
+ '@babel/plugin-syntax-dynamic-import',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-json-strings',
'@babel/plugin-proposal-private-methods',
+ '@babel/plugin-proposal-optional-chaining',
+ '@babel/plugin-proposal-nullish-coalescing-operator',
2020-10-25 00:47:17 +05:30
// See: https://gitlab.com/gitlab-org/gitlab/-/issues/229146
'@babel/plugin-transform-arrow-functions',
'lodash',
--- a/app/assets/javascripts/pdf/index.vue
+++ b/app/assets/javascripts/pdf/index.vue
@@ -1,6 +1,6 @@
<script>
import pdfjsLib from 'pdfjs-dist/build/pdf';
-import workerSrc from 'pdfjs-dist/build/pdf.worker.min';
+import workerSrc from 'pdfjs-dist/build/pdf.worker';
import page from './page/index.vue';