Я создаю приложение, состоящее из частных репозиториев npm , встроенных в 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://git@mydomain.com: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.Может кто-нибудь сказать мне, как я мог заставить это работать?