npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

grunt-require

v1.1.2

Published

Easy switching between built and un-built versions of require.js based applications with grunt

Downloads

72

Readme

grunt-require

Easy switching between built and un-built versions of require.js based applications with grunt

Achieve easy switching between development and production-ready code without changing any script references within your HTML. Built and un-built application code is written into the same file so switching between them is super easy. The typical process for using this task is as follows:

  • run grunt requirejs:dev
  • default.js now contains references to requireJS and your main config file as well as an automatic require block for your "main" script - the entry point into your application.
  • work on your app code
  • run grunt requirejs:prod
  • default.js now contains a compressed and compiled version of your app code.
  • reload browser to see your optimised code running

By default the plugin will swap requireJS for almond as the AMD loader for the built code. Almond is a light-weight version of requireJS and is, therefore, preferable for production code. However, it does not have all the capabilities of requireJS and this should be taken into account. Read more about almond.

Getting Started

This plugin requires Grunt ~0.4.2

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-require --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-require');

The "requirejs" task

Overview

In your project's Gruntfile, add a section named requirejs to the data object passed into grunt.initConfig().

grunt.initConfig({
  requirejs: {
    options: {
        baseUrl: 'app/webroot/script',
        webroot: 'script',
        config: ['config.js'],
        name: 'main',
		require: 'libs/require',
		almond: 'libs/almond',
        out: 'app/webroot/script/default.js'
    },
    dev: {
		options: {
			build: false
		}
    },
    prod: {
		options: {
			build: true
		}
    }
  },
});

Options

The list of possible options is the same as requireJS's optimizer options, see the r.js example build file, with a few extras (described below).

options.baseUrl

Type: String Default value: ' '

Base url used for writing / loading scripts. You will typically need to overwrite this option with the path to your script files.

options.require

Type: String Default value: 'require'

Path to the requireJS library relative to the baseURL option.

options.almond

Type: String Default value: 'almond'

Path to the almond library relative to the baseURL option.

options.webroot

Type: String Default value: null

Base reference for script files. If not passed in then the value of the 'baseUrl' option will be used to generate script references.

options.name

Type: String Default value: 'bootstrap'

Name of the script that acts as the entry point into your application, relative to the baseURL option. This file will be automatically required in both the built and un-built scripts.

options.config

Type: String Default value: ['config.js']

Array of scripts that contains the main config for your application, relative to the webroot option. The paths are concatenated with the baseUrl option to generate the mainConfigFile option that is passed into the requireJS optimizer, if it is not passed in as an option.

options.out

Type: String Default value: 'default.js'

Path to file that built and un-built require app code is written to. You will typically need to overwrite this option with the path that you want your output to be written to.

options.include

Type: Array Default value: ['requireLib']

Includes the reserved 'requireLib' module, which will point to either requireJS or almond.

options.insertRequire

Type: Array Default value: ['bootstrap']

Insert a require(['bootstrap']); at the end of the build code to kick off the application code.

options.build

Type: Boolean Default value: true

Whether to optimize the application or not. If left as true all the application code (including requireJS will be compressed and compiled into the file specified in the 'out' option. If set to false. A reference to requireJS and the bootstrap file will be written into the file specified in the 'out' option.

options.includeAlmond

Type: Boolean Default value: true

Whether to include almond as the AMD library in the built code. If set to false requireJS will be included instead.

options.optimize

Type: String Default value: 'uglify'

Optimization method used by requireJS. Detailed here to show default value.

options.done

Type: Function Default value: function(done, response){done();}

Function that is invoked when requireJS has finished optimizing.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

  • 2014-07-07 v1.1.2 Fixed bug with "main" with config option not converted to an array if passed via command line.
  • 2014-05-21 v1.1.1 Fixed bug with "main" option not configurable. Update to "config" option which can now be passed in as an array.
  • 2014-03-11 v1.1.0 All options can now be passed in via the command line.
  • 2014-02-13 v1.0.5 Root-referenced initial request for config file.
  • 2014-02-13 v1.0.4 Added missing file extensions to default options.
  • 2014-02-13 v1.0.3 Fixed broken path to main config file for optimised code.
  • 2014-02-13 v1.0.2 Fixed face condition between config and bootstrap loading.
  • 2014-02-10 v1.0.1 Fixed bug with almond and mainConfigFile needed in separate file.
  • 2014-02-09 v1.0.0 Built script uses Almond as default AMD library.
  • 2014-01-10 v0.1.1 Fixed bug where main config file wasn't included in optimised script.
  • 2014-01-10 v0.1.0 Changed requireJS dependency to 2.1.x.
  • 2013-12-09 v0.0.5 Updated docs.
  • 2013-12-09 v0.0.4 Added 'webroot' option.
  • 2013-12-08 v0.0.3 Updated docs.
  • 2013-12-07 v0.0.2 Updated docs.
  • 2013-12-07 v0.0.1 Initial release.