I have a fresh virtualenv environment and have got the latest django-pipleline.
The JS compression with Closure works perfect, but CSS compression with Yuglify fails, due a node error:
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.closure.ClosureCompressor'
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'
When I try to collect the static:
./manage.py collectstatic
It says:
pipeline.compressors.CompressorError: /usr/bin/env: node: No such file or directory
But I have clearly installed yuglify even as global:
sudo npm -g install yuglify
/usr/local/bin/yuglify -> /usr/local/lib/node_modules/yuglify/bin/yuglify
yuglify@0.1.2 /usr/local/lib/node_modules/yuglify
├── uglify-js@1.3.4
├── ycssmin@1.0.1
└── nopt@2.1.1
Trying to set the biney in settings doesn't help either:
PIPELINE_YUGLIFY_BINARY = '/usr/local/bin/yuglify'
I still get the same error. Why now such problems with npm? Is there something I have to setup additionally?
Alternatively is there a way to install yuglify with pip?
Many Thanks,
After 3 hours of suffering, I have found the solution.
This is happening because of a misnaming error, if you install from a package manager (npm) your bin may be called nodejs so you just need to symlink it like this:
ln -s /usr/bin/nodejs /usr/bin/node
Now it is working. This didn't happen with the older version, its is something new. But at least it is working again. I hope this helps someone else out there. :)
In my case both uglify-js and cssmin were somehow not installed.
So I have re-installed them again by using following command and then it starts working again.
sudo npm install -g cssmin uglify-js
来源:https://stackoverflow.com/questions/14567960/yuglify-compressor-cant-find-binary-from-package-installed-through-npm