Comments (12)
For this particular case, I think you will want to set the globalObject
option to true
. This will be the output when using it:
AMD
define('testing', function (require) {
var Q = require('Q');
});
Standard JavaScript
var amdclean = {};
amdclean['testing'] = function () {
var Q = amdclean['Q'];
}();
from amdclean.
Maybe a note in the documentation may help other people not to face the same issue and think the program doesn't work?
I don't see how findNestedDependencies will help here :\
from amdclean.
Should I add it to the Frequently Asked Questions in the README? Where do you think I should put it?
Also, you're right about the findNestedDependencies
option not being applicable in this situation. My bad!
from amdclean.
I think in README.md, where CJS wrapper support is listed. I can make a pull request if you wish.
from amdclean.
That would be great. Much appreciated.
from amdclean.
Note: The globalObject
option is going to be removed in the AMDClean 2.0.0
release. More details to come shortly...
from amdclean.
But there will be an alternative solution for this, right?
from amdclean.
Yea, basically in the 2.0.0
version, your code would be converted to this:
var testing,
Q;
// Q is set to whatever it returns
Q = function() {};
testing = function () {
// Your local Q is no longer needed and will be removed
// Whatever else is in this function block will appear next
}();
All module variable instantiations will be hoisted to prevent scoping issues and duplicate local variables inside of modules will be removed in favor of the higher scoped instantiations.
from amdclean.
It's and edge case but this can create conflict because on AMD you can have variables called like a module
define('helper', function() { ... });
define('foo', function(require) {
var _ = require('helper');
function helper() { ... }
});
If I get it right the new conversion will be
var helper, foo;
helper = function() { ... }();
foo = function() {
// ups! hoisting...
var _ = helper;
function helper() { ... }
}();
This is not an CommonJS wrapper issue since it can be written on simple AMD
define('helper', [], function() { ... });
define('foo', ['helper'], function(_) {
function helper() { ... }
});
The same can happen with something like
define('tools', function() { ... });
define('foo', function(require) {
var inherit = require('tools').inherit;
var tools = { ... };
});
from amdclean.
Actually, now that I think about it some more, I don't see this as a problem. It is fine that you overwrite the local scope, since the global variable scope will remain intact.
from amdclean.
Yes it will only make fail the module than does this, it's an edge case but for me the problem is than it produces a silent but than will be hard to spot.
from amdclean.
I'm still okay with it, but may change my mind in the future.
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.