2012-12-31 5 views
24

私はYeomanとExpressで実行している例を得ようとしたいと思います。Yeoman inside ExpressJS

私は次のように試してみましたが、「大丈夫ですが、私はルートをマージしています。

mkdir test 
cd test 
express 
mkdir app 
cd app 
mkdir js 
cd js 
yeoman angular 

(読みやすくするために簡略化上)それから私は、「出力を:DIST」に変更する「出力:../../パブリック」Gruntfile.js

では今、両方のサーバーが自分で大丈夫実行します(例えば、yeomanサーバーとノードapp.js)。私はまた、 'yeoman build'を実行して、Expressアプリケーションで縮小されたJSを/ publicに出力することができます。

ルートがどのようにマージされるか少し不安ですか?明示的ルートではなく角度ルートをプルアップしたいと思います。ギュタブの角度表現シードの例は大丈夫ですが、私はまだYeomanがプロジェクトに統合されたことを望みます。

何か提案がありがとうございます。

答えて

23

私はヨーマン+ expressjsため、この構造をお勧めします:

mkdir app 
cd app 
yeoman angular 
express . 

だからあなたのディレクトリツリーは次のようになります。

. 
├── app 
│   ├── 404.html 
│   ├── favicon.ico 
│   ├── index.html 
│   ├── robots.txt 
│   ├── scripts 
│   │   ├── controllers 
│   │   │   └── main.js 
│   │   ├── vendor 
│   │   │   ├── angular.js 
│   │   │   ├── angular.min.js 
│   │   │   ├── es5-shim.min.js 
│   │   │   └── json3.min.js 
│   │   └── yeoman-test.js 
│   ├── styles 
│   │   └── main.css 
│   └── views 
│    └── main.html 
├── app.js 
├── Gruntfile.js 
├── package.json 
├── public 
│   ├── images 
│   ├── javascripts 
│   └── stylesheets 
│    └── style.css 
├── routes 
│   ├── index.js 
│   └── user.js 
├── test 
│   ├── lib 
│   │   └── angular-mocks.js 
│   └── spec 
│    └── controllers 
│     └── main.js 
├── testacular.conf.js 
└── views 
    ├── index.jade 
    └── layout.jade 

あなたは今、冗長publicディレクトリを削除することができます(私たちが行っています代わりにappから配信する):

rm -rf public 

dがになったら、静的ファイルを提供するdirを変更する必要があります。これに

app.use(express.static(path.join(__dirname, 'public'))); 

:この行に変更

app.use(express.static(path.join(__dirname, 'app'))); 

をそして、それはそれであるべきです。 views/index.jadeには1つ、app/index.htmlには2つの「インデックス」ファイルがあります。現在、app/index.htmlを削除すると、yeomanが壊れてしまうので、app/index.jadeのルートを削除し、index.htmlに編集してください。

希望すると便利です。

+0

Yeoman 1.0の新リリースはこれがまだ有効かどうかは不思議ですが、また、Yeomanが* .jadeファイルを作成してアプリケーションフォルダに出力するように設定できるかどうか – Siyfion

+1

@Siyfionこれはまだ有効ですが、不平等は壊れているようです(理由は分かりません)。私はYeomanでより多くの玉の愛を見たいと思う。 – jjperezaguinaga

+4

新しい人とはほぼ同じです。それは今や "角張った"ものであり、package.jsonが生成されています。 express initを実行する前に、その名前を "package_yo.json"に変更して、express initがそれを上書きしないようにします。 express initを実行し、package.jsonのexpressとjadeの依存関係をpackage_yo.jsonにコピーし、package.jsonを削除して、package_yo.jsonの名前をpackage.jsonに戻します。 yeomanをyo、bower、gruntに分割することで、あなたがやりたいと思っているもののためにビルドプロセスを変更するのがはるかに簡単です.- Gruntfile.jsは非常にうまく構成されています。 – Nick

8

はここ

yo angular 

更新は「公共」から「アプリ」から設定を変更するにはGruntfile.js別のわずかに異なる設定です。

次いで

express . 

オープンapp.jsを行うと、このapp.get( '/'、routes.index)等のNOルートマッピングが存在しないことを確認。 これは、ノードサーバーが実際に「grunt server」を実行しているときに読み込まれる同じファイルであるindex.htmlを実際に提供するためです。 代わりにindex.htmlをのindex.jadeロードしようと、まだ発現するが、:

今、私はこのソリューションのトラブルを抱えている先に行くと、公開ディレクトリを削除してから、公共

rm -rf public 
mv app public 
+0

私にはもっと最新のものがあるようです。これをしばらく試してみよう。 – Saab

+0

私がこれに広告するのは、混乱を避けるためにexpress 'app.jsをserver.jsに変更することだけです – dustinmm80

0

にappディレクトリを移動しますlocalhost:3000/index.html expressと入力すれば正しく表示されます。 私はapp.jsからこの行を削除する解決:

//app.get('/', routes.index); 

は、この情報がお役に立てば幸いです。私は評判があった場合は共有するためのおかげで、 D.

1

私は@btfordの答えにコメントです -

ちょうどyo angularexpress .をインストールすると、どの作男が作成したpackage.jsonファイルを上書きすることを追加したいです@jjperezaguinagaが報告したように不平を言うでしょう。

express .をインストールする前に、package.jsonのコピーを保存してください。その後、元のpackage.jsonに次の依存関係を追加します。

"dependencies" : { 
    "express": "3.3.4", 
    "jade": "*" 
} 
0

は、ここでの番号の段階で、他の人が以前に示唆している段階のコンパイルですが、オールインワン。これはバージョンに基づいています:Yeoman 1.0.4 & Express 3.3.8。

1)それ

2)は、角度のインストールにプロジェクトディレクトリとCDを作成:

yo angular 

(あなたはSUとしてログインしていない場合は、次の2つの行を実行する必要があります)

bower install 
sudo npm install 

3)(それはpackage.jsonの特急バージョンによって上書きされていない)

をpackage_yo.jsonするpackage.jsonの名前を変更します

4)Express express -c less -Hsをインストールします。 app.use(必要(」: (または他のどんな急行のオプションあなたが望む)

sudo npm install 

5)はapp.js 『エクスプレスでのパスのためのアプリ『から』公共エクスプレスの公開ディレクトリ&変更』を削除します。 less-middleware ')({src:_ dirname +'/app '})); app.use(express.static(path.join( _dirname、 'app')));

6)明示的なデフォルトルート(app.get( '/'、ルート。インデックス); ) (今角度の/ appフォルダの代わりに

7で指定されたルートを使用します発現する)(そして、あなたがでヨーマンのウェルカムページが表示されるはずサーバー NPMは

を開始開始:localhostを:3000 /)

2

このプロジェクトは、要件のすべてをカバーしているようだ(とさえMongoDBのためのオプションのサポートあり):https://github.com/DaftMonk/generator-angular-fullstack

私はちょうどそれをローカルに試してみたが、それは動作します:

npm install -g generator-angular-fullstack 

yo angular-fullstack [appname] 

詳細については、GitHubページを参照してください。