mirror of
https://github.com/Eugeny/tabby.git
synced 2025-09-24 17:16:03 +00:00
avoid importing npm until required
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
import npm from 'npm'
|
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { Observable, from } from 'rxjs'
|
import { Observable, from } from 'rxjs'
|
||||||
import { map } from 'rxjs/operators'
|
import { map } from 'rxjs/operators'
|
||||||
@@ -29,21 +28,33 @@ export class PluginManagerService {
|
|||||||
installedPlugins: IPluginInfo[] = (window as any).installedPlugins
|
installedPlugins: IPluginInfo[] = (window as any).installedPlugins
|
||||||
|
|
||||||
private npmReady: Promise<void>
|
private npmReady: Promise<void>
|
||||||
|
private npm: any
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
log: LogService,
|
log: LogService,
|
||||||
) {
|
) {
|
||||||
this.logger = log.create('pluginManager')
|
this.logger = log.create('pluginManager')
|
||||||
this.npmReady = new Promise(resolve => {
|
}
|
||||||
npm.load({
|
|
||||||
prefix: this.userPluginsPath,
|
async getNPM () {
|
||||||
}, err => {
|
if (!this.npm) {
|
||||||
if (err) {
|
if (!this.npmReady) {
|
||||||
this.logger.error(err)
|
this.npmReady = new Promise(resolve => {
|
||||||
}
|
const npm = (window as any).nodeRequire('npm')
|
||||||
resolve()
|
npm.load({
|
||||||
})
|
prefix: this.userPluginsPath,
|
||||||
})
|
}, err => {
|
||||||
|
if (err) {
|
||||||
|
this.logger.error(err)
|
||||||
|
}
|
||||||
|
this.npm = npm
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
await this.npmReady
|
||||||
|
}
|
||||||
|
return this.npm
|
||||||
}
|
}
|
||||||
|
|
||||||
listAvailable (query?: string): Observable<IPluginInfo[]> {
|
listAvailable (query?: string): Observable<IPluginInfo[]> {
|
||||||
@@ -68,8 +79,7 @@ export class PluginManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async installPlugin (plugin: IPluginInfo) {
|
async installPlugin (plugin: IPluginInfo) {
|
||||||
await this.npmReady
|
(await this.getNPM()).commands.install([`${plugin.packageName}@${plugin.version}`], err => {
|
||||||
npm.commands.install([`${plugin.packageName}@${plugin.version}`], err => {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
this.logger.error(err)
|
this.logger.error(err)
|
||||||
}
|
}
|
||||||
@@ -79,8 +89,7 @@ export class PluginManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async uninstallPlugin (plugin: IPluginInfo) {
|
async uninstallPlugin (plugin: IPluginInfo) {
|
||||||
await this.npmReady
|
(await this.getNPM()).commands.remove([plugin.packageName], err => {
|
||||||
npm.commands.remove([plugin.packageName], err => {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
this.logger.error(err)
|
this.logger.error(err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user