0

我正在尝试使用 electronjs 制作一个 npm 初始化程序。根据npm 文档,要制作初始化程序,您的脚本需要使用 npx 启动。

Electronjs 脚本要求它们以electron命令而不是node命令启动。问题是 npm init (npx) 在node. 我看到这个electron-start包以某种方式实现了这一点,但我不明白如何。

每当我尝试const electron = require( 'electron' )nodePowerShell(而不是电子)中的命令时,electron返回可执行文件的路径字符串,而不是包含BrowserWindowapp属性的对象。

4

1 回答 1

0

好,我知道了。它的文档记录很差,很难找到,但是我找到了导致 electron-start 在npm 的 npx 的 cmd shim 实用程序中在 windows 上工作的代码行。


var ...
  , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/

...

function writeShim (from, to, cb) {
  // make a cmd file and a sh script
  // First, check if the bin is a #! of some sort.
  // If not, then assume it's something that'll be compiled, or some other
  // sort of script, and just call it directly.
  mkdir(path.dirname(to), function (er) {
    if (er)
      return cb(er)
    fs.readFile(from, "utf8", function (er, data) {
      if (er) return writeShim_(from, to, null, null, cb)
      var firstLine = data.trim().split(/\r*\n/)[0]
        , shebang = firstLine.match(shebangExpr)           //<-- matched here
      if (!shebang) return writeShim_(from, to, null, null, cb)
      var prog = shebang[1]
        , args = shebang[2] || ""
      return writeShim_(from, to, prog, args, cb)
    })
  })
}

根据 npm on npx( package.json > "bin"),shebang-ingnode可执行文件是“必需的”。这不是真的。虽然需要 shebang-ing,但可以在 Windows 上换出节点可执行文件。你可以在这里看到微光带任何shebang (维基百科上的 shim)

信用:https ://stackoverflow.com/a/10398567/10534510

于 2021-01-11T09:18:11.043 回答