为什么使用npm run
插件不需要全局安装,只要安装在工程项目中,npm上的包提供了命令行接口,可以直接使用这些局部安装的插件;
举例(babel):
在工程项目中局部安装babel、转码规则后,直接在终端中执行 babel src -d dest 则命令不能执行;
原因:$PATH中目录下 没有babel的执行文件 ,babel执行文件在项目中node_modules/bin/中,
npm会自动把node_modules/.bin加入$PATH,这样就可以直接运行依赖程序,不需要全局安装;(也可以手动添加node_modules/.bin到$PATH)
npm run 执行
npm run 执行时,会检索package.json文件中的scripts对象,scripts中的每一个key-value对应一个命令;
//package.json文件 "name": "blog", "version": "1.0.0", "description": "personal blog", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "bulid-babel":"babel src -d dest",//执行babel "bulid-js":"gulp uglify", "bulid-bash":"bash test.sh"// 执行bash脚本命令 }, "author": "rocketV2", "license": "MIT",
执行 npm run bulid-js 的过程:
npm将node_modules/.bin/添加到$PATH ---> npm run 检索到bulid-js对应的命令 ---> 执行命令语句
在终端中执行 ls -la 命令时的过程:
根据$PATH检索ls命令存放的位置 ---> 不存在报错;存在,执行ls命令语句
参考:
http://blog.csdn.net/yy374864125/article/details/40740073
http://blog.sina.com.cn/s/blog_a3fb4c660102vbmv.html