/*
* This is an example build file that demonstrates how to use the build system for
* require.js.
*
* THIS BUILD FILE WILL NOT WORK. It is referencing paths that probably
* do not exist on your machine. Just use it as a guide.
*
*
*/ ({
// app顶级目录,非必选项。如果指定值,baseUrl则会以此为相对路径
appDir: "some/path/", // 模块根目录。默认情况下所有模块资源都相对此目录。
// 若该值未指定,模块则相对build文件所在目录。
// 若appDir值已指定,模块根目录baseUrl则相对appDir。
baseUrl: "./", // 配置文件目录
mainConfigFile: '../some/path/to/main.js', // 设置模块别名
// RequireJS 2.0 中可以配置数组,顺序映射,当前面模块资源未成功加载时可顺序加载后续资源
paths: {
"foo.bar": "../scripts/foo/bar",
"baz": "../another/path/baz"
}, // 配置 CommonJS 的 package See http://requirejs.org/docs/api.html#packages for more information.
packagePaths: [],
packages: [], // 指定输出目录,若值未指定,则相对 build 文件所在目录
dir: "../some/path", // 在 RequireJS 2.0.2 中,输出目录的所有资源会在 build 前被删除
// 值为 true 时 rebuild 更快,但某些特殊情景下可能会出现无法预料的异常
keepBuildDir: true, // 国际化配置
locale: "en-us", // JS 文件优化方式,目前支持以下几种:
// uglify: (默认) 使用 UglifyJS 来压缩代码
// closure: 使用 Google's Closure Compiler 的简单优化模式
// closure.keepLines: 使用 closure,但保持换行
// none: 不压缩代码
optimize: "uglify", // 使用 UglifyJS 时的可配置参数
// See https://github.com/mishoo/UglifyJS for the possible values.
uglify: {
toplevel: true,
ascii_only: true,
beautify: true,
max_line_length: 1000
}, // 使用 Closure Compiler 时的可配置参数
closure: {
CompilerOptions: {},
CompilationLevel: 'SIMPLE_OPTIMIZATIONS',
loggingLevel: 'WARNING'
}, // CSS 优化方式,目前支持以下几种:
// none: 不压缩,仅合并
// standard: 标准压缩,移除注释、换行,以及可能导致 IE 解析出错的代码
// standard.keepLines: 除标准压缩外,保留换行
// standard.keepComments: 除标准压缩外,保留注释 (r.js 1.0.8+)
// standard.keepComments.keepLines: 除标准压缩外,保留注释和换行 (r.js 1.0.8+)
optimizeCss: "standard.keepLines", // 是否忽略 CSS 资源文件中的 @import 指令
cssImportIgnore: null, // 一般用于命令行,可将多个 CSS 资源文件打包成单个 CSS 文件
cssIn: "path/to/main.css",
out: "path/to/css-optimized.css", // 处理所有的文本资源依赖项,从而避免为加载资源而产生的大量单独xhr请求
inlineText: true, // 是否开启严格模式
// 由于很多浏览器不支持 ES5 的严格模式,故此配置默认值为 false
useStrict: false, //Specify build pragmas. If the source files contain comments like so:
//>>excludeStart("fooExclude", pragmas.fooExclude);
//>>excludeEnd("fooExclude");
//Then the comments that start with //>> are the build pragmas.
//excludeStart/excludeEnd and includeStart/includeEnd work, and the
//the pragmas value to the includeStart or excludeStart lines
//is evaluated to see if the code between the Start and End pragma
//lines should be included or excluded. If you have a choice to use
//"has" code or pragmas, use "has" code instead. Pragmas are harder
//to read, but they can be a bit more flexible on code removal vs.
//has-based code, which must follow JavaScript language rules.
//Pragmas also remove code in non-minified source, where has branch
//trimming is only done if the code is minified via UglifyJS or
//Closure Compiler.
pragmas: {
fooExclude: true
}, //Same as "pragmas", but only applied once during the file save phase
//of an optimization. "pragmas" are applied both during the dependency
//mapping and file saving phases on an optimization. Some pragmas
//should not be processed during the dependency mapping phase of an
//operation, such as the pragma in the CoffeeScript loader plugin,
//which wants the CoffeeScript compiler during the dependency mapping
//phase, but once files are saved as plain JavaScript, the CoffeeScript
//compiler is no longer needed. In that case, pragmasOnSave would be used
//to exclude the compiler code during the save phase.
pragmasOnSave: {
//Just an example
excludeCoffeeScript: true
}, //Allows trimming of code branches that use has.js-based feature detection:
//https://github.com/phiggins42/has.js
//The code branch trimming only happens if minification with UglifyJS or
//Closure Compiler is done. For more information, see:
//http://requirejs.org/docs/optimization.html#hasjs
has: {
'function-bind': true,
'string-trim': false
}, //Similar to pragmasOnSave, but for has tests -- only applied during the
//file save phase of optimization, where "has" is applied to both
//dependency mapping and file save phases.
hasOnSave: {
'function-bind': true,
'string-trim': false
}, // 命名空间,完整实例可以参考 http://requirejs.org/docs/faq-advanced.html#rename
namespace: 'foo', // 跳过 pragmas 处理
skipPragmas: false, //If skipModuleInsertion is false, then files that do not use define()
//to define modules will get a define() placeholder inserted for them.
//Also, require.pause/resume calls will be inserted.
//Set it to true to avoid this. This is useful if you are building code that
//does not use require() in the built project or in the JS files, but you
//still want to use the optimization tool from RequireJS to concatenate modules
//together.
skipModuleInsertion: false, //Specify modules to stub out in the optimized file. The optimizer will
//use the source version of these modules for dependency tracing and for
//plugin use, but when writing the text into an optimized layer, these
//modules will get the following text instead:
//If the module is used as a plugin:
// define({load: function(id){throw new Error("Dynamic load not allowed: " + id);}});
//If just a plain module:
// define({});
//This is useful particularly for plugins that inline all their resources
//and use the default module resolution behavior (do *not* implement the
//normalize() method). In those cases, an AMD loader just needs to know
//that the module has a definition. These small stubs can be used instead of
//including the full source for a plugin.
stubModules: ['text', 'bar'], //If it is not a one file optimization, scan through all .js files in the
//output directory for any plugin resource dependencies, and if the plugin
//supports optimizing them as separate files, optimize them. Can be a
//slower optimization. Only use if there are some plugins that use things
//like XMLHttpRequest that do not work across domains, but the built code
//will be placed on another domain.
optimizeAllPluginResources: false, // 处理级联依赖,默认为 false,此时能够在运行时动态 require 级联的模块。为 true 时,级联模块会被一同打包
findNestedDependencies: false, //If set to true, any files that were combined into a build layer will be
//removed from the output folder.
removeCombined: false, modules: [
{
// 模块 alias 名称
name: "foo/bar/bop", //For build profiles that contain more than one modules entry,
//allow overrides for the properties that set for the whole build,
//for example a different set of pragmas for this module.
//The override's value is an object that can
//contain any of the other build options in this file.
//
override: {
pragmas: {
fooExclude: true
}
}
}, // 将 alias 别名为 foo/bar/bop 和 foo/bar/bee 的模块打包成一个文件
{
name: "foo/bar/bop",
include: ["foo/bar/bee"]
}, // 将 foo/bar/bip 及其依赖项一并打包,但不包括 foo/bar/bop
{
name: "foo/bar/bip",
exclude: [
"foo/bar/bop"
]
}, // 排除指定模块,但若该模块对所打包文件有级联依赖关系,则仍会被打包进去
{
name: "foo/bar/bin",
excludeShallow: [
"foo/bar/bot"
]
}, // insertRequire 在 RequireJS 2.0 中被引入,在 built 文件的末尾插入 require([]) 以触发模块加载并运行
// insertRequire: ["foo/baz"] 即 require(["foo/baz"])
// 详情见 https://github.com/jrburke/almond
{
name: "foo/baz",
insertRequire: ["foo/baz"]
}
], // 仅优化单个模块及其依赖项
name: "foo/bar/bop",
include: ["foo/bar/bee"],
insertRequire: ['foo/bar/bop'],
out: "path/to/optimized-file.js", // An alternative to "include"
deps: ["foo/bar/bee"], // RequireJS 2.0 中,out 可以是一个函数
out: function (text) {
// 自定义优化内容
}, // 模块包裹函数,顾名思义使用特定内容包裹模块,如此一来 define/require 就不再是全局变量,在 end 中可以暴露一些全局变量供整个函数使用
wrap: {
start: "(function() {",
end: "}());"
}, // 另一种模块包裹方式
// (function() { + content + }());
wrap: true, // 另一种模块包裹方式,包裹内容可以是指定文件
wrap: {
startFile: "part/start.frag",
endFile: "parts/end.frag"
}, // 不优化某些文件
fileExclusionRegExp: /^\./, // 默认保留模块的 license 注释
preserveLicenseComments: true, // 设置 logging level
// TRACE: 0,
// INFO: 1,
// WARN: 2,
// ERROR: 3,
// SILENT: 4
// Default is 0.
logLevel: 0, // 在每个文件模块被读取时的操作函数,可在函数体内作适当变换
onBuildRead: function (moduleName, path, contents) {
return contents.replace(/foo/g, 'bar');
}, // 在每个文件模块被写入时的操作函数
onBuildWrite: function (moduleName, path, contents) {
return contents.replace(/bar/g, 'foo');
}, // 若为true,优化器会强制在文件中包裹一层 define(require, exports, module) {})
cjsTranslate: true, //Introduced in 2.0.2: a bit experimental.
//Each script in the build layer will be turned into
//a JavaScript string with a //@ sourceURL comment, and then wrapped in an
//eval call. This allows some browsers to see each evaled script as a
//separate script in the script debugger even though they are all combined
//in the same file. Some important limitations:
//1) Do not use in IE if conditional comments are turned on, it will cause
//errors:
//http://en.wikipedia.org/wiki/Conditional_comment#Conditional_comments_in_JScript
//2) It is only useful in optimize: 'none' scenarios. The goal is to allow
//easier built layer debugging, which goes against minification desires.
useSourceUrl: true
})

r.js 配置文件 example.build.js 不完整注释的更多相关文章

  1. r.js 配置文件 build.js 不完整注释

      -----------------------------------------------------------------------r.js 配置文件 example.build.js ...

  2. r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解

    本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装  npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...

  3. vue-cli脚手架build目录中的webpack.prod.conf.js配置文件

    // 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = req ...

  4. vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...

  5. vue-cli脚手架build目录中的build.js配置文件

    该随笔收藏自: vue-cli脚手架build目录中的build.js配置文件 这个配置文件是命令npm run build 的入口配置文件,主要用于生产环境 由于这是一个系统的配置文件,将涉及很多的 ...

  6. vue-cli脚手架build目录中的webpack.base.conf.js配置文件

    转载自:http://www.cnblogs.com/ye-hcj/p/7082620.html webpack.base.conf.js配置文件// 引入nodejs路径模块 var path = ...

  7. vue-cli脚手架build目录中的karma.conf.js配置文件

    本文系统讲解vue-cli脚手架build目录中的karma.conf.js配置文件 这个配置文件是命令 npm run unit 的入口配置文件,主要用于单元测试 这条命令的内容如下 "c ...

  8. vue-cli脚手架build目录中的dev-server.js配置文件

    本文系统讲解vue-cli脚手架build目录中的dev-server.js配置文件 这个配置文件是命令npm run dev 和 npm run start 的入口配置文件,主要用于开发环境 由于这 ...

  9. vue-cli脚手架build目录中的webpack.dev.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.dev.conf.js配置文件 此配置文件是vue开发环境的wepack相关配置文件 关于注释 当涉及到较复杂的解释我将通过标识的方 ...

随机推荐

  1. 简单介绍Java的静态分派和动态分派

    最近复习JVM的知识,对于静态分派和动态分派的理解有点混乱,于是自己尝试写写代码,在分析中巩固知识. 有如下一段代码,请问每一段分别输出什么? package com.khlin.my.test; c ...

  2. [LeetCode题解]: Sort Colors

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given an a ...

  3. 关于.net和java des加密

    在.net和java环境中对于des加密,有几点要协同的地方: 密钥和密钥向量Key IV 加密模式CipherMode 填充模式PaddingMode 密文编码方式 下面一段.net的des加密方式 ...

  4. 网易严选的wkwebview测试之路

    本文来自网易云社区 作者:孙娇 UIWebView是苹果继承于UIView封装的一个加载web内容的类,它可以加载任何远端的web数据展示在你的页面上,你可以像浏览器一样前进后退刷新等操作.不过苹果在 ...

  5. [Perl]通过GD模块获取字符/汉字的点阵

    原来Perl获取汉字的点阵如此简单 示例脚本应保存为utf8格式 Code: [全选] [展开/收缩] [Download] (Untitled.pl) use GD; use utf8; my $g ...

  6. fhq treap——简单又好写的数据结构

    今天上午学了一下fhq treap感觉真的很好用啊qwq 变量名解释: \(size[i]\)表示以该节点为根的子树大小 \(fix[i]\)表示随机权值 \(val[i]\)表示该节点的值 \(ch ...

  7. 【OCP-052】新版052最新题库及答案整理-第14题

    14.Which command is used to display files that no longer conform to the backup retention policy? A) ...

  8. bzoj1800飞行棋

    题目链接 简单模拟 真的不敢相信ahoi09年的题竟然是这个难度 首先,一个必须要知道的定理是:圆上只有直径所对的圆周角是直角. 然后就很显然了, 只有两条不重合的直径上的四个点才能组成一个矩形, 所 ...

  9. [ActionScript 3.0] 透视投影

    下面的示例演示如何使用透视投影来创建 3D 空间.该示例演示如何通过projectionCenter属性来修改消失点和更改空间的透视投影.进行这种修改后,将强制重新计算focalLength和fiel ...

  10. 「案例」让房东在 Airbnb 上展示他们的热情好客

    如何才能让房东准确的描述自己的房源,如何才能让房东充分的展示自己的房源.Airbnb 在这次更新里尝试去解决了这两个问题,让我们跟随作者的文笔去了解一下整个项目的经过. 关于本文 原文作者:Cecil ...