Comments (8)
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.
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.
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.
@DimitarChristoff I'll see if I can get that to work as well. Thank you!
from amdclean.
no biggie :) only seen one other person use it and they copied it from me 👯
from amdclean.
@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.
@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.
Nice work! Thanks, Greg.
from amdclean.
Related Issues (20)
- Module config HOT 1
- source-map: sourcesContent lost HOT 1
- does amdclean support amd-feature loader plugin
- AMD checks transformations HOT 1
- Problems with "module" special dependency HOT 3
- require with named callback -- the callback is never called HOT 1
- bin/amdclean HOT 1
- AMD destroys multiline return statements HOT 3
- The variable conflict logic in v2.4.0 and onwards HOT 2
- var a = require('a') => var a = a;
- Bad output
- Deal with conditional loader HOT 1
- A comment in return statement leads to incorrect javascript
- function of the calling module goes before the called module: Cannot read property of undefined HOT 1
- Failed to require relative path
- UMD generated by rollup not recognized HOT 1
- define(modulename, dependencies...
- Bug: aggressiveOptimizations may shadow globals
- Comma-separated calls to define don't get translated HOT 1
- npmjs release update
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from amdclean.