• npm常用技巧


    npm中内置了大量的实用技巧,如何高效的使用它们是一件充满挑战的事情。学会下面11个技巧,将会让你在任何项目中使用npm都会事半功倍。

    1、如何打开package的主页

    npm home $package

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

    2、如何打开package的Github仓库地址

    npm repo $package

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

    3、检查package.json中的那些已经过时的依赖

    npm outdated

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

    4、揪出package.json中没有被用到的packages

    npm prune

    运行此命令,npm会拿你的package.jsonnode_modules目录进行比对,然后把那些在package.json中没有引用到的package列出来。
    还有那些你没有手动添加到package.json或者是执行npm install $package时没有加--save参数的,都会被删掉。

    5、锁定你的依赖版本

    npm shrinkwrap

    使用shrinkwrap命令会在你当前项目中生成一个npm-shrinkwrap.json文件。它会将你当前package.json中引用的依赖版本锁定,当下次执行npm install时,它默认安装的其实是shrinkwrap.json中锁定的依赖版本号。
    注意:如果你想让package.jsonshrinkwrap.jsonnode_modules中的依赖版本号保持一致的话,请慎用此功能。

    6、使用npm v3 以及 Node.js v4 LTS

    npm install -g npm@3

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

    7、如何在npm install -g时,不用再加sudo

    npm config set prefix $dir

    运行此命令之后,$dir目录就变成了你全局安装依赖时的默认目录,也就是bin目录,以后也就不再需要输入sudo命令了。
    需要注意的是,你可能需要使用chown -R $USER $dir命令改变一下此目录的操作权限,并把$dir/bin加入到PATH环境变量中。

    8、改变项目的默认保存前缀

    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命令。

    npm config set init.author.name $name
    npm config set init.author.email $email

    相应的,如果你想完整的自定义一份儿init脚本,可以这样用:

    npm config set init-module ~/.npm-init.js
    

    下面提供一份儿示例供大家参考:

    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)
        }
    }

    12、未完待续……

    源文章链接:https://nodesource.com/blog/eleven-npm-tricks-that-will-knock-your-wombat-socks-off/

  • 相关阅读:
    ExtJs多级联动菜单的一种实现
    初学jquery之自学笔记(2)
    微软MVP评Silverlight的功能特性和价值
    利用XMLFormView在Web部件页中或者自定义页面中嵌入Infopath表单
    初学jquery之自学笔记(3)
    我想大声告诉你
    HTC G7 金卡 制作
    黑苹果配置
    我的Android 从 2.3开始! 开发环境搭建
    新台式机配置表
  • 原文地址:https://www.cnblogs.com/leeke98/p/9145442.html
Copyright © 2020-2023  润新知