<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NPM on Dapeng Zhang</title><link>https://zhangdapeng.dev/tags/npm/</link><description>Recent content in NPM on Dapeng Zhang</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 08 Jul 2025 15:15:53 +0000</lastBuildDate><atom:link href="https://zhangdapeng.dev/tags/npm/index.xml" rel="self" type="application/rss+xml"/><item><title>npm profile 新功能介绍</title><link>https://zhangdapeng.dev/p/npm-profile-xin-gong-neng-jie-shao/</link><pubDate>Tue, 08 Jul 2025 15:15:53 +0000</pubDate><guid>https://zhangdapeng.dev/p/npm-profile-xin-gong-neng-jie-shao/</guid><description>&lt;p&gt;npm新版本新推来一个功能，npm profile，这个可以更改自己简介信息的命令，以后可以不用去登录网站来修改自己的简介了&lt;/p&gt;
&lt;p&gt;具体的这个功能的支持大概是在6这个版本如果你的npm版本没有这个命令的话，建议升级试下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install -g npm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;npm profiles主要作用是更改registry profile的设置，刚开始我很蒙圈，不知道啥时profile，直接叫用户信息不就可以了吗？但我们通过官网的地址登录后，点击右侧的自己的头像会发现，点击后会出现一个下拉列表，列表里面有个&amp;quot;Profile Settings&amp;quot;，于是乎我好像明白了。其实就是更改自己的用户信息而已。可以进入里面看下，基本信息跟我们稍后列表来profile支持的选项是一样的。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="396px" data-flex-grow="165" height="737" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://res.cloudinary.com/dy5dvcuc1/image/upload/v1531922798/gowhich/npm_profile_1.png" srcset="https://zhangdapeng.dev/npm_profile_1_13280165836473566680_hu_d25c6e36276becc4.png 800w, https://res.cloudinary.com/dy5dvcuc1/image/upload/v1531922798/gowhich/npm_profile_1.png 1219w" width="1219"&gt;&lt;br&gt;
npm profile 的简介如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile get &lt;span style="color:#f92672"&gt;[&lt;/span&gt;--json|--parseable&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;property&amp;gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile set &lt;span style="color:#f92672"&gt;[&lt;/span&gt;--json|--parseable&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &amp;lt;property&amp;gt; &amp;lt;value&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile set password
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile enable-2fa &lt;span style="color:#f92672"&gt;[&lt;/span&gt;auth-and-writes|auth-only&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile disable-2fa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;主要功能也就上面这些，跟我上面的截图的内容差不多一致，以后如果增加了相应的选项的话，应该也会更新对应的配置选项&lt;/p&gt;
&lt;p&gt;下面详细了解下具体的情况&lt;/p&gt;
&lt;p&gt;在registry中更改您的个人profile信息。&lt;br&gt;
如果使用的是non-npmjs registry，则无法使用此功能。&lt;/p&gt;
&lt;h3 id="npm-profile-get-"&gt;&lt;strong&gt;npm profile get [&lt;!-- raw HTML omitted --&gt;]:&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;展示所有profile中的属性或者一个或者更多的属性，比如我的属性包括如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;┌─────────────────┬──────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ name │ durban │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ email │ xx@xx &lt;span style="color:#f92672"&gt;(&lt;/span&gt;verified&lt;span style="color:#f92672"&gt;)&lt;/span&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ two-factor auth │ disabled │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ fullname │ durban zhang │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ homepage │ www.gowhich.com │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ freenode │ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ twitter │ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ github │ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ created │ 2015-03-18T02:35:58.918Z │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─────────────────┼──────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ updated │ 2018-07-17T06:27:25.590Z │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─────────────────┴──────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个提示下如果你在运行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm profile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;之后没有出现我上面说的情况的话，会有一个问题就是你还没有进行登录，需要执行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进行登录操作&lt;/p&gt;
&lt;h3 id="npm-profile-set"&gt;&lt;strong&gt;npm profile set &lt;!-- raw HTML omitted --&gt; &lt;!-- raw HTML omitted --&gt;:&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;设置profile中属性的值，可以设置的属性包括下面的几个&lt;br&gt;
email, fullname, homepage, freenode, twitter, github&lt;/p&gt;
&lt;h3 id="npm-profile-set-password"&gt;&lt;strong&gt;npm profile set password:&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;修改你的密码。这个是一个交互的功能，你将被提示去输入你当前的密码和一个新的密码，如果开启了双重认证[two-factor authentication]的话，还需要输入一个OTP[动态口令]&lt;/p&gt;
&lt;h3 id="npm-profile-enable-2fa-"&gt;&lt;strong&gt;npm profile enable-2fa [auth-and-writes|auth-only]:&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;允许使用双重认证[two-factor authentication]，默认是auth-and-writes模式。&lt;br&gt;
模式的话有如下几种&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;auth-only: 当登录或者是修改账户信息是需要OTP[动态口令]。这个OTP[动态口令]在网站和命令行都会被需要的。&lt;br&gt;
auth-and-writes: 在auth-only的所有时间都需要OTP[动态口令]，并且在发布模块，设置最新的dist-tag或通过npm access和npm owner更改访问权时也需要一个OTP[动态口令]。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="npm-profile-disable-2fa"&gt;&lt;strong&gt;npm profile disable-2fa:&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;禁止使用双重认证[two-factor authentication]&lt;/p&gt;
&lt;p&gt;所有npm profile子命令都接受&amp;ndash;json和&amp;ndash;parseable，并将根据这些命令调整其输出。&lt;br&gt;
其中一些命令可能在non-npmjs registry中不可用。&lt;/p&gt;</description></item><item><title>为啥npm安装的时候devDependencies这里面的代码也安装了</title><link>https://zhangdapeng.dev/p/wei-sha-npm-an-zhuang-de-shi-hou-devdependencies-zhe-li-mian-de-dai-ma-ye-an-zhuang-le/</link><pubDate>Wed, 02 Jul 2025 11:31:46 +0000</pubDate><guid>https://zhangdapeng.dev/p/wei-sha-npm-an-zhuang-de-shi-hou-devdependencies-zhe-li-mian-de-dai-ma-ye-an-zhuang-le/</guid><description>&lt;p&gt;为啥npm安装的时候devDependencies这里面的代码也安装了，琢磨了好久，也搜索了很久，终于找到了答案，哈哈。其实觉得npm还是蛮智能的，只是自己比较低能了，没看npm的源码，测试结果是让我觉得，npm会根据&lt;code&gt;NODE_ENV&lt;/code&gt;的环境变量值，来判断你当前的环境是开发环境和生产环境，然后根据环境来安装对应的依赖包。&lt;/p&gt;
&lt;p&gt;解决方式就是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export NODE_ENV&lt;span style="color:#f92672"&gt;=&lt;/span&gt;production
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样就会很快的将dependencies里面的包安装了，就会自动忽略掉devDependencies里面的依赖包了，就这么简单。&lt;/p&gt;</description></item><item><title>NPM package Configure Prepare run scripts[配置执行脚本]</title><link>https://zhangdapeng.dev/p/npm-package-configure-prepare-run-scripts-pei-zhi-zhi-xing-jiao-ben/</link><pubDate>Tue, 01 Jul 2025 15:24:51 +0000</pubDate><guid>https://zhangdapeng.dev/p/npm-package-configure-prepare-run-scripts-pei-zhi-zhi-xing-jiao-ben/</guid><description>&lt;p&gt;The final thing is to add three scripts entries into our package.json:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;start&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;npm run serve | npm run dev&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;serve&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;./node_modules/.bin/http-server -p 8080&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;dev&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;webpack-dev-server --progress --colors --port 8090&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;basic-property-grid&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;0.1.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;index.js&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;dependencies&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;react&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;~0.11.2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;devDependencies&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;webpack&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;~1.4.4&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;webpack-dev-server&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;~1.6.5&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;jsx-loader&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;~0.11.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;http-server&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;~0.7.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What we just did was to add 3 commands that can be run through npm run &lt;!-- raw HTML omitted --&gt;.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;serve - npm run serve - just starts an http-server serving files from our local dir, running on port 8080 (it serves index.html).&lt;/p&gt;
&lt;p&gt;dev - npm run dev - starts webpack-dev-server on port 8090 which serves both the webpack-dev-server.js runtime and our bundle.js file.&lt;/p&gt;
&lt;p&gt;start - npm run start - command simply executes serve first and then starts the dev server.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Launch【运行】&lt;/p&gt;
&lt;p&gt;Now we are ready:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If everything is fine, you should open localhost:8080&lt;/p&gt;</description></item><item><title>npm-node模块管理工具 命令概述</title><link>https://zhangdapeng.dev/p/npm-node-mo-kuai-guan-li-gong-ju-ming-ling-gai-shu/</link><pubDate>Tue, 01 Jul 2025 11:36:09 +0000</pubDate><guid>https://zhangdapeng.dev/p/npm-node-mo-kuai-guan-li-gong-ju-ming-ling-gai-shu/</guid><description>&lt;p&gt;npm (node package manager)是node模块管理工具，类似与Linux下的yum和apt。&lt;/p&gt;
&lt;p&gt;常用npm命令（参考：https://npmjs.org/doc/）&lt;/p&gt;
&lt;p&gt;安装模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装当前目录package.json文件中配置的dependencies模块&lt;/p&gt;
&lt;p&gt;安装本地的模块文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;tarball file&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install ./package.tgz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装指定URL的模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;tarball url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install https://github.com/indexzero/forever/tarball/v0.5.6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装本地文件系统中指定的目录包含的模块&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-bashbash" data-lang="bashbash"&gt;npm install &amp;lt;folder&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装并更新package.json中的版本配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;name&amp;gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;–save|–save-dev|–save-optional&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;p&gt;添加–save 参数安装的模块的名字及其版本信息会出现在package.json的dependencies选项中&lt;/p&gt;
&lt;p&gt;添加–save-dev 参数安装的模块的名字及其版本信息会出现在package.json的devDependencies选项中&lt;/p&gt;
&lt;p&gt;添加–save-optional 参数安装的模块的名字及其版本信息会出现在package.json的optionalDependencies选项中&lt;/p&gt;
&lt;p&gt;安装模块的config的tag配置中含有指定tag的版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;name&amp;gt;@&amp;lt;tag&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install sax@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装模块的指定版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;name&amp;gt;@&amp;lt;version&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install xx@xx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装模块指定版本号范围内的某一个版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install &amp;lt;name&amp;gt;@&amp;lt;version range&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install async@”&amp;gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0.2.0 &amp;lt;0.2.9″
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;–force强制拉取远程资源，即使本地已经安装这个模块&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install underscore –force
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;-g或–global全局安装模块，如果没有这个参数，会安装在当前目录的node_modules子目录下&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install -g express
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显示npm的bin目录&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;设置npm配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config set &amp;lt;key&amp;gt; &amp;lt;value&amp;gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;–global&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用–global参数，设置全局配置&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;设置代理&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config set proxy&lt;span style="color:#f92672"&gt;=&lt;/span&gt;http://proxy.tencent.com:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;设置npm的镜像地址&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config set registry http://npm.oa.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;获取npm配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config get &amp;lt;key&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;获取npm当前镜像地址&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config get registory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;删除npm配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config delete &amp;lt;key&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;删除代理设置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config delete proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在编辑器中打开npm配置文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm config edit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;交互式的创建package.json文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建模块的压缩包&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm pack &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;pkg&amp;gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;pkg&amp;gt; … &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果没有参数，则npm会打包当前模块目录&lt;/p&gt;
&lt;p&gt;发布模块，发布后可通过名称来安装该模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm publish &amp;lt;tarball&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm publish &amp;lt;folder&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;：包含package.json文件的目录&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;：经过gzip压缩并归档的一个URL或文件路径，该压缩包包含单个目录，且该目录内有package.json文件&lt;/p&gt;
&lt;p&gt;删除模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm rm &amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm r &amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm uninstall &amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm un &amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意：不会删除package.json文件dependencies选项中对应的依赖配置&lt;/p&gt;
&lt;p&gt;查找模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm search &lt;span style="color:#f92672"&gt;[&lt;/span&gt;search terms ..&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm s &lt;span style="color:#f92672"&gt;[&lt;/span&gt;search terms ..&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm se &lt;span style="color:#f92672"&gt;[&lt;/span&gt;search terms ..&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查找匹配查找字符串的模块&lt;/p&gt;
&lt;p&gt;更新模块&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm update &lt;span style="color:#f92672"&gt;[&lt;/span&gt;-g&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;name&amp;gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;name&amp;gt; … &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更新指定name列表中的模块。-g参数更新全局安装的模块。&lt;/p&gt;
&lt;p&gt;如果没有指定name，且不是在某个模块内，会更新当前目录依赖的所有包都会被更新（包括全局和模块内）；如果当前目录在某个模块目录内，会更新该模块依赖的模块，所以不指定name直接运行npm update时，最好在某个模块内运行，以免更新到其他不想更新的模块。&lt;/p&gt;
&lt;p&gt;执行脚本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm start &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;name&amp;gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm stop &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;name&amp;gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm test &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&amp;lt;name&amp;gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;等&lt;/p&gt;
&lt;p&gt;运行package的start脚本，该脚本写在package.json文件scripts的start字段中。&lt;/p&gt;
&lt;p&gt;该字段的值可以是当前系统控制台可执行的脚本，也可以是当前系统可执行文件的路径。&lt;/p&gt;
&lt;p&gt;如果不传name参数，则执行当前目录下package.json文件中定义的脚本。&lt;/p&gt;
&lt;p&gt;详见https://npmjs.org/doc/misc/npm-scripts.html&lt;/p&gt;
&lt;p&gt;package.json文件&lt;/p&gt;
&lt;p&gt;模块的配置文件，详见https://npmjs.org/doc/files/package.json.html&lt;/p&gt;</description></item></channel></rss>