如何用requirejs优化目录中的所有javascript文件

How to optimize all javascript files in a directory with requirejs

本文关键字:javascript 文件 何用 requirejs 优化      更新时间:2023-09-26

文件夹结构如下:

.
├── autocomplete
│   ├── core.js
│   ├── search.js
│   └── user.js
├── build.js
├── collapsible_lists.js
├── griffgrabber
│   ├── canvasobject.js
│   ├── cargame.js
│   ├── car.js
│   ├── griffDrawer.js
│   ├── keylistener.js
│   ├── run.js
│   └── victim.js
├── main.js
├── newsfeed.js
├── require.js
├── shortcut.js
└── sidebar.js
3 directories, 20 files

main.js是启动文件。该文件需要几个文件,但不是全部。其余的文件包含在

<script>
    require(['shortcut'], function(shortcut){
        // ...
    })
</script>

这是目前为止我的build.js文件:

{
    baseUrl: ".",
    name: "main",
    out: "main-built.js",
}

但是它只包含main.js所需的文件。是否有可能在一次运行中优化所有javascript文件?

(扩展@Ryan Lynch的建议):

使用include选项,按照文档:

你总是可以使用include选项显式地添加在优化器的静态分析中没有找到的模块。

(http://requirejs.org/docs/optimization.html)

{
    baseUrl: ".", // ?
    appDir: ".", // ?
    dir: "output/",
    modules: [
        {
            name: "main",
            include: [ "shortcut" ]
        }
    ]
}

在example.build.js中有更详细的示例(实际上我发现它比文档页更有用)


(对不起,没有时间复制和测试正确,以确保路径值是正确的,我稍后会尝试并更新我的答案)

尝试在你的选项中包含一个模块数组,所以:

{
    baseUrl: ".",
    out: "main-built.js",
    modules: [
        {
            name: "main"
        }
    ]
}

根据文档:

在modules数组中指定你想要的模块名在这个例子中,优化"main"。"main"将被映射到项目中的Appdirectory/scripts/main.js。构建系统将然后跟踪main.js的依赖项,并将它们注入appdirectory-build/脚本/main.js文件。

实现这一目标的另一种不太正统的方法是将此"shortcut"模块作为依赖项添加到r.js扫描发现的任何"可见"模块(即:"main.js")。这样,从"shortcut"开始的整个依赖分支将包含在输出中。