5

我正在开发我的第一个 Cloud Foundry 项目(......和第一个 Node.js 项目,第一个 MongoDB 项目,第一个“express”项目,等等......)

在第一天,我发现了这个问题,并将答案作为我的 github 存储库组织的起点:

Node.js 项目的文件夹结构

有一个/node_modules目录未签入。而是npm install根据文件中的规范自动创建的package.json。好的,很好......我制作了那个文件。

(注意:在 a 期间vmc push,推送服务器似乎没有检查 package.json 文件。它似乎只是复制了 node_modules 目录,如果它不存在则什么都不做......所以有必要在您的客户端上执行npm install然后推送。)

我已经在我的应用程序中工作了一些基础知识,现在我想开始进行测试和构建基础设施。例如:我想要一个在我所有的 JavaScript 上运行 linting 的构建过程。有一个名为ready.js的持续集成库,它看起来像是一个最新的构建工具......

但是在我的项目目录中并做npm install ready.js. 这意味着更多的东西将进入/node_modules目录并上传到云中,而不是在云上运行。出于同样的原因:如果我有一个正在缩小资源(或其他)的构建过程,那么我不希望与vmc push任何一个一起部署源。

我知道这一切都是新的......但是有没有约定将目标转储到构建目录并从那里推送?还是每个人都从有效的 github 根目录推送,并且只推送所有构建和测试?欢迎任何提示...使用方法,避免方法...

更新:我找到了一个使用 express 和 Node.js(以及其他几个常见模块)的应用程序样板,它在服务器代码的 javascript 中执行其“构建过程”......无论好坏:

https://github.com/mape/node-express-boilerplate

我也发现了这一点,似乎将术语“样板”与您希望看到的模块名称结合到结构中是一种很好的搜索策略,可以找到我正在寻找的东西:

https://github.com/swbiggart/node-express-requirejs-backbone

4

1 回答 1

3

npm 允许你指定devDependencies,你可能想看看这篇文章

您可以将所有开发/测试环境依赖项添加devDependenciesdependencies. 然后,您可以添加一个脚本以推送到云端。

我不熟悉 Cloud Foundry 或vmc push工作流程。但是,您可以将自定义脚本添加到package.jsonscripts中的对象,该脚本安装开发环境模块、运行测试、清理 npm 缓存、然后安装仅生产模块并将您的代码和仅这些模块推送到云。

编辑

如果不推送到 npm 存储库,我不确定您是否可以使用这些,但它们作为示例很有用(我猜......)或者,您可以在 shell 脚本或节点脚本中自动化我上面描述的工作流程。

/编辑

您可以连接到任何可用的脚本...(man npm-scripts有关更多信息,请参阅):

   preinstall
          Run BEFORE the package is installed

   install, postinstall
          Run AFTER the package is installed.

   preuninstall, uninstall
          Run BEFORE the package is uninstalled.

   postuninstall
          Run AFTER the package is uninstalled.

   preupdate
          Run BEFORE the package is updated with the update command.

   update, postupdate
          Run AFTER the package is updated with the update command.

   prepublish
          Run BEFORE the package is published.

   publish, postpublish
          Run AFTER the package is published.

   pretest, test, posttest
          Run by the npm test command.

   prestop, stop, poststop
          Run by the npm stop command.

   prestart, start, poststart
          Run by the npm start command.

   prerestart, restart, postrestart
          Run by the npm restart command. Note: npm restart will  run  the
          stop and start scripts if no restart script is provided.

   Additionally,  arbitrary  scrips  can  be  run  by doing npm run-script
   <stage> <pkg>.

请注意,publish这里用于将模块发布到npm. 您应该将您的包设置为私有 ( "private": true),这样您就不会意外地将您的代码发布到 npm 存储库中。

于 2012-04-19T18:22:47.537 回答