RequireJS - 不确定如何正确编译为单个文件

时间:2015-08-07 12:47:57

标签: requirejs

我试图将两个js文件--- main.js和cookies.js编译成一个文件。

    -/
     |-main.js
     |-cookie.js
     |-require.js
     |-main-built.js
     |-build.js

main.js保存脚本逻辑并依赖/需要cookie.js。

如果我先加载cookie.js然后再加载main.js,那么没有require.js,一切都很好。即:

    <script src="cookie.js"></script>
    <script src="main.js"></script>

这适用于开发,但我需要一个最终的js文件进行生产。

我开始尝试使用require.js(http://requirejs.org/

        <script data-main="main-built.js" src="require.js"></script>

其中main-built.js是运行的单个文件输出结果:

    node r.js -o build.js

我的构建文件设置如下:

    ({
      include: ["cookiejs","requirejs"],
      baseUrl: '.',
      paths: {
      'cookiejs': 'cookie',
      'requirejs': 'require'
    },
      name:"main",
      out: "main-built.js",
    })

&#34;主&#34;从构建文件中拉入main.js, &#34;需要&#34;拉入require.js, &#34;饼干&#34;拉入cookie.js。

问题 执行最终编译文件时,未定义cookie函数。具体来说,由于cookie.js处理cookie交互,错误是:

    "Uncaught ReferenceError: cookie is not defined"

我可以看到cookie.js代码实际上被复制到main-built.js中,所以我认为它是如何告诉require.js main.js依赖于cookie.js并拥有编译器的问题重新排序最终主构建文件中代码的执行,但我真正抓住了如何告诉require.js如何做到这一点。

我尝试过什么

  • 在构建文件中包含和排除require.js并没有看到任何区别。

  • 使用&#34; deps&#34;而不是&#34;包括&#34;在构建文件中---我没有发现差异

  • 各种uglify构建选项

1 个答案:

答案 0 :(得分:0)

因为你的主要取决于cookiejs。您必须通过requirejs配置定义此关系。理想情况下,这些依赖项应该在依赖文件中定义,如下所示。

main.js

.put()

您还可以使用垫片来定义这些与您无法控制的文件(此处不是这种情况)的依赖关系。

def put(self, request):