-
Notifications
You must be signed in to change notification settings - Fork 2
/
config.sample.js
169 lines (143 loc) · 5.62 KB
/
config.sample.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
export default {
// [Optional] Directory from which all assets paths are relative.
// Default = "."
src: ".",
output: {
// [Mandatory] Directory in which all webtamp output is written.
dir: "dist",
// [Optional] The filename template for all output.
//
// Replaces tokens:
// * [name] - The filename without path and without file extension.
// * [ext] - The file extension.
// * [basename] - The file basename, equivalent to [name].[ext]
// * [path] - The path relative to the src directory.
// * [hash] - A hash of the file content (using the default hash algorithm).
// You can also specify a specific algorithm like [sha256], [md5], etc.
// * [hash:n] - As above but truncated to n chars.
//
// Default = "[basename]"
name: '[basename]',
// [Optional]
// True - Write the manifest to manifest.json.
// False - Don't create a manifest file.
// String - Write the manifest to this filename.
//
// Default = true
manifest: true,
},
// Mandatory assets
//
// An object where the:
// * keys are the names (ids) of the asset(s). Used to require other assets.
// * values are the asset value(s) which can be:
// * String - Requires another asset as a dependency.
// * Object[type=local] - Zero or more local files. These will be copied to config.output.dir when required.
// * Object[type=cdn] - A CDN-hosted asset.
// * Object[type=external] - A path that will be served by your server, that you want to trust to exist.
// * Array - A collection of the above.
assets: {
// Example of type=local
localExample: {
type: 'local',
// [Mandatory] Local files to glob.
files: 'images/**/*.{png,jpg}',
// [Optional]
// Bool - Whether to include these files in the manifest.
// Path => String - Function that takes an asset path+filename and if it is desirable to
// - include it in the manifest, returns a manifest name.
//
// Default = false
manifest: false,
// [Optional] Directory from which the files glob is relative.
// If unspecified, the root config.src value is used.
//
// Default = undefined = config.src
src: undefined,
// [Optional] Specify a sub-directory in the output directory in which to copy assets.
//
// Default = undefined = "/"
outputPath: undefined,
// [Optional] Override the filename template from config.output.name
//
// Default = undefined = config.output.name
outputName: undefined,
// [Optional] Whether these files are transitive dependencies of something else.
// These are typically fonts and images used by a 3rd-party non-modular library.
//
// Transitive dependencies:
// * have outputName of "[path]/[basename]"
// * are not modified or renamed by plugins
// * are not loaded directly (i.e. the HTML.replace plugin will not insert tags to load these assets).
//
// Default = false
transitive: false,
// [Optional] Validate the glob results.
//
// The main format is a function that takes an array of matched files and returns
// an erorr msg (or array of error msgs) if anything is wrong.
// (files :: Array, glob :: String, srcDir :: String) => String | Array String | something falsy
//
// Other acceptable values are:
// Bool - No validation/errors. Any results pass.
// String - Always fail with given error.
//
// Default = fail when 0 files found
validate: false,
}
// Example of type=cdn
cdnExample: {
type: 'cdn',
// [Mandatory] The asset URL
url: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js',
// [Optional] Specify the link integrity attribute. (SRI)
// Default = undefined
//
// Example: A trusted value to use.
integrity: 'sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=',
// Example: Calculate the integrity using trusted, local files.
integrity: {
files: 'node_modules/jquery/dist/jquery*.js', // A glob pattern (multiple files are legal)
algo: 'sha256', // String | Array String - hash algorithms to use (multiple files are legal)
},
// [Optional]
// undefined | "style" | "script"
as: undefined,
// [Optional]
// Bool - Whether to include this in the manifest.
// String => String - Function that takes the URL if it is desirable to include it in the manifest,
// returns a manifest name.
//
// Default = false
manifest: false,
},
// Example of type=external
externalExample: {
type: 'external',
// [Mandatory] The asset path relative to your server root
path: '/stats.json?time=1d',
// [Optional]
// Bool - Whether to include this in the manifest.
// String => String - Function that takes the path above if it is desirable to include it in the manifest,
// returns a manifest name.
//
// Default = false
manifest: false,
},
// You can create new assets that simply depend on another. Effectively an alias.
aliasExample: "cdnExample",
// You can merge any of the above into an array to make a bundle.
bundleExample: [
{type: 'local', files: 'robot.txt'},
'aliasExample',
'localExample',
],
},
// Optional assets
optional: {
// same as 'assets' above
},
plugins: [
// State => Unit
]
}