Giter Club home page Giter Club logo

Comments (8)

brettjonesdev avatar brettjonesdev commented on July 24, 2024

Kind of a funny side note: If I change the Backbone.Validation code to the following, it works:

define(['backbone', 'underscore'], function(backbone, underscore) {
            factory(backbone, underscore);
        });

So basically, wrapping a useless inline function around factory gives me what I want. :)

from amdclean.

gfranko avatar gfranko commented on July 24, 2024

Thanks for catching this bug Brett! Let me see if I can fix it within the next hour and I'll push a new release out. In exchange for fixing this, would you mind trying out AMDClean v2.0 beta sometime this week? =)

from amdclean.

DimitarChristoff avatar DimitarChristoff commented on July 24, 2024

here's another one that will break - a variant of the factory pattern I like:

;(function(factory){
    // UMD wrap
    if (typeof define === 'function' && define.amd){
        define('primish/options', ['./primish'], factory);
    } else if (typeof module !== 'undefined' && module.exports){
        module.exports = factory(require('./primish'));
    } else {
        this.options = factory(this.primish);
    }
}).call(this, function(primish){
...
});

original: https://github.com/DimitarChristoff/primish/blob/master/options.js#L5-L14

ends up being:

(function (factory) {
    // UMD wrap
    if (true) {
        var primish_options = function (primish_primish) {
                return factory();
            }(primish_primish);
    } else if (typeof module !== 'undefined' && module.exports) {
        module.exports = factory(primish);
    } else {
        this.options = factory(this.primish);
    }
}.call(this, function (primish) {
...
});

throws a reference error - http://jsfiddle.net/rnGvV/

ReferenceError: primish_primish is not defined
http://fiddle.jshell.net/rnGvV/show/
Line 221

to test it locally:

$ git clone https://github.com/DimitarChristoff/primish
$ cd primish
$ npm i amdclean
$ npm i
$ vim Gruntfile.js
$ grunt requirejs

File should add your standard callback and set optimize to none:

        requirejs: {
            build: {
                options: {
                    optimize: 'none', // so you can read it
                    out: './primish-min.js',
                    skipModuleInsertion: true,
                    // build all cept for components
                    include: [
                        'primish',
                        'options',
                        'emitter'
                    ],
                    onModuleBundleComplete: function(data){
                        var fs = require('fs'),
                            amdclean = require('amdclean'),
                            outputFile = data.path;

                        fs.writeFileSync(outputFile, amdclean.clean({
                            'filePath': outputFile
                        }));
                            }
                }
            },
        }

hope it helps, I know it's not the most popular pattern out there but there you go.

from amdclean.

gfranko avatar gfranko commented on July 24, 2024

@DimitarChristoff I'll see if I can get that to work as well. Thank you!

from amdclean.

DimitarChristoff avatar DimitarChristoff commented on July 24, 2024

no biggie :) only seen one other person use it and they copied it from me 👯

from amdclean.

gfranko avatar gfranko commented on July 24, 2024

@DimitarChristoff So the reason you are seeing your module dependency being converted to primish_primish is because your dependency is a relative path. Since your moduleID is primish/options, AMDClean assumes your ./primish dependency is at the same folder level as options. Hence the primish_primish naming convention.

from amdclean.

gfranko avatar gfranko commented on July 24, 2024

@brettjonesdev AMDClean now makes sure to pass the correct dependencies to the factory function in the 1.5.0 release. Let me know if you run into any more issues man.

from amdclean.

brettjonesdev avatar brettjonesdev commented on July 24, 2024

Nice work! Thanks, Greg.

from amdclean.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.