Mercurial > nebulaweb3
diff default/node_modules/shoestring/Gruntfile.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/shoestring/Gruntfile.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,150 @@ +/* global module:false */ +module.exports = function(grunt) { + + var fs, files, opts, spawn, builds = {}; + + opts = { + baseUrl: "src", + name: "../build/REPLACE", + out: "dist/REPLACE.js", + mainConfigFile: "build/config/production.js" + }; + + fs = require( 'fs' ); + files = fs.readdirSync( "build/custom/" ); + + files.forEach(function( file ) { + if( /\.js$/.test(file) ){ + var name = file.replace(/\.js$/, ""), + o = Object.create(opts); + + builds[name] = { + options: o + }; + + builds[name].options.name = o.name.replace("REPLACE", "custom/" + name ); + builds[name].options.out = o.out.replace("REPLACE", name ); + } + }); + + builds.production = { + options: { + baseUrl: "src", + name: "../build/production", + out: "dist/production.js", + mainConfigFile: "build/config/production.js" + } + }; + + // NOTE config includes development + builds.development = { + options: { + baseUrl: "src", + // NOTE uses the same meta-module as production + name: "../build/development", + out: "dist/development.js", + mainConfigFile: "build/config/development.js" + } + }; + + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON( 'package.json' ), + + meta: { + banner: '/*! Shoestring - v<%= pkg.version %> - ' + + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + + '* http://github.com/filamentgroup/shoestring/\n' + + '* Copyright (c) <%= grunt.template.today("yyyy") %> ' + + 'Scott Jehl, Filament Group, Inc; Licensed MIT & GPLv2 */ \n' + }, + + qunit: { + files: ['test/unit/*.html'] + }, + + requirejs: builds, + + // NOTE purely for the banner + concat: { + options: { + banner: '<%= meta.banner %>', + stripBanners: true + }, + + production: { + src: ['dist/production.js'], + dest: 'dist/shoestring.js' + }, + + development: { + src: ['dist/development.js'], + dest: 'dist/shoestring-dev.js' + } + }, + + uglify: { + all: { + options: { + banner: '<%= meta.banner %>', + report: 'gzip' + }, + + files: { + 'dist/shoestring.min.js': ['dist/shoestring.js'], + 'dist/shoestring-dev.min.js': ['dist/shoestring-dev.js'] + } + } + }, + + jshint: { + all: { + options: { + jshintrc: ".jshintrc", + }, + + src: ['Gruntfile.js', 'src/**/*.js'] + } + }, + watch: { + js: { + files: [ + 'src/**' + ], + tasks: 'default' + } + } + }); + + spawn = require('child_process').spawn; + + grunt.registerTask('docs', function() { + var doxx, srcs, args = [], done = this.async(); + + for(var i in arguments){ + args.push(arguments[i]); + } + + srcs = args.length ? srcs = args.join(":") : "src"; + + doxx = spawn( 'node', ['node_modules/.bin/doxx', '--source', srcs, '--target', 'dist/docs']); + + doxx.on( 'close', function( code ) { + console.log( "doxx completed with exit code: " + code ); + done(); + }); + }); + + // These plugins provide necessary tasks. + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-qunit'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-requirejs'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + // Default task. + grunt.registerTask('build', 'requirejs concat uglify'.split(' ') ); + grunt.registerTask('test', 'jshint qunit'.split(' ') ); + grunt.registerTask('default', 'build test'.split(' ') ); +};