0

我有一个打字稿项目:

myproject
 |
 +-src (folder)
 |  |
 |  +-main.ts
 |  +-stringHandler.ts
 |  +-disposable.ts
 +-out (folder)
 |  |
 |  +-...
 +-Gruntfile.js

在我的 Grunt 配置中,我有一个两步任务,它编译所有.ts文件myproject/src/并将相应的.js文件生成到myproject/out/. 所以第一步任务完成后,我有以下内容:

myproject
 |
 +-out (folder)
    |
    +-main.js
    +-stringHandler.js
    +-disposable.js

捆绑

任务的第二步是生成捆绑文件 myproject.js。我为此目的使用RequireJS 。

我已经安装了grunt-contrib-requirejs。处理捆绑任务的Gruntfile.js文件如下(仅显示文件中的相关部分):

module.exports = function(grunt) {
  var config = {
    pkg: grunt.file.readJSON('package.json'),
    requirejs: {
      compile: {
        options: {
          baseUrl: "out",
          bundles: {
            'myproject': ['main', 'stringHandler', 'disposable']
          },
          out: 'out/myproject.js'
        }
      }
    }
  };
  grunt.initConfig(config);
  grunt.loadNpmTasks('grunt-contrib-requirejs');
  grunt.registerTask('default', ['compile', 'requirejs']);
};

当 Grunt 到达requirejs时,成功编译项目后,我收到以下错误:

运行 "requirejs:compile" (requirejs) task { [错误:错误:在 Function.build.createConfig (C:\Users\myuser\Documents\myproject\node_modules 中缺少“名称”、“包含”或“模块”选项\grunt-contrib-requirejs\node_modules\requirejs\bin\r.js:29567:19) ] originalError: [错误:缺少“名称”、“包含”或“模块”选项]}

我可以理解缺少参数,但是当我使用时name出现其他错误。我想在更通用的层面上一定有什么问题。什么是正确的配置格式?谢谢

4

1 回答 1

0

这假设main.ts是您的应用程序的入口点,并且它包含一个包含require.config您的应用程序依赖项(库和垫片)的部分。

首先,将该require.config部分移出main.ts并移入其自己的文件config.ts. 将应用程序引导代码保留在main.ts.

然后确定您希望在何处部署此优化的应用程序代码。假设它位于一个名为 的目录,该目录与您的和文件夹build平行。srcout

更新您的 Gruntfile 以反映此配置:

requirejs: {
    compile: {
        options: {
            baseUrl: "out",
            mainConfigFile: "out/config.js",
            modules: [
                { name: "main" }
            ],
            dir: "build",
            optimize: "none" // skip compression while debugging
        }
    }
}

您可以在http://requirejs.org/阅读有关这些配置选项的更多信息,但这里是基本概要:

  • baseUrl:源 JS 代码所在的位置。
  • mainConfigFile: 指向上面提到的配置对象。它告诉插件依赖项所在的位置。这消除了在两个地方指定和手动更新依赖项列表的需要。
  • modules: 是一组应用程序引导程序。在这种情况下,一个列表,main.js
  • dir:将生成优化应用程序的位置。请注意,您的依赖项也将被复制到此处。
  • optimize:我把它关掉了,这样你就可以轻松地在./build. 当您满意时将其删除,该插件将优化(压缩和调整)您的构建文件。
于 2015-08-07T19:18:36.360 回答