Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

你需要的是使用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");
  });
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...