summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Greiling <mike@pixelcog.com>2018-06-06 03:25:13 -0500
committerMike Greiling <mike@pixelcog.com>2018-06-07 16:35:34 -0500
commit6d96b9dd6be8d27d3030e7a6de08ec3ba419643e (patch)
tree0bd8b7d742677734ca563cfa02658d40fdc17f3b
parent41aa6bd8776570b491747b95c146255c0b58a870 (diff)
downloadgitlab-ce-6d96b9dd6be8d27d3030e7a6de08ec3ba419643e.tar.gz
add monaco-editor-webpack-plugin and update webpack config
-rw-r--r--app/assets/javascripts/ide/components/repo_editor.vue10
-rw-r--r--config/webpack.config.js36
-rw-r--r--package.json1
-rw-r--r--yarn.lock4
4 files changed, 12 insertions, 39 deletions
diff --git a/app/assets/javascripts/ide/components/repo_editor.vue b/app/assets/javascripts/ide/components/repo_editor.vue
index 93453989c08..5af0f142d5e 100644
--- a/app/assets/javascripts/ide/components/repo_editor.vue
+++ b/app/assets/javascripts/ide/components/repo_editor.vue
@@ -1,10 +1,9 @@
<script>
-/* global monaco */
import { mapState, mapGetters, mapActions } from 'vuex';
+import * as monaco from 'monaco-editor';
import flash from '~/flash';
import ContentViewer from '~/vue_shared/components/content_viewer/content_viewer.vue';
import { activityBarViews, viewerTypes } from '../constants';
-import monacoLoader from '../monaco_loader';
import Editor from '../lib/editor';
import ExternalLink from './external_link.vue';
@@ -87,11 +86,8 @@ export default {
if (this.editor && monaco) {
this.initMonaco();
} else {
- monacoLoader(['vs/editor/editor.main'], () => {
- this.editor = Editor.create(monaco);
-
- this.initMonaco();
- });
+ this.editor = Editor.create(monaco);
+ this.initMonaco();
}
},
methods: {
diff --git a/config/webpack.config.js b/config/webpack.config.js
index d6ab32972fb..e760ce1cb8c 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -4,8 +4,8 @@ const glob = require('glob');
const webpack = require('webpack');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const StatsWriterPlugin = require('webpack-stats-plugin').StatsWriterPlugin;
-const CopyWebpackPlugin = require('copy-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
+const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const ROOT_PATH = path.resolve(__dirname, '..');
@@ -168,15 +168,7 @@ module.exports = {
name: '[name].[hash:8].[ext]',
},
},
- {
- test: /monaco-editor\/\w+\/vs\/loader\.js$/,
- use: [
- { loader: 'exports-loader', options: 'l.global' },
- { loader: 'imports-loader', options: 'l=>{},this=>l,AMDLoader=>this,module=>undefined' },
- ],
- },
],
- noParse: [/monaco-editor\/\w+\/vs\//],
},
optimization: {
@@ -226,6 +218,9 @@ module.exports = {
// enable vue-loader to use existing loader rules for other module types
new VueLoaderPlugin(),
+ // automatically configure monaco editor web workers
+ new MonacoWebpackPlugin(),
+
// prevent pikaday from including moment.js
new webpack.IgnorePlugin(/moment/, /pikaday/),
@@ -235,29 +230,6 @@ module.exports = {
jQuery: 'jquery',
}),
- // copy pre-compiled vendor libraries verbatim
- new CopyWebpackPlugin([
- {
- from: path.join(
- ROOT_PATH,
- `node_modules/monaco-editor/${IS_PRODUCTION ? 'min' : 'dev'}/vs`
- ),
- to: 'monaco-editor/vs',
- transform: function(content, path) {
- if (/\.js$/.test(path) && !/worker/i.test(path) && !/typescript/i.test(path)) {
- return (
- '(function(){\n' +
- 'var define = this.define, require = this.require;\n' +
- 'window.define = define; window.require = require;\n' +
- content +
- '\n}.call(window.__monaco_context__ || (window.__monaco_context__ = {})));'
- );
- }
- return content;
- },
- },
- ]),
-
// compression can require a lot of compute time and is disabled in CI
IS_PRODUCTION && !NO_COMPRESSION && new CompressionPlugin(),
diff --git a/package.json b/package.json
index c2f0df0e6d4..a4ff583c6f7 100644
--- a/package.json
+++ b/package.json
@@ -65,6 +65,7 @@
"katex": "^0.8.3",
"marked": "^0.3.12",
"monaco-editor": "0.13.1",
+ "monaco-editor-webpack-plugin": "^1.2.1",
"mousetrap": "^1.4.6",
"pikaday": "^1.6.1",
"popper.js": "^1.14.3",
diff --git a/yarn.lock b/yarn.lock
index b10466bbf29..d953f7bb65e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5329,6 +5329,10 @@ moment@2.x, moment@^2.18.1:
version "2.19.2"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe"
+monaco-editor-webpack-plugin@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.2.1.tgz#577ed091420f422bb8f0ff3a8899dd82344da56d"
+
monaco-editor@0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.13.1.tgz#6b9ce20e4d1c945042d256825eb133cb23315a52"