本文转载自:众成翻译
译者:文蔺
连接:http://www.zcfy.cc/article/1206
原文:https://nodesource.com/blog/eleven-npm-tricks-that-will-knock-your-wombat-socks-off/java
有效率地使用 npm 可能会很困难。内置特性堆积如山,尝试学习它们是很艰巨的任务。node
就我我的而言,单学习并使用其中一些小 trick 解救了我,从前移除那些未使用的模块时,我只能先删除整个 node_modules
文件夹,接着再用 npm install
从新安装一切。(npm prune
,请见本文第四节。)如你所想,这简直要让人发狂了。git
咱们编了这样一个 trick 列表,使用起来很简单,它们会加速你使用 npm 开发的过程,不管你在作什么项目。github
1.打开 package 主页
运行: npm home $package
express
执行 home
命令会打开 $package
的主页。例如,若是指定 $package
为 lodash
,那么就就会打开 Lodash 官网。没有安装(全局/某个项目) package 不影响该命令的使用。npm
2. 打开 package Github 仓库
运行: npm repo $package
json
相似前面的 home
命令, repo
命令会打开 $package
的 Github 仓库。如 npm repo express
会打开 Express 的官方仓库地址。一样,不须要安装 package 就能使用。segmentfault
3. 检查 package 的过期依赖
运行: npm outdated
api
在项目中,运行 outdated
命令会经过 npm registry 检查是否有过期的 package,并在命令行中打印出当前版本、所需版本以及最新版本。
4. 检查 package.json 中未声明的 package
运行: npm prune
运行 prune
命令,npm CLI 会读取 package.json
,并将结果与项目的 /node_modules
目录进行对比,并打印出不在package.json
之列的模块列表。
npm prune
命令接着会拿出这些 package,并移除那些没有手动加到 package.json
中或没有使用 --save
标志安装的 package。
更新: 感谢 @EvanHahn 提醒,一种我的配置可让 npm prune
提供与 npm
默认方式略有不一样的结果。
5. 锁定依赖版本
运行: npm shrinkwrap
在项目中使用 shrinkwrap
命令,会生成一个 npm-shrinkwrap.json
文件,将项目依赖锁定在当前在 node_modules
中使用的特定版本。运行 npm install
时,若发现存在 npm-shrinkwrap.json
,则会覆盖列出的依赖以及 package.json
中的任何语义版本范围。
若是须要验证项目中 package.json
、 npm-shrinkwrap.json
及 node_modules
的一致性,能够考虑使用 npm-shrinkwrap。
6. 在 Node.js v4 LTS 中使用 npm v3
运行: npm install -g npm@3
使用 npm 全局安装 npm@3
,会将 npm v2 升级至 v3。使用 npm v2 LTS 的 Node.js v4 LTS 发布版本(“Argon”)中也是如此。这会在 v4 LTS 中安装 npm v3 的最新稳定版本。(译者注:LTS 指 Long-Term Support, 即提供长期技术支持的版本。)
7. 运行 npm install -g
,无需加 sudo
运行: npm config set prefix $dir
$dir
指你想将全局依赖安装在的目录,运行命令,这一来,安装全局模块不再用使用 sudo,该目录则成为全局的 bin 目录。惟一须要注意的是,确保使用 chown -R $USER $dir
该目录的调整用户权限。
8. 改变全部项目的默认前缀
运行: npm config set save-prefix ~
使用 --save
或 --save-dev
标志安装新 package 时,使用 ~
比默认的 ^
行为更加保守。~
将依赖锁定在小版本(minor version),容许使用 npm update
安装补丁版本。^
将依赖锁定在主版本,容许使用 npm update
更新小版本。
9. 生产环境下去除 devDependencies
依赖
项目准备上到生产环境时,确保使用 --production
标志安装依赖。该标志会安装 dependencies
,忽略 devDependencies
。这会确保开发所使用的工具及 package 不会进入生产环境。
此外,还能够将 NODE_ENV
环境变量设置为 production
,确保 devDependencies
毫不会被安装。
10. 使用 .npmignore
要小心
若是还没使用过 .npmignore
,会默认使用 .gitignore
文件,加上一些更健全的默认选项。
不少人不明白都是,一旦在项目中添加了 .npmignore
文件,.gitignore
的规则就会被忽略(好讽刺,出乎意料啊)。结果就是,发布项目时,不得不审查两个文件是否同步,防止敏感信息的泄露。
11. 带默认内容的 npm init
在新项目中运行 npm init
时,能够配置 package.json
细节。若是想设置 npm init
会一直使用的默认工做,可使用 config set
命令,加上一些额外的参数:
npm config set init.author.name $name npm config set init.author.email $email
若想完全自定义初始化脚本,能够指定一个自定义的默认脚本:
`npm config set init-module ~/.npm-init.js``
下面是一个示例脚本,会弹出私有设置项,在须要状况下建立 Github 仓库。确保更改默认的 Github 用户名(YOUR_GITHUB_USERNAME
),做为 Github 用户名环境变量的 fallback 值。
var cp = require('child_process'); var priv; var USER = process.env.GITHUB_USERNAME || 'YOUR_GITHUB_USERNAME'; module.exports = { name: prompt('name', basename || package.name), version: '0.0.1', private: prompt('private', 'true', function(val){ return priv = (typeof val === 'boolean') ? val : !!val.match('true') }), create: prompt('create github repo', 'yes', function(val){ val = val.indexOf('y') !== -1 ? true : false; if(val){ console.log('enter github password:'); cp.execSync("curl -u '"+USER+"' https://api.github.com/user/repos -d " + "'{\"name\": \""+basename+"\", \"private\": "+ ((priv) ? 'true' : 'false') +"}' "); cp.execSync('git remote add origin '+ 'https://github.com/'+USER+'/' + basename + '.git'); } return undefined; }), main: prompt('entry point', 'index.js'), repository: { type: 'git', url: 'git://github.com/'+USER+'/' + basename + '.git' }, bugs: { url: 'https://github.com/'+USER'/' + basename + '/issues' }, homepage: "https://github.com/"+USER+"/" + basename, keywords: prompt(function (s) { return s.split(/\s+/) }), license: 'MIT', cleanup: function(cb){ cb(null, undefined) } }
最后一点...
若想学习更多关于 npm、Node.js、JavaScript、Docker、Kubernetes 以及 Electron 等等等等,能够在 Twitter、 上关注 @NodeSource。咱们一直都在,很乐意收到你的消息!
译者注
更多内容,欢迎关注我的博客 http://www.wemlion.com/。