2016-11-30 3 views
1

Я тестирую скрипты npm для создания зависимости проекта.Подготовительные работы не работают как ожидалось

Моя идея взята из https://github.com/ParsePlatform/parse-server, которая произвела на меня впечатление кодом в репозитории, а не кодом в node_modules после npm install.

Ниже моя структура

src/index.js 
package.json 

testmodule и это мое содержание package.json

{ 
    "name": "testmodule", 
    "version": "1.0.0", 
    "description": "", 
    "main": "lib/index.js", 
    "scripts": { 
    "build": "babel src/ -d lib/", 
    "prepublish": "npm run build" 
    }, 
    "devDependencies": { 
    "babel-cli": "^6.18.0", 
    "babel-core": "^6.18.2" 
    } 
} 

и это структура ожидать после запуска npm install testmodule

node_modules/testmodule/lib/index.js 
node_modules/testmodule/package.json 

который ЦСИ папке не должно быть здесь.

Но после того, как я запустил npm install, это точно так же, как при нажатии на мой репозиторий git.

Пожалуйста, обратите внимание, что я использую GitLab на своем собственном сервере.

Так что мои вопросы:

  1. Есть что-нибудь, что я не хватает, чтобы сделать prepublish бежать?

  2. Какая часть кода синтаксического анализа делает папку src и другие файлы там не после установки?

ответ

0

Как вы работаете npm install?

В соответствии с documentation on npm scripts, сценарий предварительной публикации запускается «ДО того, как пакет опубликован (также выполняется на локальной установке npm без каких-либо аргументов.)». Кажется очевидным, что сценарий prepublish работает только на npm publish или npm install <local directory>.

Если вы пытаетесь установить прямо с вашего локального сервера gitlab по URL-адресу, это будет не Работа - сценарий не будет запущен. Решение было бы установить локально, если вы не захотите открывать исходный код своего пакета &, чтобы отправить его в репозиторий npm или заплатить за частный репозиторий npm. Это то, что я сделал во время разработки пакетов, прежде чем они будут готовы к публикации.

+0

Получил это для предварительной публикации. Спасибо. Но подумайте, как parse-server удаляет src, папку ресурсов и другой файл во время публикации? – Simon

+0

FWIW, я ничего не знаю о parse-сервере, но похоже, что пакет установлен из репозитория npm. Поэтому в какой-то момент разработчик сделал «npm publish» и переместил код в репозиторий npm. И вот тогда запускается скрипт распараллеливания синтаксического анализа. – Kryten