ExpressJS内的Yeoman

我仍然想尝试使用Yeoman和Express来运行示例。

我尝试了以下,它的工作“好吧”,但我坚持合并的路线。 (为了可读性而简化了)

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

然后在Gruntfile.js中将“output:dist”更改为“output:../../ public”

现在,两台服务器都可以自行运行(例如yeoman服务器和节点app.js)。 我现在也可以运行'yeoman build'来将快捷的JS输出到/ public中。

我对路线如何合并有点模糊? 我想/拉起Angular路线,而不是快速路线等等.Github上的angular度expression种子例子看起来没问题,但我仍然希望将Yeoman融入到项目中。

任何build议,将不胜感激。

我会推荐这个结构yeoman + expressjs:

 mkdir app cd app yeoman angular express . 

所以你的dir树应该是这样的:

 . ├── 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 

现在在app.js ,您需要更改哪个目录来提供静态文件。 改变这一行:

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

对此:

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

这应该是关于它。 有一个careat,你现在有两个“索引”文件 – 一个在views/index.jade ,另一个在app/index.html 。 删除app/index.html目前打破了yeoman,所以我的build议是摆脱app/index.jade的路线,只是编辑index.html

希望这可以帮助!

这是另一个稍微不同的设置

 yo angular 

更新Gruntfile.js将configuration从“app”更改为“public”。

然后做

 express . 

打开app.js并确保没有像这样的app.get('/',routes.index); 这样节点服务器实际上会提供index.html,这是运行“grunt server”时加载的文件。

现在继续,删除公共目录,然后将应用程序目录移动到公共

 rm -rf public mv app public 

这个项目似乎涵盖了所有的需求(甚至有对MongoDB的可选支持): https : //github.com/DaftMonk/generator-angular-fullstack

我刚刚在本地尝试,它的工作原理:

 npm install -g generator-angular-fullstack yo angular-fullstack [appname] 

有关更多信息,请参阅GitHub页面。

如果我有信誉,我会评论@btford的回答,

只是想补充说安装express .yo angular会覆盖咕噜创build的package.json文件,这将打破咕噜作为@jjperezaguinaga报道。

确保在安装express .之前保存package.json的副本express . 。 然后将以下依赖项添加到原始的package.json中:

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

我有这个解决scheme的麻烦:expression仍然尝试加载index.jade而不是index.html,但如果我inputlocalhost:3000 / index.htmlexpression渲染正确。 我解决了从app.js中删除这一行:

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

希望这可以帮助。 感谢分享,D.

以下是其他人先前build议的步骤汇总,但是都是以编号的步骤汇总的。 这是基于版本:Yeoman 1.0.4&Express 3.3.8。

1)创build你的项目目录并将其放入CD中

2)安装angular度:

 yo angular 

(如果你没有以su身份login,需要运行下两行)

 bower install sudo npm install 

3)将package.json重命名为package_yo.json(所以不会被package.json的express版本覆盖)

4)安装Express express -c less -Hs。 (或其他任何你想要的明确选项)

 sudo npm install 

5)在Express'app.js:app.use(require('less-middleware')({src:_ dirname +'/ app'})中删除Express'公共目录并将'public'更改为'app' ); app.use(express.static(path.join( _dirname,'app')));

6)删除快速默认路由(app.get('/',routes.index);)(现在express将使用angular的/ app文件夹中指定的path

7)启动服务器npm start

(那么你应该看到Yeoman的欢迎页面:localhost:3000 /)