npm似乎弄乱了调用uglifyjs的shell脚本

时间:2017-06-20 21:09:31

标签: npm

我有webpack使用babel将es6文件转换为es5。我想用uglifyjs压缩这些。我用到今天的方法是用npm:

调用这个脚本文件

scripts/uglifyjs

#!/usr/bin/env zsh

for file in ./public/assets/js/*.js
do
    echo "uglifying `basename $file`"
    uglifyjs --verbose --compress --source-map content=${file:2}.map,url=`basename $file`.map,filename=${file:2}.map,includeSources=true --output $file $file
done

在我的package.json

"scripts": {
    ...
    "uglifyjs": "scripts/uglifyjs",

获取被调用的第一个文件links.js。如果我手动输入命令是有效的:

$ uglifyjs --verbose --compress --source-map content=public/assets/js/links.js.map,url=links.js.map,filename=public/assets/js/links.js.map,includeSources=true --output ./public/assets/js/links.js ./public/assets/js/links.js
INFO: Using input source map: public/assets/js/links.js.map

运行npm run uglifyjs时出现以下错误:

$ npm run uglifyjs

> jbuk-frontend@0.0.1 uglifyjs /home/jonny/git/jonnybarnes.uk
> scripts/uglifyjs

uglifying links.js
fs.js:651
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open 'content=public/assets/js/links.js.map,url=links.js.map,filename=public/assets/js/links.js.map,includeSources=true'
    at Object.fs.openSync (fs.js:651:18)
    at Object.fs.writeFileSync (fs.js:1300:33)
    at done (/home/jonny/git/jonnybarnes.uk/node_modules/uglify-js/bin/uglifyjs:516:20)
    at cb (/home/jonny/git/jonnybarnes.uk/node_modules/uglify-js/bin/uglifyjs:324:39)
    at /home/jonny/git/jonnybarnes.uk/node_modules/uglify-js/bin/uglifyjs:391:9
    at tryToString (fs.js:512:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:500:12)

我不知道为什么我可以手动运行命令,但不能通过npm,它之前有效。这是npm v5的已知变化吗?

0 个答案:

没有答案