the no-library library: open module JavaScript framework

Overview

ENDER

Ender is a full featured package manager for your browser

It allows you to search, install, manage, and compile front-end JavaScript packages and their dependencies for the web. We like to think of it as NPM's little sister.

Ender is not a JavaScript library

It's not a jQuery replacement. It's not even a static asset. It's a tool for making the consumption of front-end JavaScript packages dead simple and incredibly powerful.

Ender

WHY?

In the browser - small, loosely coupled modules are the future and large, tightly-bound monolithic libraries are the past!

Ender capitalizes on this by offering a unique way to bring together the exciting work happening in JavaScript packages and allows you to mix, match, and customize your own build, suited to your individual needs, without all the extra cruft that comes with larger libraries.

With Ender, if one library goes bad or unmaintained, it can be replaced with another. Need a specific package version? No problem! Does your package have dependencies? Let us handle that for you too!

MORE INFO

For more information checkout http://enderjs.com

BUILD STATUS

Ender Build Status

Ender Args Parser Build Status

Ender Builder Build Status

Ender Dependency Graph Build Status

Ender Installer Build Status

Ender Minify Build Status

Ender Package Util Build Status

Ender Repository Build Status

Licence

Ender is Copyright (c) 2012-2013 Dustin Diaz @ded, Jacob Thornton @fat and Rod Vagg @rvagg and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.

Comments
  • installing dependencies separately fails in some cases

    installing dependencies separately fails in some cases

    Works

    ender build jQuery campusbooks
    

    Fails

    ender build jQuery ahr2 campusbooks
    
    Welcome to ENDER - The no-library library
    -----------------------------------------
    installing packages: "ender-js jQuery campusbooks"...
    this can take a minute...
    successfully finished installing packages
    assembling packages...
    The package.json for campusbooks/ahr2 could not be found.
    ender.js successfully built!
    ender.min.js successfully built!
    

    Additionally, this reports a successful build when it wasn't actually successful

    opened by coolaj86 30
  • Licensing concerns

    Licensing concerns

    I grabbed the latest version of Ender and used the build command with 4 packages:

    ender build domready qwery bean jquery
    

    Note: the license for jQuery is dual MIT/GPLv2.

    The output I got was:

    /*!
      * Ender: open module JavaScript framework
      * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat)
      * https://ender.no.de
      * License MIT
      * Build: ender build domready qwery bean jquery
      */
    <minified code>
    

    The concern I have is that not only is the minifed file licensed entirely under Dustin Diaz and Jacob Thornton, but its also entirely now licensed under MIT. All the required comment headers containing licensing are also now stripped.

    Are there any plans to correct how this build script outputs?

    opened by tbranyen 28
  • Source Map support

    Source Map support

    This issue is for discussion of adding Source Map support to Ender so we can ship map data with the ender.min.js for easier debugging. Since (I believe) source maps can map a single minified file to multiple original source files it might enable some neat debugging foo where the original npm package source files can be referenced so you'd even get line-numbers back to your original source file(s).

    Resources:

    Nothing in UglifyJS yet, but perhaps this is something we can encourage for their 2.0 rewrite/rework. Alternatively perhaps we can switch to Closure Compiler if you need an Ender build with Source Map output.

    Discussion 1.0-wip 
    opened by rvagg 22
  • ender doesn't exit

    ender doesn't exit

    Using node v0.6.6 and executing ender build or ender refresh - neither of them exits. Hit CTRL-C and it's ok. But if you have a larger build task it's no good. This is not a problem with v0.4.12

    opened by orlin 18
  • Ender.js doesnt build

    Ender.js doesnt build

    make doesnt work with latest ender.js

    node make/build.js
    
    node.js:63
        throw e;
        ^
    Error: Cannot find module 'colors'
        at loadModule (node.js:275:15)
        at require (node.js:411:14)
        at Object.<anonymous> (/home/user/Development/Ender.js/build/smoosh/lib/smoosh/index.js:2:14)
        at Module._compile (node.js:462:23)
        at Module._loadScriptSync (node.js:469:10)
        at Module.loadSync (node.js:338:12)
        at loadModule (node.js:283:14)
        at require (node.js:411:14)
        at Object.<anonymous> (/home/user/Development/Ender.js/build/smoosh/index.js:1:80)
        at Module._compile (node.js:462:23)
    make: *** [boosh] Error 1
    
    opened by sha1dy 18
  • Multiple includes with relative require()s

    Multiple includes with relative require()s

    Just recording this while I think of it.

    Since people seem to assume that Ender supports require('./relative') and can bundle multiple files into a single build, why not support it?

    Some package.json adjustments would be required. maybe:

      "main": [ "dist/module1.js", "dist/module2.js", "dist/module2.js" ]
    

    or

      "ender": {
        include: [ "dist/module1.js", "dist/module2.js", "dist/module2.js" ],
        bridge: "dist/ender.js"
       }
    

    If you have multiple includes then it wraps the whole lot with a version of require() that can resolve local names but those names aren't available outside of the bundle. e.g. dist/module1.js could call require('./module2.js') but you couldn't do the same from another ender package. It could even be made aware of the relative locations of the files so you can require('../lib/file.js') from one location and require('./file.js') from the same directory as file.js and resolve to the same module depending on what module it was called from -- making it pretty much the same as what people expect from Node.

    Discussion 1.0-wip 1.0-blocker 
    opened by rvagg 16
  • Sourcemaps

    Sourcemaps

    To test, just ender build any library, create a test.html file that loads the ender.min.js file, and run it in Chrome (don't forget to turn on Source Maps in the Inspector options). I haven't tested it with anything other than small and simple libraries yet, but it should work with any library that consists of one main file. I don't think whether or not it has an ender bridge should matter.

    opened by download13 13
  • Packaging Qs

    Packaging Qs

    The forum has a whole bunch of spam / porn / etc. So I don't know where else to ask these Qs. Is there another place to get issues addressed?

    1. The commands _'ender build backbone'_ hangs after successful completion

    2. I'm having a few problems with _'ender build backbone -o js/backbone.js'_ i) will put both the backbone and underscore into the same file ( I'd prefer them separated out ) ii) it doesn't pull in other dependencies, like json2.js

    3. For _'ender build'_, can we choose a different sub-directory than node_modules/ . --output targets a specific file instead of allowing a different output directory

    4. Backbone comes packaged with underscore. But _'ender build'_ creates a directory structure like: node_modules/backbone/node_modules/underscore/ . I'd like to have something more like A) or B) . Is this possible?

        A) lib/
            backbone/
            underscore/ 
    
        B) lib/
            common/underscore/
            backbone/
    

    Thanks Tim

    opened by twashing 13
  • Add compatibility with npm 1.x

    Add compatibility with npm 1.x

    I'm using npm 1.x (currently in RC and soon to be the standard). ender -b fails due to two issues:

    1. If I use npm install -g ender to do a global install, then npm ls installed won't work (since it only shows locally installed things). You should try npm ls installed first, and then if that fails, try npm ls installed -g.
    2. Even if I do a local install, the regex gets nothing because npm's ls installed output now looks like this:
    └─┬ [email protected] 
      ├── [email protected] 
      ├── [email protected] 
      └─┬ [email protected] 
        ├─┬ [email protected] 
        │ └── [email protected] 
        ├── [email protected] 
        ├── [email protected] 
        ├─┬ [email protected] 
        │ └── [email protected] 
        ├── [email protected] 
        └── [email protected]
    

    The re regex can't handle all that extra whitespace and weird characters. You should change it to ignore everything from the start of the line up until the first word character.

    opened by TrevorBurnham 13
  • use `enderDependencies` instead of `dependencies` if exists

    use `enderDependencies` instead of `dependencies` if exists

    In the case where ender's dependencies are not the same as node's dependencies (node has events built-in, node doesn't. The browser has localStorage built in, node doesn't) there should be alternate dependency list.

    https://groups.google.com/d/msg/npm-/0Z5hE-41Rpc/iOKJ9x4jzJ8J

    Also, there should be a way to provide one package AS another. I.E. it should be possible to provide events.node AS events, etc.

    opened by coolaj86 12
  • ".bin" dir in node_modules causes ender build failure

    The package "view" includes other modules which have associated bin scripts. This creates a ".bin" directory in view's node_modules directory.

    npm install view -g ender build view

    Will throw error: "something went wrong while trying to read node_modules/view/node_modules/.bin/package.json"

    In ender.file.js I've added this check which fixes the problem for me:

    , constructDependencyTree: function (packages, dir, callback) {
        var tree = {}, x = 0;
        packages.forEach(function (name) {
          if(name == '.bin'){
            return;
          }
          ...
    

    I'm not going to do a push request for this because it seems like there needs to be a more comprehensive check somewhere.

    Thanks - Ryan

    opened by eastridge 12
  • Udacity

    Udacity

    opened by huxinyu109 0
  • Building alternative version of my lib

    Building alternative version of my lib

    How would you go about building your library in two different versions: a regular one, and a "dev" one that includes a second script? I'm currently trying to do it using gulp, but it's tricky and requires an extra tool to do it.

    --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32615967-building-alternative-version-of-my-lib?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github).
    opened by lopis 0
  • Is Ender mature or abandon?

    Is Ender mature or abandon?

    I'm surveying the js build tool landscape and is very interested in Ender but the lack of github commits and reason mentions on the web is a little worrisome.

    Is Ender just that mature that no commits are necessary or have everyone jumped ship and are using the next thing?

    We are putting together a new platform based on node and we are convening the following tech/tools: express.js as server, npm as build tool, postcss for css processing and a tat of bower.js to download front-end libraries/jquery-plugins. I'm not very attached to the bower part and Ender seems to be a shoe-in for bower packages.

    --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27614892-is-ender-mature-or-abandon?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github).
    opened by dotnetCarpenter 3
  • The package tap does not satisfy its siblings' peerDependencies requirements!

    The package tap does not satisfy its siblings' peerDependencies requirements!

    Hi,

    I checked out the source and tried to install the node modules. This occurs the following error:

    Arkans-MacBook-Pro:Ender tobiasoberrauch$ npm i
    npm WARN package.json [email protected] No repository field.
    npm ERR! Darwin 14.1.1
    npm ERR! argv "node" "/usr/local/bin/npm" "i"
    npm ERR! node v0.12.2
    npm ERR! npm  v2.7.4
    npm ERR! code EPEERINVALID
    
    npm ERR! peerinvalid The package tap does not satisfy its siblings' peerDependencies requirements!
    npm ERR! peerinvalid Peer [email protected] wants [email protected]
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     /Users/tobiasoberrauch/www/tobiasoberrauch/Ender/npm-debug.log
    
    

    Here is the full log https://gist.github.com/tobiasoberrauch/ab40cc1bc58d2b136556

    During this research I found that all devDependencies hasn't a fixed version number.

    "devDependencies": {
        "bustermove": "*",
        "referee": "*",
        "tap": "*",
        "rimraf": "*",
        "jshint": "*",
        "mkfiletree": "*"
      }
    

    Maybe this is the reason?

    Thank you for Ender. In my project it works like a charm. But now is the time to checkout the source, install all deps and contribute :)

    Cheers Tobias

    --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25504250-the-package-tap-does-not-satisfy-its-siblings-peerdependencies-requirements?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github).
    opened by tobiasoberrauch 3
  • Use with WebPack

    Use with WebPack

    I would like to get away from using jQuery or similar alternatives - since none of them provide wht I am looking for. Not that they don't have it - but they are way, way waaaay too big. So I thought I'd give Ender a try.

    For that, however, I'd need to know if:

    • Ender supports RequireJS/CommonJS. (NodeJS like module context in the browser)
    • there is an "index" of packages for Ender that i can browse

    Kind regards, Ingwie! :)


    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    opened by IngwiePhoenix 1
  • Ender cli -

    Ender cli - "ender info" fails when local packages are added as path like "package-folder/"

    Well ... Documentation says that "ender add" can use paths to the folder's package but when a package is added as path like like "package-folder/" (with the trailing "/") from this moment ahead all "ender info" commands fails with the following error: "Package Not Local Error: Can only find packages by path or name".

    There is no problem when adding packages like "ender add package-folder" (without a trailing "/"). And I see no difference in output for those two modes. So, maybe (IMHO), should eliminate one possibility or making bot working.

    Thanks guys for such a useful tool like ender.

    --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/11379264-ender-cli-ender-info-fails-when-local-packages-are-added-as-path-like-package-folder?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F165667&utm_medium=issues&utm_source=github).
    opened by florinj 1
An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

Snyk Labs 46 Nov 14, 2022
the no-library library: open module JavaScript framework

ENDER Ender is a full featured package manager for your browser It allows you to search, install, manage, and compile front-end JavaScript packages an

Ender 1.8k Nov 21, 2022
Reference for How to Write an Open Source JavaScript Library - https://egghead.io/series/how-to-write-an-open-source-javascript-library

Reference for How to Write an Open Source JavaScript Library The purpose of this document is to serve as a reference for: How to Write an Open Source

Sarbbottam Bandyopadhyay 173 Nov 22, 2022
Fintoc.js ES Module - Use the Fintoc widget as an ES module

Fintoc.js ES Module Use the Fintoc widget as an ES module. Installation Install using npm! (or your favourite package manager) # Using npm npm install

Fintoc 6 May 13, 2022
Template Repository for making your own budder Module. CORE is not included, this is just for the module.

A quick copy of the "How to make your own module" section Check out the official budderAPI repository Template Repository for making your own budder M

Logic 2 Apr 3, 2022
Userland module that implements the module path mapping that Node.js does with "exports" in package.json

exports-map Userland module that implements the module path mapping that Node.js does with "exports" in package.json npm install exports-map Usage co

Mathias Buus 9 May 31, 2022
A module federation SDK which is unrelated to tool chain for module consumer.

hel-micro, 模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 Demo hel-loadash codesandbox hel-loadash git Why hel-micro 如何使用远程模块 仅需要一句npm命令即可载入远程模块,查看下面例子线上示例 1 安装hel-micr

腾讯TNTWeb前端团队 263 Nov 25, 2022
Webpack is an open-source JavaScript module bundler. This includes basic setup files to help me not redo all the setups for webpack when starting a new project.

Webpack Setup Webpack is an open-source JavaScript module bundler. It is made primarily for JavaScript, but it can transform front-end assets such as

Nemwel Boniface 14 Jun 23, 2022
OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:

A progressive Node.js framework for building efficient and scalable server-side applications. Description OpenAPI (Swagger) module for Nest. Installat

nestjs 1.2k Nov 21, 2022
Tile38 module for Nest framework (node.js)

Description Tile38 module for Nest. This package is based on Tile38-ts, so visit its documentation for any questions about the API. Installation $ npm

Lorenzo Gigli 11 Sep 22, 2022
Memcached module for Nest framework (node.js) 🐈

Memcached module and service for Nest, a progressive Node.js framework for building efficient and scalable server-side applications. Installation npm

Andrea Francesco Speziale 10 Nov 11, 2022
Whatsapp bot using Bailey multi device module, using nodejs and open source, I accept ideas from public

Allen Bot-Wa Keep copyright, Created by lolhuman | Please read carefully Content Description Example Highlights TODO Installation FAQ Contributing Con

Pais 34 Nov 13, 2022
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.

Babylon.js Getting started? Play directly with the Babylon.js API using our playground. It also contains a lot of samples to learn how to use it. Any

Babylon.js 18.9k Nov 30, 2022
wolkenkit is an open-source CQRS and event-sourcing framework based on Node.js, and it supports JavaScript and TypeScript.

wolkenkit wolkenkit is a CQRS and event-sourcing framework based on Node.js. It empowers you to build and run scalable distributed web and cloud servi

the native web 1.1k Nov 21, 2022
Opentip is an open source javascript tooltip based on the protoype framework.

Opentip Opentip is a free opensource Java-Script tooltip class. Features It supports: Stems (little pointers) Automatic content download with AJAX Dif

Matias Meno 1.3k Nov 19, 2022
An open source Javascript framework for detecting the Adobe Flash Player plugin and embedding Flash (swf) files.

— IMPORTANT UPDATE —¶ ↑ SWFObject is no longer in active development. Flash Player is on the decline, and the authors of SWFObject have moved on to ot

null 1.2k Nov 19, 2022
Dojo Framework. A Progressive Framework for Modern Web Apps

@dojo/framework Dojo is a progressive framework for modern web applications built with TypeScript. Visit us at dojo.io for documentation, tutorials, c

Dojo 546 Nov 21, 2022
BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.

chai Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. For more in

Chai.js Assertion Library 7.8k Nov 24, 2022