瀏覽代碼

expose global app instanse with command-line option

Mehmet Bektas 5 年之前
父節點
當前提交
e4ae93c513
共有 4 個文件被更改,包括 18 次插入4 次删除
  1. 5 2
      dev_mode/index.js
  2. 1 0
      jupyterlab/extension.py
  3. 7 0
      jupyterlab/labapp.py
  4. 5 2
      jupyterlab/staging/index.js

+ 5 - 2
dev_mode/index.js

@@ -101,8 +101,11 @@ function main() {
   register.forEach(function(item) { lab.registerPluginModule(item); });
   lab.start({ ignorePlugins: ignorePlugins });
 
-  // Expose global lab instance when in dev mode.
-  if ((PageConfig.getOption('devMode') || '').toLowerCase() === 'true') {
+  // Expose global lab instance when in dev mode or when toggled explicitly.
+  var exposeGlobal = (PageConfig.getOption('exposeGlobal') || '').toLowerCase() === 'true';
+  var devMode = (PageConfig.getOption('devMode') || '').toLowerCase() === 'true';
+
+  if (exposeGlobal || devMode) {
     window.lab = lab;
   }
 

+ 1 - 0
jupyterlab/extension.py

@@ -147,6 +147,7 @@ def load_jupyter_server_extension(nbapp):
 
     # Client-side code assumes notebookVersion is a JSON-encoded string
     page_config['notebookVersion'] = dumps(version_info)
+    page_config['exposeGlobal'] = nbapp.expose_global
 
     if nbapp.file_to_run and type(nbapp).__name__ == "LabApp":
         relpath = os.path.relpath(nbapp.file_to_run, nbapp.notebook_dir)

+ 7 - 0
jupyterlab/labapp.py

@@ -396,6 +396,10 @@ lab_flags['watch'] = (
     {'LabApp': {'watch': True}},
     "Start the app in watch mode."
 )
+lab_flags['expose-global'] = (
+    {'LabApp': {'expose_global': True}},
+    "Expose the global app instance to browser via window.lab"
+)
 
 
 class LabApp(NotebookApp):
@@ -476,6 +480,9 @@ class LabApp(NotebookApp):
     watch = Bool(False, config=True,
         help="Whether to serve the app in watch mode")
 
+    expose_global = Bool(False, config=True,
+        help="Whether to expose the global app instance to browser via window.lab")
+
     def init_webapp(self, *args, **kwargs):
         super().init_webapp(*args, **kwargs)
         settings = self.web_app.settings

+ 5 - 2
jupyterlab/staging/index.js

@@ -102,8 +102,11 @@ function main() {
   register.forEach(function(item) { lab.registerPluginModule(item); });
   lab.start({ ignorePlugins: ignorePlugins });
 
-  // Expose global lab instance when in dev mode.
-  if ((PageConfig.getOption('devMode') || '').toLowerCase() === 'true') {
+  // Expose global lab instance when in dev mode or when toggled explicitly.
+  var exposeGlobal = (PageConfig.getOption('exposeGlobal') || '').toLowerCase() === 'true';
+  var devMode = (PageConfig.getOption('devMode') || '').toLowerCase() === 'true';
+
+  if (exposeGlobal || devMode) {
     window.lab = lab;
   }