{"id":3712,"date":"2016-11-17T15:00:37","date_gmt":"2016-11-17T06:00:37","guid":{"rendered":"http:\/\/sitest.jp\/blog\/?p=3712"},"modified":"2016-11-17T19:45:07","modified_gmt":"2016-11-17T10:45:07","slug":"cli%e3%81%ab%e7%9b%ae%e8%a6%9a%e3%82%81%e3%81%9f%ef%bc%81node-js%e3%81%a7%e4%bd%9c%e3%82%8b%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%a9%e3%82%a4%e3%83%b3%e3%83%84%e3%83%bc%e3%83%ab","status":"publish","type":"post","link":"https:\/\/sitest.jp\/blog\/?p=3712","title":{"rendered":"CLI\u306b\u76ee\u899a\u3081\u305f\uff01Node.js\u3067\u4f5c\u308b\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb"},"content":{"rendered":"<p>Node.js \u306f\u5358\u306a\u308b\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u306e JavaScript \u306b\u306f\u3068\u3069\u307e\u3089\u305a\u3001<br \/>\u30de\u30b7\u30f3\u5185\u3067\u7c21\u5358\u306b\u4f7f\u3048\u308b\u70ba\u306e\u5de5\u592b\u304c\u6ca2\u5c71\u5b58\u5728\u3057\u307e\u3059\u3002<\/p>\n<p>Node.js \u3067\u306f\u30ed\u30fc\u30ab\u30eb\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7c21\u5358\u306b\u767b\u9332\u3059\u308b\u4e8b\u304c\u51fa\u6765\u307e\u3059\u306e\u3067\u3001<br \/>\u305d\u306e\u4ed5\u7d44\u307f\u3092\u5229\u7528\u3057\u3066\u81ea\u4f5c\u30b3\u30de\u30f3\u30c9\u3092\u4f5c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<div class=\"frame_headding\">\n<h3 style=\"text-align: left;\">JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b<\/h3>\n<\/div>\n<p>Unix \u3084 Linux \u3067\u306f\u3001<a href=\"https:\/\/goo.gl\/CVi3Pe\" title=\"null\" rel=\"nofollow\" target=\"_blank\">\u30b7\u30d0\u30f3<\/a>\u3092\u7528\u3044\u3066\u597d\u304d\u306a\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<br \/>JavaScript \u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u3001Node.js \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u72b6\u614b\u3067\u30011\u884c\u76ee\u306b\u304a\u307e\u3058\u306a\u3044\u3092\u8a18\u8ff0\u3059\u308b\u3053\u3068\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code class=\"lang-bash\">$ cat hoge\n#!\/usr\/bin\/env node\nconsole.log(123);\n\n$ chmod +x hoge\n\n$ .\/hoge\n123\n<\/code><\/pre>\n<p>\u307e\u305f\u3001\u30d1\u30b9\u306e\u901a\u3063\u305f\u30d5\u30a9\u30eb\u30c0\u306b\u8a2d\u7f6e\u3059\u308b\u3053\u3068\u3067\u3001<br \/>\u3069\u3053\u304b\u3089\u3067\u3082\u30b3\u30de\u30f3\u30c9\u3068\u3057\u3066\u547c\u3073\u51fa\u305b\u307e\u3059\u3002<\/p>\n<pre><code class=\"lang-bash\">$ hoge\n-bash: hoge: command not found\n\n$ echo $PATH\n\/usr\/local\/bin:\/usr\/bin:\/bin:\/usr\/sbin:\/sbin\n\n$ mv .\/hoge \/usr\/local\/bin\/\n\n$ hoge\n123\n\n$ rm \/usr\/local\/bin\/hoge\n\n$ hoge\n-bash: hoge: command not found\n<\/code><\/pre>\n<div class=\"frame_headding\">\n<h3 style=\"text-align: left;\">npm \u3067\u7ba1\u7406\u3059\u308b<\/h3>\n<\/div>\n<p>\u4e0a\u8a18\u306e\u65b9\u6cd5\u306f\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u7b49\u3092\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u5316\u3059\u308b\u306b\u306f\u3068\u3066\u3082\u4fbf\u5229\u3067\u3059\u3002<br \/>\u3057\u304b\u3057\u3001Node.js \u306e\u5f37\u307f\u306f\u5f37\u529b\u306a require \u3092\u5229\u7528\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u3084\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u9023\u643a\u306b\u3042\u308a\u307e\u3059\u3002<br \/>npm \u306b\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5358\u4f4d\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u5316\u3059\u308b\u70ba\u306e\u5f37\u529b\u306a\u4ed5\u7d44\u307f\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>npm\u3092\u4f7f\u3063\u3066\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u5316\u3059\u308b\u65b9\u6cd5\u306f<a href=\"https:\/\/docs.npmjs.com\/json\" title=\"null\" rel=\"nofollow\" target=\"_blank\">npm\u306e\u516c\u5f0f\u30b5\u30a4\u30c8<\/a>\u3067\u516c\u958b\u3055\u308c\u3066\u304a\u308a\u3001<br \/><a href=\"http:\/\/liberty-technology.biz\/PublicItems\/npm\/package.json.html\" title=\"null\" rel=\"nofollow\" target=\"_blank\">\u6709\u5fd7\u306e\u65b9\u304c\u4f5c\u6210\u3057\u305f\u65e5\u672c\u8a9e\u8a33\u306e\u8cc7\u6599<\/a>\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u4eca\u56de\u306fnode-cli\u3068\u3044\u3046\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3001<br \/>\u5165\u529b\u5024\u30922\u500d\u3059\u308b double \u3068\u3044\u3046\u30b3\u30de\u30f3\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<br \/><a href=\"https:\/\/github.com\/m-ohata\/node-cli\/tree\/npm-bin\" title=\"null\" rel=\"nofollow\" target=\"_blank\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306fGitHub\u306b\u516c\u958b<\/a>\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001<br \/>Node.js\u3084GitHub\u306b\u8a73\u3057\u3044\u65b9\u306f\u305d\u3061\u3089\u3082\u5408\u308f\u305b\u3066\u53c2\u7167\u3059\u308b\u3068\u30a4\u30e1\u30fc\u30b8\u304c\u3057\u3084\u3059\u3044\u304b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306bpackage.json\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<br \/>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306e\u30d5\u30a9\u30eb\u30c0\u3067<strong>npm init &#8211;yes<\/strong>\u3068\u3044\u3046\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u3067\u3001\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u69cb\u6210\u306epackage.json\u3092\u81ea\u52d5\u751f\u6210\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<pre><code class=\"lang-bash\">$ mkdir node-cli\n$ cd node-cli\n$ npm init --yes\nWrote to \/Users\/xxxx\/node-cli\/package.json:\n\n{\n  &quot;name&quot;: &quot;node-cli&quot;,\n  &quot;version&quot;: &quot;1.0.0&quot;,\n  &quot;description&quot;: &quot;&quot;,\n  &quot;main&quot;: &quot;index.js&quot;,\n  &quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;\n  },\n  &quot;repository&quot;: {\n    &quot;type&quot;: &quot;git&quot;,\n    &quot;url&quot;: &quot;git@gc-github.com:m-ohata\/node-cli.git&quot;\n  },\n  &quot;keywords&quot;: [],\n  &quot;author&quot;: &quot;&quot;,\n  &quot;license&quot;: &quot;ISC&quot;\n}\n\n$ ls\npackage.json\n<\/code><\/pre>\n<p>\u5165\u529b\u6570\u5024\u30922\u500d\u306b\u3057\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u308bdouble\u3068\u3044\u3046JavaScript\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<br \/>1\u884c\u76ee\u306b\u30b7\u30d0\u30f3\u3092\u8a2d\u5b9a\u3057\u3001\u5b9f\u884c\u6a29\u9650\u3092\u4ed8\u4e0e\u3059\u308b\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\u3059\u308b\u3068\u52d5\u4f5c\u3059\u308b\u4e8b\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<pre><code class=\"lang-bash\">$ cat double.js\n#!\/usr\/bin\/env node\nconsole.log(parseInt(process.argv[2]) * 2);\n\n$ chmod +x double.js\n\n$ .\/double.js 123\n246\n<\/code><\/pre>\n<p>\u7d9a\u3044\u3066\u3001package.json \u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002<br \/>\u4eca\u56de\u306fdouble\u3068\u3044\u3046\u30b3\u30de\u30f3\u30c9\u3092\u767b\u9332\u3057\u305f\u3044\u306e\u3067\u3001<br \/>bin\u30ad\u30fc\u3092\u7528\u610f\u3057\u3066\u3001\u305d\u306e\u914d\u4e0b\u306b<strong>&quot;double&quot;: &quot;.\/double.js&quot;<\/strong>\u3068\u3044\u3046\u8981\u7d20\u3092\u8ffd\u8a18\u3057\u307e\u3059\u3002<br \/>\uff08bin\u30ad\u30fc\u306e\u8a2d\u7f6e\u5834\u6240\u306f\u7279\u306b\u898f\u5b9a\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001main\u306e\u76f4\u5f8c\u306b\u8a2d\u7f6e\u3057\u3066\u307f\u307e\u3057\u305f\uff09<\/p>\n<pre><code class=\"lang-bash\">$ cat package.json\n{\n  &quot;name&quot;: &quot;node-cli&quot;,\n  &quot;version&quot;: &quot;1.0.0&quot;,\n  &quot;description&quot;: &quot;&quot;,\n  &quot;main&quot;: &quot;index.js&quot;,\n  &quot;bin&quot;: {\n    &quot;double&quot;: &quot;.\/double.js&quot;\n  },\n  &quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;\n  },\n  &quot;repository&quot;: {\n    &quot;type&quot;: &quot;git&quot;,\n    &quot;url&quot;: &quot;git@gc-github.com:m-ohata\/node-cli.git&quot;\n  },\n  &quot;keywords&quot;: [],\n  &quot;author&quot;: &quot;&quot;,\n  &quot;license&quot;: &quot;ISC&quot;\n}\n<\/code><\/pre>\n<p>\u3067\u306f\u5b9f\u969b\u306b\u30b3\u30de\u30f3\u30c9\u306e\u767b\u9332\u3092\u884c\u3044\u307e\u3059\u3002<br \/>\u521d\u671f\u72b6\u614b\u3067\u306f\u30b3\u30de\u30f3\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3088\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u4e8b\u304c\u308f\u304b\u308a\u307e\u3059\u3002<br \/><strong>npm install -g<\/strong>\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u9818\u57df\u306bnode-cli\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u30b3\u30d4\u30fc\uff09\u3055\u308c\u3001\u5b9f\u884c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3082\u7c21\u5358\u3067\u3001<br \/><strong>npm uninstall -g<\/strong>\u30b3\u30de\u30f3\u30c9\u3067\u7c21\u5358\u306b\u6d88\u3059\u4e8b\u304c\u51fa\u6765\u307e\u3059\u3002<\/p>\n<pre><code class=\"lang-bash\">$ double 123\n-bash: double: command not found\n\n$ npm install -g\n\/Users\/xxxx\/.nodebrew\/node\/v6.2.1\/bin\/double -&gt; \/Users\/xxxx\/.nodebrew\/node\/v6.2.1\/lib\/node_modules\/node-cli\/double.js\n\/Users\/xxxx\/.nodebrew\/node\/v6.2.1\/lib\n\u2514\u2500\u2500 node-cli@1.0.0\n\n$ double 123\n246\n\n$ npm uninstall -g\n- node-cli@1.0.0 node_modules\/node-cli\n\n$ double 123\n-bash: \/Users\/miyabi\/.nodebrew\/current\/bin\/double: No such file or directory\n\n\/\/ bash\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\n$ bash -l\n$ double 123\n-bash: double: command not found\n<\/code><\/pre>\n<div class=\"frame_headding\">\n<h3 style=\"text-align: left;\">\u307e\u3068\u3081<\/h3>\n<\/div>\n<p>\u3044\u304b\u304c\u3067\u3057\u305f\u3067\u3057\u3087\u3046\u304b\u3002<br \/>Node.js \u3084 npm \u3067\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3084\u3001WebAPI\u3092\u53e9\u304f\u70ba\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u7c21\u5358\u306b\u7d44\u307f\u8fbc\u3081\u308b\u306e\u3067\u3001<br \/>\u5f37\u529b\u306aCLI\u30c4\u30fc\u30eb\u304c\u7c21\u5358\u306b\u4f5c\u6210\u51fa\u6765\u307e\u3059\u3002<\/p>\n<p>\u6b21\u56de\u306f Commander \u3068\u3044\u3046CLI\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7528\u3044\u3066\u3001<br \/>Git\u30b3\u30de\u30f3\u30c9\u306e\u3088\u3046\u306a\u968e\u5c64\u3092\u6301\u3063\u305f\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u88c5\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<br \/>\u6700\u5f8c\u307e\u3067\u8aad\u3093\u3067\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js \u306f\u5358\u306a\u308b\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u306e JavaScript \u306b\u306f\u3068\u3069\u307e\u3089\u305a\u3001\u30de\u30b7\u30f3\u5185\u3067\u7c21\u5358\u306b\u4f7f\u3048\u308b\u70ba\u306e\u5de5\u592b\u304c\u6ca2\u5c71\u5b58\u5728\u3057\u307e\u3059\u3002 Node.js \u3067\u306f\u30ed\u30fc\u30ab\u30eb\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7c21\u5358\u306b\u767b\u9332\u3059\u308b\u4e8b\u304c\u51fa\u6765\u307e\u3059\u306e\u3067\u3001\u305d\u306e\u4ed5\u7d44\u307f\u3092\u5229\u7528\u3057\u3066\u81ea\u4f5c\u30b3\u30de\u30f3\u30c9\u3092\u4f5c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"author":1,"featured_media":3714,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[37,27],"tags":[],"acf":false,"_links":{"self":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/3712"}],"collection":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/comments?post=3712"}],"version-history":[{"count":4,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/3712\/revisions"}],"predecessor-version":[{"id":6521,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/3712\/revisions\/6521"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/media\/3714"}],"wp:attachment":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/media?parent=3712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/categories?post=3712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/tags?post=3712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}