首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systemjs-Builder -无法将类型记录正确地配置到包中。

Systemjs-Builder -无法将类型记录正确地配置到包中。
EN

Stack Overflow用户
提问于 2016-01-15 19:03:15
回答 2查看 2K关注 0票数 0

我想构建一个快速的nodejs脚本,将一个类型记录应用程序打包为SystemJS模块,非常类似于Angular2包的样子。

我尝试了不同的配置,但我似乎无法将手指放在上面,而且到目前为止还没有找到足够清晰的文档。

请注意,对于这个“测试”,我根本不使用Gulp或Jspm,暂时只使用systemjs-builder (也不打算使用jspm )。

以下是我的“项目”的样子:

-项目的根源

-模块

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

-菜单

- menu.component.ts // export class

- menu.service.ts // export class

我想将它打包到一个文件中,在这个文件中,我将有多个SystemRegister模块,这些模块随后可以在一个应用程序中使用。

我尝试了以下几项,但没有成功:

代码语言:javascript
复制
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'; (没有扩展)时,它尝试加载filePath,而不是filePath.ts

其次,如果我尝试在导入中添加.ts扩展(我不想这样做),它会抱怨代码无效(unexpected token @unexpected token menuItem等等)。

有人有一个很好的例子或一些解释,这应该如何运作?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-01-20 13:02:20

这里有一个例子:角型标骨架

构建任务如下所示:

代码语言:javascript
复制
  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看起来是这样的:

代码语言:javascript
复制
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"
  }
  /// ... 
  }
票数 -1
EN

Stack Overflow用户

发布于 2016-06-05 18:07:05

你为什么要捆绑打字本?捆绑是一种用于优化将源代码交付给浏览器的方法。浏览器不知道类型记录,它只知道javascript (除非您动态转换)。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34817977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档