我正在尝试用electronjs制作一个npm初始值设定项。根据npm文档,要制作初始值设定项,您的脚本需要使用npx启动。
Electronjs脚本要求使用electron
命令而不是node
命令来启动它们。问题是npm init(npx(在node
中启动命令。我看到electron-start
包以某种方式实现了这一点,但我不明白是怎么做到的。
每当我尝试从PowerShell中的node
命令(而不是电子(访问const electron = require( 'electron' )
时,electron
都会向可执行文件返回一个路径字符串,而不是包含BrowserWindow
或app
属性的对象。
好的,我明白了。它的文档很差,很难找到,但我在npm的npx的cmd-shim实用程序中找到了导致电子开始在窗口上工作的代码行。:
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) }) }) }
根据npx
(package.json > "bin"
(上的npm,发现node
可执行文件为"0";必需"这不是真的。虽然shebang-ing是必需的,但节点可执行文件可以在Windows上交换。你可以在这里看到微光带走了任何shebang(维基百科上的垫片(。