Open d0b1010r opened 8 years ago
@davidlanger Are your modules flattened with either npm dedupe
or using npm@3
?
Neither. npm -v
returns 2.14.6 and nothing more than what I described. Test case quoted below (browserify and factor-bundle have to be available)
mkdir -p bundle
# remove the installed moment modules
rm -r node_modules/moment*
# install moment first, moment-timezone second
npm install moment@2.10.6
npm install moment-timezone@0.4.1
# bundle all the things!
browserify entry1.js entry2.js -p [ factor-bundle -o bundle/entry1.js -o bundle/entry2.js ] -o bundle/common.js
# test if the bundled stuff works
cat bundle/common.js bundle/entry1.js | node && echo "WORKS"
# works!
# remove the installed moment modules
rm -r node_modules/moment*
# install moment-timezone first, moment second
npm install moment-timezone@0.4.1
npm install moment@2.10.6
# bundle all the things!
browserify entry1.js entry2.js -p [ factor-bundle -o bundle/entry1.js -o bundle/entry2.js ] -o bundle/common.js
# test if the bundled stuff works
cat bundle/common.js bundle/entry1.js | node
# does not work!
factor-bundle
creates broken bundles when required modules have linked dependencies. This happens for example when installingmoment-timezone
and afterwardsmoment
. Somoment
exists two times in thenode_modules
folder, once formoment-timezone
and once inmoment
. This seems to break browserify. When installing the modules the other way around the bundle does not break (this time there is only onemoment
).I don't know if this is more of a problem with the way npm install modules when they have duplicate dependencies or if this is a problem with factor bundle.
I set up a test case over at: https://github.com/davidlanger/factor-bundle-moment-timezone