mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Simplify the terminal command args syntax for custom builds. Update README
This commit is contained in:
parent
47298a7d16
commit
f13de6b3d6
19
README.md
19
README.md
@ -75,6 +75,7 @@ The built version of jQuery will be put in the `dist/` subdirectory.
|
||||
Starting in jQuery 1.8, special builds can now be created that optionally exclude or include any of the following modules:
|
||||
|
||||
- ajax
|
||||
- css
|
||||
- dimensions
|
||||
- effects
|
||||
- offset
|
||||
@ -85,34 +86,42 @@ To create a custom build, use the following special `grunt` commands:
|
||||
Exclude **ajax**:
|
||||
|
||||
```bash
|
||||
grunt build:*:*:-ajax
|
||||
grunt custom:-ajax
|
||||
```
|
||||
|
||||
Exclude **css**:
|
||||
|
||||
```bash
|
||||
grunt custom:-css
|
||||
```
|
||||
|
||||
Exclude **dimensions**:
|
||||
|
||||
```bash
|
||||
grunt build:*:*:-dimensions
|
||||
grunt custom:-dimensions
|
||||
```
|
||||
|
||||
Exclude **effects**:
|
||||
|
||||
```bash
|
||||
grunt build:*:*:-effects
|
||||
grunt custom:-effects
|
||||
```
|
||||
|
||||
Exclude **offset**:
|
||||
|
||||
```bash
|
||||
grunt build:*:*:-offset
|
||||
grunt custom:-offset
|
||||
```
|
||||
|
||||
Exclude **all** optional modules:
|
||||
|
||||
```bash
|
||||
grunt build:*:*:-ajax:-dimensions:-effects:-offset
|
||||
grunt custom:-ajax,-css,-dimensions,-effects,-offset
|
||||
```
|
||||
|
||||
|
||||
Note: dependencies will be handled internally, by the build process.
|
||||
|
||||
|
||||
Running the Unit Tests
|
||||
--------------------------------------
|
||||
|
74
grunt.js
74
grunt.js
@ -181,7 +181,41 @@ module.exports = function( grunt ) {
|
||||
});
|
||||
|
||||
|
||||
// Special "alias" task to make custom build creation less grawlix-y
|
||||
grunt.registerTask( "custom", function() {
|
||||
var done = this.async(),
|
||||
args = [].slice.call(arguments),
|
||||
modules = args.length ? args[0].replace(/,/g, ":") : "";
|
||||
|
||||
|
||||
// Translation example
|
||||
//
|
||||
// grunt build:+ajax,-dimensions,-effects,-offset
|
||||
//
|
||||
// Becomes:
|
||||
//
|
||||
// grunt build:*:*:-ajax:-dimensions:-effects:-offset
|
||||
|
||||
grunt.log.writeln( "Creating custom build...\n" );
|
||||
|
||||
grunt.utils.spawn({
|
||||
cmd: "grunt",
|
||||
args: [ "build:*:*:" + modules ]
|
||||
}, function( err, result ) {
|
||||
if ( err ) {
|
||||
grunt.verbose.error();
|
||||
done( err );
|
||||
return;
|
||||
}
|
||||
|
||||
grunt.log.writeln( result.replace("Done, without errors.", "") );
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
// Special concat/build task to handle various jQuery build requirements
|
||||
//
|
||||
grunt.registerMultiTask(
|
||||
"build",
|
||||
"Concatenate source (include/exclude modules with +/- flags), embed date/version",
|
||||
@ -190,6 +224,7 @@ module.exports = function( grunt ) {
|
||||
var i,
|
||||
compiled = "",
|
||||
modules = this.flags,
|
||||
explicit = Object.keys(modules).length > 1,
|
||||
optIn = !modules["*"],
|
||||
name = this.file.dest,
|
||||
excluded = {},
|
||||
@ -208,6 +243,7 @@ module.exports = function( grunt ) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// figure out which files to exclude based on these rules in this order:
|
||||
// explicit > implicit (explicit also means a dependency/dependent that was explicit)
|
||||
// exclude > include
|
||||
@ -215,9 +251,9 @@ module.exports = function( grunt ) {
|
||||
// *: none (implicit exclude)
|
||||
// *:* all (implicit include)
|
||||
// *:*:-effects all except effects (explicit > implicit)
|
||||
// *:*:-css all except css and it's deps (explicit)
|
||||
// *:*:-css:+effects all except css and it's deps (explicit exclude from dep. trumps explicit include)
|
||||
// *:+effects none except effects and it's deps (explicit include from dep. trumps implicit exclude)
|
||||
// *:*:-css all except css and its deps (explicit)
|
||||
// *:*:-css:+effects all except css and its deps (explicit exclude from dep. trumps explicit include)
|
||||
// *:+effects none except effects and its deps (explicit include from dep. trumps implicit exclude)
|
||||
this.file.src.forEach(function( filepath ) {
|
||||
var flag = filepath.flag;
|
||||
|
||||
@ -236,13 +272,37 @@ module.exports = function( grunt ) {
|
||||
|
||||
// conditionally concatenate source
|
||||
this.file.src.forEach(function( filepath ) {
|
||||
var flag = filepath.flag;
|
||||
var flag = filepath.flag,
|
||||
specified = false,
|
||||
message = "";
|
||||
|
||||
if ( flag ) {
|
||||
if ( excluded[ flag ] !== undefined ) {
|
||||
log.writeln( "Excluding " + flag + ": '" + filepath.src + "'." );
|
||||
return;
|
||||
message = ( "Excluding " + flag ).red;
|
||||
specified = true;
|
||||
} else {
|
||||
message = ( "Including " + flag ).green;
|
||||
|
||||
// If this module was actually specified by the
|
||||
// builder, then st the flag to include it in the
|
||||
// output list
|
||||
if ( modules[ "+" + flag ] ) {
|
||||
specified = true;
|
||||
}
|
||||
}
|
||||
log.writeln( "Including " + flag + ": '" + filepath.src + "'." );
|
||||
|
||||
// Only display the inclusion/exclusion list when handling
|
||||
// an explicit list.
|
||||
//
|
||||
// Additionally, only display modules that have been specified
|
||||
// by the user
|
||||
if ( explicit && specified ) {
|
||||
grunt.log.writetableln([ 27, 30 ], [
|
||||
message,
|
||||
( "(" + filepath.src + ")").grey
|
||||
]);
|
||||
}
|
||||
|
||||
filepath = filepath.src;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user