Сделать скрипт узла, упакованный с помощью zeit-pkg, осведомленным о полной файловой системе

У меня есть скрипт узла, который использует параметры командной строки, используя модуль commander,

Я хочу упаковать это с pkg, но у меня проблемы.

Обычно я выполняю свой скрипт с:

node index.js --file ./test.csv

но аргумент file может указывать на любую папку в файловой системе пользователя.

Я смотрел в настройке assets а также scripts атрибуты для pkg в package.json, но, похоже, вам нужно указать там папку, например:

"pkg": {
    "scripts": "build/**/*.js",
    "assets": "views/**/*"
  }

Как сделать так, чтобы сценарий упакованного узла zeit-pkg знал о любом возможном местоположении в файловой системе?

Я просто строю с pkg package.json, так как в package.json У меня есть запись:

"bin" : "index.js"

1 ответ

Решение

В вашем pkg-упакованном источнике добавьте это в начале:

console.log("process.cwd() = " + process.cwd());

Когда вы запустите упакованный exe-файл, он скажет вам, что ваш исполняемый файл видит в качестве рабочего каталога. Затем вы можете интерпретировать любые относительные arg-пути вашего приложения (например, "./index.csv") относительно этого.

Исходя из моих экспериментов, кажется, что pkg-приложения имеют полный доступ к файловой системе, если ваша программа знает абсолютные пути к файлам, которые вы хотите прочитать или записать или даже "потребовать".

Единственная хитрая вещь, кажется, относительные пути. Причина в том, что pkg хочет, чтобы вы могли упаковывать файлы ресурсов / ресурсов в исполняемый файл и затем обращаться к ним, как к любому файлу во время выполнения. На самом деле это отличная функция, но часто больше, чем вам нужно.

Если вам не нужно упаковывать какие-либо (дополнительные) файлы в ваш исполняемый файл, тогда доступ к файловой системе должен быть простым и работать как обычно с абсолютными путями. Вам просто нужно знать "где вы находитесь", если вы хотите использовать относительные пути.

Я не связан с проектом pkg, поэтому мой ответ никоим образом не является авторитетным. Я надеюсь, что Zeit разместит на своем сайте больше документации о доступе к файловой системе, особенно кроссплатформенной. После того, как я сам немного поэкспериментировал, кажется, что доступ к файлам по их абсолютным путям работает в Windows.

Другие вопросы по тегам