使用团队基础2013-如何在node_modules中构建(angular2 / typescript)w / out check?

时间:2016-09-02 16:16:06

标签: angular tfs npm

我有一个angular2应用程序在本地工作正常,但无法在构建服务器上构建。我不想检查node_modules目录中的29,000个文件(我们进行本地构建,测试构建和生成构建)。

我尝试在构建服务器上的package.json文件中全局安装所有项目,作为TFS后台作业代理所有者。我仍然得到"找不到模块"错误。

我将Gulp构建到编译的单个JS文件中,我应该禁用打字稿编译并只检入该JS文件(在保存时不会有本地编译,并且必须更改为gulp编译和文件侦听器)。只是检查JS文件的痛苦部分,gulp没有检查文件,所以即使它得到更新,VS也不知道它已被更改,并且很难结账并重新投入并做一些小事更改VS检测到实际签入并迁移到下一个版本。

我知道TFS 2015有一个新的构建代理,是否能以某种方式解决这个问题?

2 个答案:

答案 0 :(得分:0)

对于TFS2013,您可以在PRE-BUILD EVENTS中使用相应的命令,也可以使用自定义目标扩展.crproj。手动编辑底部的.csproj文件并添加如下内容

<PropertyGroup>
  <CompileDependsOn>
    $(CompileDependsOn);
    GulpBuild;
  </CompileDependsOn>
</PropertyGroup>
<Target Name="GulpBuild" DependsOnTargets="CompileTypeScript">
  <Exec Command="npm install" />
  <Exec Command="gulp" />
</Target>

更多详情请参阅此博客:INTEGRATING GULP INTO YOUR TFS BUILDS AND WEB DEPLOY

此外,对于 TFS 2015 (vNext构建系统),您只需在构建定义中添加npm task运行“npm install”命令,即可在VS之前安装npm软件包建立。

注意:请记住将“工作目录”设置为放置npm配置文件“package.json”的项目文件夹。

答案 1 :(得分:0)

我只是想发布我最终做的事情,以防它帮助别人。我不想检查所有节点模块,我不想下载或管理构建服务器。所以,我使用gulp将当前所有内容捆绑到两个js文件(库和应用程序)中。使用gulp-tfs-commander,然后我可以确保一直运行,生成的JS文件将结帐,所以我的下一个签入将只包括那些没有我参与的JS文件。

Gulp文件:

var gulp = require('gulp')
var concat = require('gulp-concat')
var gulpTfs = require('gulp-tfs-commander');
var Builder = require('systemjs-builder');
var uglify = require('gulp-uglify');


gulp.task('bundle', function () {



    var builder = new Builder('/app/', 'systemjs.config.js');

    return builder
        .buildStatic('/app/main.js', 'scripts/bundled/app-bundle.js', { minify: false, mangle: false, sourceMaps: true })

        .then(function () {
            gulp.src([
                 'Scripts/bundled/app-bundle.js'
            ])
            .pipe(gulpTfs({ command: 'edit', params: { lock: 'none' } }))
            console.log('Build complete');
        })
        .catch(function (err) {
            console.log('Build error');
            console.log(err);
        });
});




gulp.task('bundle_library', function () {
    gulp.src([
     'node_modules/es6-shim/es6-shim.min.js',
    'node_modules/zone.js/dist/zone.js',
    'node_modules/reflect-metadata/Reflect.js',
    'node_modules/systemjs/dist/system.src.js',
    'node_modules/ng2-bootstrap/ng2-bootstrap.min.js'
    ])
      .pipe(concat('nm-library.js'))
      .pipe(uglify())
      .pipe(gulp.dest('Scripts/bundled/'))
     .pipe(gulpTfs({ command: 'edit', params: { lock: 'none' } }))
});