insales / insales-uploader

Менеджер ассетов для платформы InSales.
https://insales.github.io/insales-uploader/
MIT License
12 stars 5 forks source link

Команда `init` крашится, если запущена из директории содержащей `package.json` #5

Closed nkrkv closed 6 years ago

nkrkv commented 6 years ago

Официальный путь — установка insales-uploader глобально. Но если я продвинутый пользователь и не хочу засорять глобальный скоуп пакетами и бинарником с очень общим названием uploader, в текущей версии есть баг определения пути до пакета insales-uploader.

Как воспроизвести

  1. Создать новый NPM-проект:
    $ mkdir foo
    $ cd foo
    $ yarn init
  2. Установить insales-uploader
    $ yarn add --dev insales-uploader
  3. Инициализировать файл настроек:
    $ which uploader
    ./node_modules/.bin/uploader
    $ uploader init

Ожидаемое поведение

Действительное поведение

Краш:

Ошибка при создании файла настроек 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.