Официальный путь — установка insales-uploader глобально. Но если я продвинутый пользователь и не хочу засорять глобальный скоуп пакетами и бинарником с очень общим названием uploader, в текущей версии есть баг определения пути до пакета insales-uploader.
Как воспроизвести
Создать новый NPM-проект:
$ mkdir foo
$ cd foo
$ yarn init
Установить insales-uploader
$ yarn add --dev insales-uploader
Инициализировать файл настроек:
$ which uploader
./node_modules/.bin/uploader
$ uploader init
Ожидаемое поведение
В текущей директории появляется insales-config.js
Действительное поведение
Краш:
Ошибка при создании файла настроек insales-config.js
{ NestedError: stat `/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js` failed: ENOENT: no such file or directory, stat '/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js'
at Object.exports.statSync.path [as statSync] (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/fs.js:82:9)
at copySyncNative (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:82:18)
at Function.module.exports.sync (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:149:3)
at Liftoff.invoke (/home/nailxx/devel/amperka-2018-theme/node_modules/insales-uploader/dist/cli/index.js:52:14)
at Liftoff.execute (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:203:12)
at module.exports (/home/nailxx/devel/amperka-2018-theme/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:195:5)
at /home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:165:9
at /home/nailxx/devel/amperka-2018-theme/node_modules/v8flags/index.js:114:14
at /home/nailxx/devel/amperka-2018-theme/node_modules/graceful-fs/graceful-fs.js:43:10
Caused By: Error: ENOENT: no such file or directory, stat '/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js'
at Object.fs.statSync (fs.js:955:11)
at Object.statSync (/home/nailxx/devel/amperka-2018-theme/node_modules/graceful-fs/polyfills.js:297:22)
at Object.exports.statSync.path [as statSync] (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/fs.js:80:13)
at copySyncNative (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:82:18)
at Function.module.exports.sync (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:149:3)
at Liftoff.invoke (/home/nailxx/devel/amperka-2018-theme/node_modules/insales-uploader/dist/cli/index.js:52:14)
at Liftoff.execute (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:203:12)
at module.exports (/home/nailxx/devel/amperka-2018-theme/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:195:5)
at /home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:165:9
nested:
{ Error: ENOENT: no such file or directory, stat '/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js'
at Object.fs.statSync (fs.js:955:11)
at Object.statSync (/home/nailxx/devel/amperka-2018-theme/node_modules/graceful-fs/polyfills.js:297:22)
at Object.exports.statSync.path [as statSync] (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/fs.js:80:13)
at copySyncNative (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:82:18)
at Function.module.exports.sync (/home/nailxx/devel/amperka-2018-theme/node_modules/cp-file/index.js:149:3)
at Liftoff.invoke (/home/nailxx/devel/amperka-2018-theme/node_modules/insales-uploader/dist/cli/index.js:52:14)
at Liftoff.execute (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:203:12)
at module.exports (/home/nailxx/devel/amperka-2018-theme/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:195:5)
at /home/nailxx/devel/amperka-2018-theme/node_modules/liftoff/index.js:165:9
errno: -2,
code: 'ENOENT',
syscall: 'stat',
path: '/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js' },
errno: -2,
code: 'ENOENT',
syscall: 'stat',
path: '/home/nailxx/devel/amperka-2018-theme/dist/options/defaults.js',
name: '
Как пофиксил
Вместо appRoot просто использовал __dirname, который нельзя запутать сторонними package.json.
Официальный путь — установка
insales-uploader
глобально. Но если я продвинутый пользователь и не хочу засорять глобальный скоуп пакетами и бинарником с очень общим названиемuploader
, в текущей версии есть баг определения пути до пакетаinsales-uploader
.Как воспроизвести
insales-uploader
Ожидаемое поведение
insales-config.js
Действительное поведение
Краш:
Как пофиксил
Вместо
appRoot
просто использовал__dirname
, который нельзя запутать стороннимиpackage.json
.