Фаза сборки NPM моего пакета не выполнена во время установки - PullRequest
0 голосов
/ 02 сентября 2018

Я разрабатываю пакет для использования веб-работников в общем виде , но я нахожу некоторые проблемы при попытке добавить его в качестве зависимости для другого проекта.

Обычно я ожидал бы, что с секцией сценария моего package.json раздела при выполнении install будет автоматически вызвано генерирование вывода rollup.config.js. Но, похоже, ничего не выполняет. Есть ли у меня какое-то недопонимание о том, как npm build должен работать?

Если нет, то в package.json есть любой другой конфликтующий скрипт, который заставляет его не работать в следующем примере файла:

{
 "name": "web-threads",
  "version": "1.0.5",
  "description": "generic threads using web workers for the web",
  "main": "dist/web-threads.js",
  "scripts": {
    "build": "rollup -c",
    "test": "jest",
    "test:dev": "jest --watchAll test/unit",
    "test:int": "jest test/integration",
    "test:cov": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
    "push": "yarn test && git push",
    "deploy:major": "yarn version --major",
    "deploy:minor": "yarn version --minor",
    "deploy:patch": "yarn version --patch",
    "deploy:push": "git push && git push --tags",
    "preversion": "yarn test"
  },
  "keywords": [""],
  "repository": "",
  "author": "",
  "license": "MIT",
  "private": false,
  "devDependencies": {
    "babel-jest": "23.4.2",
    "babel-preset-env": "1.7.0",
    "babel-preset-stage-0": "6.24.1",
    "coveralls": "3.0.2",
    "faker": "4.1.0",
    "jest": "23.5.0",
    "jest-puppeteer": "3.3.1",
    "puppeteer": "1.7.0",
    "rollup": "0.65.0",
    "rollup-plugin-babel": "3.0.7",
    "rollup-plugin-uglify": "4.0.0",
    "uglify-es": "3.3.9"
  },
  "babel": {
    "presets": ["env","stage-0"]
  },
  "jest": {
    "testMatch": [
      "**/test/**/*-test.js"
    ],
    "transform": {
      "^.+\\.jsx|.js?$": "babel-jest"
    }
  }
}

Я также переместил зависимости, чтобы они не были devDependencies, но это не помогло решить проблему.

Документация по сборке NPM: https://docs.npmjs.com/cli/build

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Так что ответ @ Olian04 пошли мне в правильном направлении и немного покопался в документации. Действительно, у меня было недопонимание относительно build , поскольку на самом деле это не script, а просто hook на стадии процесса.

Таким образом, правильный способ решения проблемы компиляции, требуемой в пакетах, - это другой процесс, выполняемый prepare . Это скрипт, который документация определяет как:

Для шагов сборки, не зависящих от платформы, таких как компиляция CoffeeScript или других языков в JavaScript, используйте для этого сценарий prepare и сделайте требуемый пакет devDependency.

Сценарий подготовки будет запущен перед публикацией, чтобы пользователи могли использовать эту функциональность, не требуя, чтобы они сами ее скомпилировали. В режиме разработки (то есть при локальном запуске npm install) он также запустит этот скрипт, чтобы вы могли легко его протестировать.

Пример:

{ "name": "web-threads",
  "description": "a delightfully fruity coffee varietal",
  "version": "1.2.3",
  "devDependencies": {
    "coffee-script": "~1.6.3"
  },
  "scripts": {
    "prepare": "coffee -o lib/ -c src/waza.coffee"
  },
  "main": "lib/waza.js"
}

В качестве резюме используйте postinstall для вещей, которые должны происходить локально с установочным компьютером / платформой (но это потребует удовлетворения всех зависимостей). Используйте prepare для процесса, который не зависит от платформы. Это не потребует от пользователя наличия всех инструментов для трансляции пакета, и вы также не будете загрязнять свой репозиторий.

0 голосов
/ 02 сентября 2018

Вы можете попробовать добавить скрипт postinstall. Как документировано в npm документах

postinstall: запустить ПОСЛЕ установки пакета.

...