UDN-企业互联网技术人气社区

板块导航

浏览  : 880
回复  : 4

[Nodejs] 11个你应该知道的npm技巧

[复制链接]
小辫儿的头像 楼主
发表于 2017-2-7 10:48:08 | 显示全部楼层 |阅读模式
  npm中内置了大量的实用技巧,如何高效的使用它们是一件充满挑战的事情。学会下面11个技巧,将会让你在任何项目中使用npm都会事半功倍。

  1、如何打开package的主页
  1. npm home $package
复制代码

  运行 home 命令可以打开此package的主页,例如: npm home lodash ,会打开 lodash 的主页。不管你机器中是否全局安装了此package,甚至是不存在于你当前项目中都可以打开。

  2、如何打开package的Github仓库地址
  1. npm repo $package
复制代码

  和 home 命令类似,运行 repo 命令可以打开此package的Github仓库地址,并且它也不要求你必须安装了此package。例如: npm repo express 就打开了 express 的Github仓库地址。

  3、检查package.json中的那些已经过时的依赖
  1. npm outdated
复制代码

  运行此命令,它会去检查npm上的注册信息,看你当前项目中有哪些依赖已经过时了,并以列表的形式展示出来。
1.png

  4、揪出package.json中没有被用到的packages
  1. npm prune
复制代码

  运行此命令,npm会拿你的 package.json 和 node_modules 目录进行比对,然后把那些在 package.json 中没有引用到的package列出来。

  还有那些你没有手动添加到 package.json 或者是执行 npm install $package 时没有加 --save 参数的,都会被删掉。

  5、锁定你的依赖版本
  1. npm shrinkwrap
复制代码

  使用 shrinkwrap 命令会在你当前项目中生成一个 npm-shrinkwrap.json 文件。它会将你当前 package.json 中引用的依赖版本锁定,当下次执行 npm install 时,它默认安装的其实是 shrinkwrap.json 中锁定的依赖版本号。

  注意:如果你想让 package.json 、 shrinkwrap.json 和 node_modules 中的依赖版本号保持一致的话,请慎用此功能。
1.png

  6、使用npm v3 以及 Node.js v4 LTS
  1. npm install -g npm@3
复制代码

  首先你要知道, nodejs v4 自带的npm默认版本是v2。执行此命令会将你的npm从v2升级到v3,并且安装的是最新的稳定版本,这样你就可以在 nodejs v4 的环境中使用 npm v3 了。

  7、如何在npm install -g时,不用再加sudo
  1. npm config set prefix $dir
复制代码

  运行此命令之后, $dir 目录就变成了你全局安装依赖时的默认目录,也就是 bin 目录,以后也就不再需要输入 sudo 命令了。

  需要注意的是,你可能需要使用 chown -R $USER $dir 命令改变一下此目录的操作权限,并把 $dir/bin 加入到 PATH 环境变量中。

  8、改变项目的默认保存前缀
  1. npm config set save-prefix="~"
复制代码

  波浪号 ~ :表示当信赖的副版本号有更新时,允许使用 npm update 进行安装。

  脱字符 ^ :表示当依赖的主版本号有更新时,允许使用 npm update 进行安装。

  9、如何在生产环境中剥离所有的devDependencies

 当你的项目准备好要切换到生产环境时,安装依赖包时一定要带上 --production 参数,使用此参数意味着将只会安装你的 dependencies 依赖,而忽略你的 devDependencies 依赖,这样可以确保你开发阶段的工具包不会进入到生产环境中。

  此外,你也可以设置 NODE_ENV 环境变量的值为 production ,这样就可以完全确保项目的 devDependencies 绝对不会被安装了。

  10、请谨慎使用. npmignore

  如果你的项目中没有使用 .npmignore 文件,那么它默认匹配的是 .gitignore 中的规则以及一些额外的默认配置。

  可是如果你在项目中添加了 .npmignore 文件, .gitignore 中的规则就会被忽略,而且这时候你还需要维护两份儿规则文件。

  11 、给npm init命令设置自动执行的默认值

  我们通常在一个项目中使用 npm init 来初始化 package.json 文件。如果你想把经常用到的一些值搞成默认配置,可以使用 config set 命令。
  1. npm config set init.author.name $name
  2. npm config set init.author.email $email
复制代码

  相应的,如果你想完整的自定义一份儿 init 脚本,可以这样用:
  1. npm config set init-module ~/.npm-init.js
复制代码

  下面提供一份儿示例供大家参考:
  1. var cp = require('child_process');
  2. var priv;
  3. var USER = process.env.GITHUB_USERNAME || 'YOUR_GITHUB_USERNAME';
  4. module.exports = {
  5.     name: prompt('name', basename || package.name),
  6.     version: '0.0.1',
  7.     private: prompt('private', 'true', function(val) {
  8.         return priv = (typeof val === 'boolean') ? val : !!val.match('true')
  9.     }),
  10.     create: prompt('create github repo', 'yes', function(val) {
  11.         val = val.indexOf('y') !== -1 ? true : false;
  12.         if (val) {
  13.             console.log('enter github password:');
  14.             cp.execSync("curl -u '" + USER + "' https://API.github.com/user/repos -d " + "'{\"name\": \"" + basename + "\", \"private\": " + ((priv) ? 'true' : 'false') + "}' ");
  15.             cp.execSync('git remote add origin ' + 'https://github.com/' + USER + '/' + basename + '.git');
  16.         }
  17.         return undefined;
  18.     }),
  19.     main: prompt('entry point', 'index.js'),
  20.     repository: {
  21.         type: 'git',
  22.         url: 'git://github.com/' + USER + '/' + basename + '.git'
  23.     },
  24.     bugs: {
  25.         url: 'https://github.com/' + USER '/' + basename + '/issues'
  26.     },
  27.     homepage: "https://github.com/" + USER + "/" + basename,
  28.     keywords: prompt(function(s) {
  29.         return s.split(/\s+/)
  30.     }),
  31.     license: 'MIT',
  32.     cleanup: function(cb) {
  33.         cb(null, undefined)
  34.     }
  35. }
复制代码

相关帖子

发表于 2017-2-7 10:48:39 | 显示全部楼层
js太强大了,好多工作前端都可以做了…
使用道具 举报

回复

发表于 2017-2-13 11:20:28 来自手机 | 显示全部楼层
前排支持下
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部