Я создаю приложение, состоящее из private npm repos, встроенного в CoffeeScript. Чтобы сохранить язык развертывания-агностик и разрешить каждому приложению указывать свою версию CoffeeScript, я включаю CoffeeScript в качестве зависимости в каждой библиотеке и создаю JavaScript при установке npm.
npm установка отлично работает для автономных репозиториев, но не работает, когда я пытаюсь установить репо, которое зависит от построенного другого репо.
Итак, если у меня repo-a
, чей package.json
включает в себя следующее:
"dependencies": {
"coffee-script": "~1.2.0"
},
"scripts": {
"install": "./node_modules/coffee-script/bin/cake install"
}
и repo-b
, чья package.json
включает в себя следующее:
"dependencies": {
"coffee-script": "~1.2.0",
"repo-a": "git+ssh://[email protected]:myrepo.git"
},
"scripts": {
"install": "./node_modules/coffee-script/bin/cake install"
}
где оба имеют Cakefile
, который выглядит следующим образом: с задачей install
, вызванной при вызове npm install
:
{print} = require "util"
{spawn} = require "child_process"
coffee = "./node_modules/coffee-script/bin/coffee"
echo = (child) ->
child.stdout.on "data", (data) -> print data.toString()
child.stderr.on "data", (data) -> print data.toString()
child
install = (cb) ->
console.log "Building..."
echo child = spawn coffee, ["-c", "-o", "lib", "src"]
child.on "exit", (status) -> cb?() if status is 0
task "install", "Install, build, and test repo", install
npm install
работает для repo-a
, но с ошибкой repo-b
с этим сообщением:
sh: ./node_modules/coffee-script/bin/cake: No such file or directory
в этот момент в node_modules
существует недоработанный каталог ___coffee-script.npm
.
Конечно, было бы гораздо проще использовать app.js обертку, но мне нужно развернуть JavaScript, а не CoffeeScript. Может ли кто-нибудь сказать мне, как я могу заставить это работать?