考虑sublime文本,您可以在其中安装或卸载插件。我想要我的应用程序,我想使用npm / github来做它。
也许我要求您的软件包以myapp-
开头,才能被视为我的应用的插件。如何基于此搜索npm,并将软件包安装/更新到我想要的文件夹(而不是node_modules),理想情况下,即使没有安装npm(使用http api?),它也应该可以工作。 / p>
我的应用程序的插件进入plugins/plugin-name
文件夹,我需要做的就是将他们的git源下载到该文件夹中
答案 0 :(得分:1)
我创建了一个解决类似问题的项目。请参阅live-plugin-manager。
您可以在运行时从npm安装,卸载和加载插件。
import {PluginManager} from "live-plugin-manager";
import * as path from "path";
const manager = new PluginManager({
pluginsPath: path.join(__dirname, "plugins")
});
async function run() {
await manager.installFromNpm("moment");
const moment = manager.require("moment");
console.log(moment().format());
await manager.uninstall("moment");
}
run();
在上面的代码中,我在运行时安装moment
包,加载并执行它。在这里我使用了typescript,但同样可以使用普通的javascript编写。
插件安装在PluginManager
构造函数中指定的目录内,如果未指定,则安装在plugins
目录中。
答案 1 :(得分:1)
我刚刚创建了一个很棒的模块,用于增强您的建议: https://www.npmjs.com/package/@kawix/core
您可以阅读README.md,为尝试理解用法,我将添加一个基本示例:
> npm install -g @kawix/core
> kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js"
这是文件https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js
的内容// this will download the npm module and make a local cache
import express from 'npm://express@^4.16.4'
var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
console.log("Listening on 3000")
答案 2 :(得分:0)
https://api-docs.npms.io/有一个用于搜索npm包的http API。
可以这样使用:https://api.npms.io/v2/search?q=keywords:myapp获取myapp的所有插件
要实际下载/安装npm软件包到任何文件夹,我找到了一个名为download-npm-package的npm软件包,它允许我在代码中执行它