NPM也提供了自动化的工具,虽然有点初级,可是不少时候够用,而且不须要学习 Grunt 这样的任务自动化工具,减掉一个额外的学习负担。npm
假设咱们使用它来作js文件的混淆,咱们须要以下组件:json
uglify-es
复制代码
首先安装在继续学习前,你须要先将它安装到环境中:app
npm install --save-dev uglify-es
复制代码
假定你有一个项目,应该有一个配置好package.json
,咱们可使用以下命令生成此文件:工具
npm init -y
复制代码
NPM使用文件package.json内的script部分键来描述自动化工具执行,像是这样:学习
"scripts": {
"mangle": "mkdir -p dist/js && uglifyjs src/*.js -m --mangle-props -c toplevel -o dist/app.js"
}
复制代码
咱们生成一个测试用文件:测试
touch src/action.jsthis
咱们就是生成此文件的对应压缩文件。内容以下:spa
var x = {
baz_: 0,
foo_: 1,
calc: function() {
return this.foo_ + this.baz_;
}
};
x.bar_ = 2;
x["baz_"] = 3;
console.log(x.calc());
复制代码
如今,你只须要执行以下命令,便可生产压缩的JS文件了:code
npm run mangleip
你会发现此压缩文件已经放置到dist目录以内。可使用任何文本工具查看文件内容,好比这样:
cat dist/app.js
复制代码
输出是这样的:
var x={o:0,t:1,_:function(){return this.t+this.o},i:2,o:3};console.log(x._())
复制代码
在package.json内部的script指定的任何一个键(这里是mangle),均可以把它做为参数传递为npm run,做为一个命令使用。
npm run mangle
复制代码
内部执行实际上是使用了链接符号&&链接起来的两个命令,&&表示前一个执行成功才会执行下一个命令,不然就中止继续执行。命令:
mkdir -p dist
复制代码
建立一个目录,参数-p说明没有没有的话就建立,有了就没必要建立了。命令:
uglifyjs src/*.js -m -c -o dist/app.js
复制代码
执行文件压缩。参数-m表示压扁 -c表示压缩,-o指定目标文件。