如何在electron中集成npm或者说node

如何在electron中集成npm或者说node

主要会执行命令行调用npm install 和 run
而用户的电脑不一定会有Node环境
所以想集成进去
目前有下载好Node文件放进去,调用execFile
以及一切Node执行命令的API都试过
都是开发环境无任何问题 打包后(并且删掉本地的node模拟无node环境)就不行
请各位大佬指点

阅读 276
评论
    2 个回答

    你需要的是使用npm的能力。
    npm本身属于nodejs的一个模块,所以你问题其实可以分成两个来问。

    1,如何在客户机上静默安装nodejs并设置好相应的环境变量。
    2,如何以编程方式启动npm

    第一种方式跟平台紧密相关,实现以及后续维护都比较繁琐,好处是有一个完整独立的nodejs环境。
    因为electron自身集成了nodejs,让第二种方法成为可能。

    给你一个简单的例子
    首先在你electron项目中本地安装npm

    npm install npm

    之后就可以在业务代码中像普通模块一样使用npm

    const { writeFileSync, mkdirSync, existsSync } = require("fs");
    const { resolve } = require("path");
    const npm = require("npm");
    const { homedir } = require("os");
    
    // 建立一个目标文件夹, 并切换到此路径
    const dest = resolve(homedir(), "test");
    if (!existsSync(dest)) mkdirSync(dest);
    process.chdir(dest);
    
    // 写入package.json
    writeFileSync(
      resolve(dest, "package.json"),
      JSON.stringify({
        scripts: {
          test: "echo hello npm",
        },
      })
    );
    
    npm.load({}, (err) => {
      // npm run
      npm.run("test");
    
      // npm install
      npm.commands.install(["typescript"], (err) => {
        console.log(err || "done");
      });
    });