Node.js 为REST API设置节点环境-我的头发变灰了
我在这里非常谦虚,来到这个社区。我还不了解jack的节点环境,我也是这里唯一的节点开发人员。一个人的团队正在构建我的第一个节点RESTAPI。(是的,我们真正需要的是更多的人,他们已经知道比我多一点的节点来帮助这个学习过程) 我已经在网上搜索了数小时,试图做我的尽职调查。但坦率地说,我只是没有在设置Node.js环境以及设置本地与其他环境构建方面找到太多信息。首先,刚开始建立一个本地的建设-婴儿步骤是所有我正在寻找。。。在现实世界中。大多数博客文章最多只显示最简单的开发环境。更糟糕的是,大多数博客帖子都在谈论网站设置(BrowsifSh_uu_u)之类的东西。我在做一个RESTAPI,而不是一个网站 我需要一些资源来开始,要么我只是没有正确地搜索节点,要么就是很难找到它们。我想了解一下如何设置环境变量,如何使用gulp和这些变量来运行不同的环境情况,以及人们如何管理他们的持久层,如数据库连接字符串,等等…我假设这也是通过gulp任务读取包含连接字符串的配置文件而自动实现的?我真的不确定,没有太多好的例子 这就是为什么我在这里希望找到一些这条路线,通过张贴在这里。(希望能对我目前的gulpfile发表评论……这是一个很好的方法还是根本不接近正确的轨道,或者我应该从哪里开始构建和环境约定和任务?) 最好能找到一篇好文章,让你在节点开发人员的生活中度过一天 我目前在哪里?Node.js 为REST API设置节点环境-我的头发变灰了,node.js,Node.js,我在这里非常谦虚,来到这个社区。我还不了解jack的节点环境,我也是这里唯一的节点开发人员。一个人的团队正在构建我的第一个节点RESTAPI。(是的,我们真正需要的是更多的人,他们已经知道比我多一点的节点来帮助这个学习过程) 我已经在网上搜索了数小时,试图做我的尽职调查。但坦率地说,我只是没有在设置Node.js环境以及设置本地与其他环境构建方面找到太多信息。首先,刚开始建立一个本地的建设-婴儿步骤是所有我正在寻找。。。在现实世界中。大多数博客文章最多只显示最简单的开发环境。更糟糕的是,大多数博
<强>我的API <强>:嗯,我已经建立了几个Koa.js endpoints,我有一些控制器来接受请求,通过使用网关节点模块来处理它,我所说的网关层中有一些CRUD持久化方法,它调用底层的模型类集,这意味着真正的CRUD调用真实的DB和一些模拟用于我的测试,等等。在这一点上非常基本……所有测试都是通过Mocha.js(BDD样式)驱动的
我的一天:现在,我开始工作了,我已经设置了我的mocha.js测试环境,我至少能够测试我的代码的开发,并让测试在存储上很好地运行。我可以通过终端中的mocha报告观看我的文件和测试运行。我的应用程序在运行,诸如此类 我的问题:但除了通过吞咽实现自动化之外,我真的没有实现过这么多。我想了解更多关于设置环境变量的信息,当开发人员准备好构建并推送到git、yada-yada时会做什么,然后最终如何切换环境,推送到其他服务器时会做什么,以及通过任何有助于实现这一点的配置或吞咽任务所做的一切。我只需要一个这种生态系统的好例子。任何一种例子,但现实的东西都会非常有用 所以…这里是我当前的一个的一瞥。现在有了babel transpiler的构建内容(是的,我在我的js中使用ES6到ES5代码),但我从其他代码中获得了这一点,但还没有弄清楚这一切是如何工作的。实际上,我现在设置的是我的测试运行和自动化。我禁用了构建内容,因为a)我真的不知道哪些文件应该是app.js、server.js之外的REST API构建的一部分,b)我从一些代码中获取的构建代码通过babel将js文件传输到构建文件夹中,但随后我遇到了代码冲突/与常规代码冲突的问题。例如,下面的build内容将server.js推到一个build文件夹中,当我试图在根目录中运行常规server.js时,它与build/server.js中的代码冲突,所以这一切都是错误的,显然我不知道我应该如何处理构建'use strict';
require('babel/register');
require("harmonize")();
var gulp = require('gulp'),
mocha = require('gulp-mocha'),
gutil = require('gulp-util'),
babel = require("gulp-babel"),
server = require('gulp-develop-server'),
del = require('del');
var config = {
core: {
src: '*.js',
build: {
src: 'build'
}
},
server: {
path: ['app.js']
},
bs: {
proxy: 'http://localhost:3000'
},
test:{
root: 'test/**',
src: {
bdd: {
features:'test/bdd/features/**/*-spec.js',
unit:'test/bdd/unit/**/*-test.js',
integration: 'test/bdd/integration/**/*-integration.js'
}
},
mocha: {
reporter: 'spec'
}
}
};
gulp.task('default', ['babel','development'], function(){
gulp.task("watch", function(){
gulp.watch('**/*.js', ['babel'])
});
});
gulp.task('development',['mocha-bdd-features', 'mocha-bdd-unit'], function() {
gulp.watch('**/*.js', ['mocha-bdd-features', 'mocha-bdd-unit']);
});
gulp.task('babel', function () {
return gulp.src('./*.js')
.pipe(babel());
//.pipe(gulp.dest('build'));
});
gulp.task('build', ['clean'], function () {
});
gulp.task('clean', del.bind(
null, ['build/*'], {dot: true}
));
gulp.task('server:start', function() {
server.listen( { path: config.server.path});
});
gulp.task('server:restart', function() {
server.restart();
});
gulp.task('mocha-bdd-features', function() {
process.env.PORT = 8001;
return gulp.src([config.test.src.bdd.features], { read: false })
.pipe(mocha({
compilers: {
js: babel
},
reporter: config.test.mocha.reporter,
ui: 'bdd'
}))
.on('error', gutil.log);
});
gulp.task('mocha-bdd-unit', function() {
process.env.PORT = 8002;
return gulp.src([config.test.src.bdd.unit], { read: false })
.pipe(mocha({
compilers: {
js: babel
},
reporter: config.test.mocha.reporter,
ui: 'bdd'
}))
.on('error', gutil.log);
});
gulp.task('mocha-bdd-integration', function() {
process.env.PORT = 8003;
return gulp.src([config.test.src.bdd.integration], { read: false })
.pipe(mocha({
compilers: {
js: babel
},
reporter: config.test.mocha.reporter,
ui: 'bdd'
}))
.on('error', gutil.log);
});
gulp.on('err', function(e) {
console.log(e.err.stack);
});
迄今为止,我的package.json脚本:
"scripts": {
"start": "gulp",
"build": "gulp build", // I was running this for a while
"release": "gulp build --release", //I haven't used this yet or know if I even will yet
// I definitely use these, I set these up myself
"test-bdd-features": "gulp mocha-bdd-features",
"test-bdd-unit": "gulp mocha-bdd-unit",
"test-bdd-integration": "gulp mocha-bdd-integration"
},
基本上,作为一名开发人员,我现在拥有gulpfile的方式是在bash提示符下键入“gulp”(在我的情况下,是从Webstorm中的终端),它运行默认的gulp任务,然后在这一点上首先执行一些其他任务,到目前为止发生了一些事情:
"scripts": {
"start": "gulp",
"build": "gulp build", // I was running this for a while
"release": "gulp build --release", //I haven't used this yet or know if I even will yet
// I definitely use these, I set these up myself
"test-bdd-features": "gulp mocha-bdd-features",
"test-bdd-unit": "gulp mocha-bdd-unit",
"test-bdd-integration": "gulp mocha-bdd-integration"
},
var config = require('config.json');
// all your require'd stuff
// this is helpful, 'cause you can do stuff like "gulp --production"
var argv = require('yargs').argv;
var paths = {
sass: ['some/path/to/sass'],
// various other paths
};
gulp.task('sass', compileSass);
gulp.task('html', html);
gulp.task('default', watch);
// etc.
// then, in pretty alphabetical order
function compileSass() {
return gulp.src(paths.sass)
.pipe(doSomeCoolStuff());
}
function html() {
// etc.
}
function watch() {
compileSass();
html();
if(argv.production) {
someSpecificProductionFunction();
}
gulp.watch(paths.someAwesomePaths, ['someTask']);
}