Как вы запускаете electrojs через npx вместо запуска npm?

Я пытаюсь создать инициализатор npm с помощью electronicjs. Согласно документации по npm, чтобы создать инициализатор, ваш скрипт необходимо запускать с помощью npx.

Скрипты Electronjs требуют, чтобы они запускались с electron, а не команду node. Проблема в том, что npm init (npx) запускает команды в node. Я видел, что пакет electron-start каким-то образом достигает этого, но я не понимаю как.

Всякий раз, когда я пытаюсь выполнить const electron = require( 'electron' ) из команды node в PowerShell (вместо электрона), electron возвращает строку пути к исполняемому файлу, а не объект, содержащий свойства BrowserWindow или app.


person DaMaxContent    schedule 11.01.2021    source источник
comment
Это Шебанг на линии 1? Я думал, что шебанги не работают в Windows.   -  person DaMaxContent    schedule 11.01.2021


Ответы (1)


Ладно, я понял. Он плохо документирован и его трудно найти, однако я нашел строку кода, которая заставляет электрон-старт работать в Windows изнутри утилита npm's npx's 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)
    })
  })
}

Согласно npm на npx (package.json > "bin"), имея шебанг требуется как node как шебанг, и не упоминается его функциональность/наличие мерцания в Windows. В утилите cmd shim видно, что она берет любой шебанг и создает .cmd прокладку (прокладка в википедии) для этого.

Кредит: https://stackoverflow.com/a/10398567/10534510

person DaMaxContent    schedule 11.01.2021