Как обновить non-npm-package в моем пакете npm перед установкой?Использование подмодулей git без npm-пакетов в пакетах npm
Я использую git и имею модуль node.js, который зависит от внешнего проекта, размещенного в репозитории git. Я добавил внешний проект в качестве подмодуля, и теперь я пытаюсь сделать пакет npm.
Поскольку внешняя зависимость не является пакет NPM (ни модуль узла), я думаю, что я не могу использовать npm submodule
команды, поэтому я придумал this Preinstall сценарий в package.json
файле:
"scripts": { "preinstall" : "git submodule update --init"}
Когда Я исполняю npm install
в директории пакета, он отлично работает, но когда я пытаюсь установить пакет непосредственно из моего удаленного хранилища мерзавца или тарболе сделал с npm pack
, я получаю следующее сообщение об ошибке:
You need to run this command from the toplevel of the working tree.
я также пытался (как сказано в сообщении об ошибке):
"scripts": { "preinstall" : "cd $(git rev-parse --show-toplevel) && git submodule update --init"}
Это один не показывает никаких ошибок, но и не обновляет подмодуль в каталоге пакета.
Любая помощь будет оценена по достоинству.
Вы уверены, что извлеченный пакет не есть каталог '.git'? Если это так, я должен иметь возможность инициализировать репозиторий 'git', и поскольку' .gitmodules' уже существует, я могу просто обновить git 'subodules'. – fardjad
Я уверен. .git не является частью файла 'npm pack'. Запуск 'git init' может работать. Стоит сделать снимок. Как потребитель в npm, я не уверен, что мне бы хотелось получить другой код для данной версии, но если это для вашего собственного использования, и вы в порядке с этим, то уверен. –
Я попробовал 'git init', и он инициализировал пустой репозиторий git. Но мне пришлось снова добавить «подмодули» вручную; Кажется, что '.gitmodules' в репозитории недостаточно для' git' для распознавания 'подмодулей'. Наконец, я сменил сценарий предварительной установки пакета на 'git clone git: // path/to/remote/repo', а также добавил имя удаленного каталога репозитория в' .npmignore', и теперь все работает нормально. – fardjad