0

Angular2 バンドルのように、Typescript アプリを SystemJS モジュールとしてパッケージ化する簡単な nodejs スクリプトを作成したいと考えています。

さまざまな構成を試しましたが、指を置くことができないようで、まだ十分に明確なドキュメントが見つかりません。

この「テスト」では、当分systemjs-builderの間、Gulp や Jspm をまったく使用していないことに注意してください (jspm を使用する予定もまったくありません)。

私の「プロジェクト」は次のようになります。

---- プロジェクトのルート

-------- index.ts //export * from './modules/index'そして最終的にはもっと

-------- モジュール

------------ index.ts //export * from './menu/index'

------------ メニュー

---------------- menu.component.ts //export class

---------------- menu.service.ts //export class

これを単一のファイルの下にパッケージ化したいと思います。このファイルには、その後アプリで使用できる複数の SystemRegister モジュールがあります。


私は成功せずに次のことを試しました:

var Builder = require('systemjs-builder');

// optional constructor options
// sets the baseURL and loads the configuration file
var builder = new Builder('./modules');

builder.bundle('./modules/index.ts', {
    /* SystemJS Configuration Here */
    baseURL: './modules',
    transpiler: 'typescript',
    typescriptOptions: {
        "module": "system",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true
    },
    defaultExtension: 'ts',
    packages: {
        'modules': {
            defaultExtension: 'ts'
        }
    }
}, 'infrastructure.js')
      .then(function() {
        console.log('Build complete');
      })
      .catch(function(err) {
        console.error(err);
      })

まず、オプションがまったくdefaultExtension機能していないようです。import {something} from 'filePath';filePathfilePath.ts

第 2 に、インポートに拡張機能を追加しようとすると.ts(これはやりたくありません)、コードが無効であると不平を言います (unexpected token @などunexpected token menuItem) 。

これがどのように機能するかについて、誰かが良い例や説明を持っていますか?

ありがとうございました

4

2 に答える 2

-1

ここに例があります: angular typescript スケルトン

ビルド タスクは次のようになります。

  const path = require('path');
  const Builder = require('jspm').Builder;
  const builder = new Builder();
  const packageJson = require(path.join(config.projectDir, 'package.json'));

  return beginBuild()
    .then(buildSFX)
    .catch((err) => console.log('Build Failed', err));

  function beginBuild() {
    builder.reset();
    return builder.loadConfig(path.join(config.projectDir, packageJson.jspm.configFile))
  }

  function buildSFX() {
    const appName = packageJson.name;
    const distFileName = `${appName}.min.js`;
    const outFile = path.join(config.distDir, distFileName);
    const moduleName = 'app';
    const buildConfig = {
      format: 'global',
      minify: true,
      sourceMaps: true
    };
    return builder.buildStatic(moduleName, outFile, buildConfig);
  }

jspm conf は次のようになります。

System.config({
  defaultJSExtensions: true,
  transpiler: "typescript",
  typescriptOptions: {
    "tsconfig": "src/tsconfig.json"
  },
  paths: {
    "github:*": "vendor/jspm_packages/github/*",
    "npm:*": "vendor/jspm_packages/npm/*",
    "app": "src/index"
  }
  /// ... 
  }
于 2016-01-20T13:02:20.423 に答える