Skip to content

Authoring Notes and Warnings

anodynos edited this page Aug 17, 2014 · 4 revisions
  • .coffee, `.coco', '.iced', & '.ls' files are valid javascript source modules. All modules are compiled and parsed only as javascript; Module generation is again just javascript. If you want to have more compiled-to-javascript languages as source modules, its VERY easy: you dont need a a plugin, just declare it on bundle.resources.
  • Your requires should use a string, eg require('myModule'). Requires that evaluate at runtime, eg require(myVar + 'module') can't be possibly be evaluated at parse time and thus are unsafe at runtime - dont worry you'll get a warning.

  • Your module define(..) must be a top level in your .js (not nested inside some other code), with the exception of the safety wrapper (function(){...}).call() that coffeescript & family is generating.

  • Everything outside define is simply ignored, again with the exception of the safety wrapper in which case the statements before the define are correctly added to the generated modules.

  • Only one define() module per file is expected - you 'll get a compiled error if more than 1 is found.

  • Each generated module has 3 convenience variables that detect the runtime environment: __isAMD, __isNode & __isWeb. They can be ommitted through the build.runtimeInfo flag.

  • You can use the .js extension (but why?) on your dependencies (eg require('../mylib.js'), as it is allowed by nodejs. Because of the different semantics in RequireJS, its fixed(i.e stripped) by uRequire ONLY if not really needed (i.e it exists on your bundle dir). Otherwise its NOT stripped.

  • Comments are ignored, its the parser used - for other possible parsing limitations consult esprima.

  • You can use the nodejs require('./some/dirName') that is converted to require('./some/dirName/index') so it works on AMD / UMD. It needs 'index.js' (or 'index.coffee', 'index.iced' etc) to be present inside './some/dirName/' directory.