blog.ojisan.io

ๅŒๅใฎ bin script ใ‚’ๆŒใค package ใ‚’ install ใ™ใ‚‹ใจใฉใ†ใชใ‚‹ใฎใ‹๏ผŸ

package.json ใซใฏ bin ใƒ•ใ‚ฃใƒผใƒซใƒ‰ ใŒใ‚ใ‚Šใ€ใ“ใ“ใงใฏ package ใฎๅฎŸ่กŒใƒ•ใ‚กใ‚คใƒซใ‚’ๅฎŸ่กŒใ™ใ‚‹ใ‚ณใƒžใƒณใƒ‰ใ‚’็™ป้Œฒใงใใพใ™ใ€‚ ใ“ใ“ใซ็™ป้Œฒใ•ใ‚ŒใŸใ‚ณใƒžใƒณใƒ‰ใฏ package ใฎ install ๆ™‚ใซ ./node_modules/.bin/ ใซไฟๅญ˜ใ•ใ‚Œใ€ใ“ใฎ้ ˜ๅŸŸใฏ npx hoge, yarn hoge ใจใ—ใฆๅฎŸ่กŒใงใใพใ™ใ€‚

ๅŒๅ bin ใ‚’ๆŒใค package ใ‚’ install ใ™ใ‚‹

ใ“ใ“ใงใ€ๅŒๅ bin ใ‚’ๆŒใค package ใฎ install ใ‚’่€ƒใˆใพใ™ใ€‚่ซธใ€…ใฎๅฎŸ้จ“ใ‚’ same-name-node-bin ใงใ—ใŸใฎใงใ€ใ“ใ‚Œใ‚’ไพ‹ใซไฝฟใ„ใพใ™ใ€‚

ใ„ใพใ€same-name-node-bin-for-aaa ใจ same-name-node-bin-for-bbb ใจใ„ใ†ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ‚’็”จๆ„ใ—ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฏใใ‚Œใžใ‚Œ

export const aaa = () => {
  console.log("aaa");
};
export const bbb = () => {
  console.log("bbb");
};

ใจใ„ใ†้–ขๆ•ฐใ‚’ index.js ใซๆŒใกใพใ™ใ€‚

ใใ—ใฆใใ‚Œใ‚‰ใ‚’ๅฎŸ่กŒใ™ใ‚‹้–ขๆ•ฐใจใ—ใฆใ€bin ใซ

// aaa.js
const aaa = require("../src/index").aaa;

aaa();

ใจ

// bbb.js
const bbb = require("../src/index").bbb;

bbb();

ใ‚’็”จๆ„ใ—ใพใ™ใ€‚

ใ“ใฎใจใใ€ใใ‚Œใžใ‚Œใฎ package.json ใซ

{
  "bin": {
    "same-node-bin-for": "bin/aaa.js"
  }
}
{
  "bin": {
    "same-node-bin-for": "bin/bbb.js"
  }
}

ใจๆ›ธใใพใ™ใ€‚

ใ“ใฎใ‚ˆใ†ใซๆ›ธใใ“ใจใงใ€ใ“ใฎ package ใฎ install ๆ™‚ใซ npx same-node-bin-for ใ‚„ yarn same-node-bin-for ใŒๅฎŸ่กŒใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚

ใงใฏใ“ใฎใจใใ€ๅŒๅใฎ bin ใ‚’ๆŒใคใ“ใ‚Œใ‚‰ใฎ package ใ‚’npm i same-name-node-bin-for-aaa same-name-node-bin-for-bbb ใชใฉใจใ—ใฆ install ใ—ใŸๅ ดๅˆใ€node_modules/.bin ใฎไธญใฏใฉใ†ใชใ‚‹ใฎใงใ—ใ‚‡ใ†ใ‹๏ผŸ

็ญ”ใˆ

ใคใพใ‚Šใ€npm i same-name-node-bin-for-aaa ใ—ใŸๅพŒใซ npm i same-name-node-bin-for-bbbใจใ™ใ‚‹ใจใ€ same-name-node-bin-for-aaa ใฎ bin ใŒ same-node-bin-for ใจใชใ‚Šใพใ™ใ€‚ ใชใฎใงใ€bbb ใ‚’ๆœŸๅพ…ใ™ใ‚‹ใจไบˆๆƒณใŒๅค–ใ‚Œใ‚‹ใ“ใจใจใชใ‚‹ใฎใงๆณจๆ„ใ—ใพใ—ใ‚‡ใ†๏ผ

ใŠใ‚ใ‚Šใซ

ใใ‚‚ใใ‚‚ๅŒๅใฎ bin ใ‚’ไฝฟใ‚ใชใ„ใ‚ˆใ†ใซ package ๅใ‚’ bin ๅใซไป˜ใ‘ใ‚‹ใชใ‚Šใ—ใฆๅทฅๅคซใ—ใพใ—ใ‚‡ใ†ใ€‚ ใกใชใฟใซๅŒๅใฎ bin ใ‚นใ‚ฏใƒชใƒ—ใƒˆใŒ้™ใฃใฆใใ‚‹ใƒฉใ‚คใƒ–ใƒฉใƒชใŒใ‚ใ‚Šใพใ™ใ€‚(ex. @storybook/*)