Сделать скрипт узла, упакованный с помощью 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.