Пакет устанавливается нормально как зависимость от реестра NPM, но не от URL GitHub? - PullRequest
0 голосов
/ 11 июня 2018

ПРЕДИСЛОВИЕ : Репозиторий, который я разветвлял из , прекрасно устанавливает через NPM, когда я устанавливаю его как пакет из реестра NPM.В настоящее время я полагаю, что существует некоторая разница между тем, как устанавливаются каталоги при установке пакета из реестра, в отличие от установки непосредственно из URL-адреса GitHub в файле package.json , и этовызывая оператор require () , который пытается найти модуль babel-register для сбоя во время выполнения сценария prepack . Если кто-то может указать мне на документ, который четко объясняет шаги, предпринимаемые NPM при установке пакета из реестра NPM, это может помочь мне понять это.

У меня есть репозиторий GitHub, которыйЯ разветвился:

 https://github.com/roschler/zos-cli

Я пытаюсь установить пакет как зависимость в моем пакете Node.JS, используя, как мне кажется, правильный формат для ссылки на репозиторий и ветку GitHub, как показано ниже в моем package.json file:

{
    "name": "basil",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "build": "webpack --mode production"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
      "openzeppelin-zos": "^1.9.1"
    },
    "devDependencies": {
      "ajv": "^6.5.1",
      "babel-core": "^6.26.3",
      "babel-loader": "^7.1.4",
      "babel-preset-env": "^1.7.0",
      "babel-preset-react": "^6.24.1",
      "babel-register": "^6.26.0",
      "webpack": "^4.12.0",
      "webpack-cli": "^3.0.3",
      "zos": "roschler/zos-cli.git#development"
    }
}

Однако, когда я выполняю npm install после внесения этого изменения, я получаю следующую ошибку:

$  npm install

> zos@1.0.0 prepack /home/robert/.npm/_cacache/tmp/git-clone-d4bae66a
> truffle compile && rm -rf lib && babel src --out-dir lib

Error: Cannot find module 'babel-register'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
    at Function.Module._load (internal/modules/cjs/loader.js:520:25)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/robert/.npm/_cacache/tmp/git-clone-d4bae66a/truffle.js:1:63)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)

Я дважды проверил, и необходимые элементы babel находятся в подкаталоге node_modules моего проекта:

$ find . -regex .*?babel-register
./node_modules/babel-register

Затем я попытался установить Babelглобальная версия командной строки, и если вы посмотрите на мой package.json файл, я попытался установить версию Node API в свой проект согласно их документам:

https://babeljs.io/blog/2015/10/31/setting-up-babel-6

$ npm install --global babel-cli
$ npm install --save-dev babel-core

И я все еще получаюточно такая же ошибка вывода.Почему он по-прежнему жалуется на невозможность найти babel-register и как я могу это исправить?

UPDATE : я попытался выполнить полную глобальную установку, как показано ниже, иУ меня все еще есть та же самая ошибка:

npm install -g ajv
npm install -g webpack
npm install -g webpack-cli
npm install -g babel-loader babel-core babel-preset-env babel-preset-react babel-register

# Created a .babelrc file in my project directory with this content:
{
  "presets": [
    ["env", {
      "targets": {
        "node": "8.9"
      }
    }],
    "react"
  ],
  "plugins": ["transform-object-rest-spread"]
}

ОБНОВЛЕНИЕ 2 : Нашел эту страницу в регистре Вавилона:

https://new.babeljs.io/docs/en/next/babel-register.html

ПопробовалРекомендуемая установка npm:

npm install @babel/core @babel/register --save-dev

Все еще не повезло.

1 Ответ

0 голосов
/ 11 июня 2018

Что происходит, zos-cli имеет скрипт prepack, который требует установки devDependencies пакета.prepack запускается при установке git-зависимости (https://docs.npmjs.com/misc/scripts),, однако devDependencies устанавливаются только тогда, когда пакет является корневым пакетом (https://docs.npmjs.com/files/package.json#devdependencies).). Таким образом, вы фактически пытаетесь создать zos-cli безинструменты сборки.

Проще говоря, установка этого модуля как есть, поскольку git-зависимость не будет работать.

Некоторые возможные решения:

  1. (предпочтительно) На самом делеопубликуйте модуль и используйте его (вы можете разветвляться и публиковаться в своем собственном пространстве имен NPM, если есть лицензия)
  2. Разветвить проект на github и настроить ветку, в которой вы уже запустили npm i; npm run prepack;, а затем удалить prepack из пакета. json.
...