使用RequireJS生成包的问题

时间:2015-07-29 19:14:41

标签: javascript gruntjs requirejs grunt-contrib-requirejs

我有一个Typescript项目:

 echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='www.example.com'">';

在我的Grunt配置中,我有一个两步任务,可以编译myproject | +-src (folder) | | | +-main.ts | +-stringHandler.ts | +-disposable.ts +-out (folder) | | | +-... +-Gruntfile.js 中的所有.ts个文件,并将相应的myproject/src/个文件生成到.js。因此,在任务的第一步完成后,我有以下内容:

myproject/out/

捆绑

该任务的第二步是generating bundle file myproject | +-out (folder) | +-main.js +-stringHandler.js +-disposable.js 。我为此目的使用RequireJS

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

Gruntfile.js

当Grunt到达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']); }; 时,在成功编译项目后,我收到以下错误:

  

运行&#34; requirejs:compile&#34; (requirejs)任务{[错误:错误:缺失   a&#34; name&#34;,&#34; include&#34;或&#34;模块&#34;选项       在Function.build.createConfig(C:\ Users \ myuser \ Documents \ myproject \ node_modules \ grunt-contrib-requirejs \ node_modules \ requirejs \ bin \ r.js:29567:19)   ] originalError:[错误:缺少&#34;名称&#34;,&#34;包括&#34;要么   &#34;模块&#34;选项]}

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

1 个答案:

答案 0 :(得分: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:源代码所在的位置。
  • mainConfigFile:指向上面提到的配置对象。它告诉插件依赖项所在的插件。这样就无需在两个地方指定和手动更新依赖项列表。
  • modules:是一组应用程序引导程序。在这种情况下,列出一个main.js
  • dir:将生成优化的应用程序。请注意,您的依赖项也将在此处复制。
  • optimize:我将其关闭,以便您可以在./build下轻松调试生成的应用。当你开心时删除它,插件将优化(压缩和munge)你的构建文件。