Home Web Front-end JS Tutorial Npm makes cli command line tool

Npm makes cli command line tool

Apr 17, 2018 pm 04:14 PM
Command Line tool

This time I will bring you Npm to make the cli command line tool. What are the precautions for using Npm to make the cli command line tool? The following is a practical case, let's take a look.

Preface

If you want to write an npm plug-in, if you want to simplify your operations through the command line, if you are also a lazy person, then this article is worth reading.

The previous article of the Po Master introduced customizing one's own template, but the Po Master is still not satisfied with this. In the project, we frequently need to create new pages, logical styles and other files. Each time, we manually create a new one, and then copy some basic codes. It is very troublesome to get in, so this article is written. Next, let the po master demonstrate step by step how to make an npm command line plug-in.

Register npm account

To publish an npm plug-in, you must first have an npm account. The process will not be long-winded. I'll leave you.

npm official website

After you have an account, we generate a package

configuration file through npm init, fill in some of your information, and then you can start writing logic code.

Writing command entry

First take a look at the project structure

1

2

3

4

5

6

7

.

├── bin      //命令配置

├── README.md   //说明文档

├── index.js   //主入口

├── src      //功能文件

├── package.json //包信息

└── test     //测试用例

Copy after login
The example command codes are all written in the bin directory. We now enable the command in the configuration file package file and add a configuration item bin

1

2

3

 "bin": {

    "xu""./bin/xu.js"

  },

Copy after login
Then install a dependency, the commander plug-in written by TJ,

1

npm i commander --save

Copy after login
With this tool we can easily write command code

xu.js

1

2

3

4

5

6

7

8

#!/usr/bin/env node

process.title = 'xu';

require('commander')

.version(require('../package').version)

.usage('<command> [options]')

.command('generate''generate file from a template (short-cut alias: "g")')

.parse(process.argv)

require('./xu-generate');  >>引入

Copy after login
This file can be regarded as

entry file. The first line of code must be added. The reason why the script is started with env is because the script interpreter may be installed in different directories in Linux. env can be in Search in the system's PATH directory. At the same time, env also stipulates some system environment variables. This way of writing is mainly to make your program applicable on different systems.

At this step, you can simply test your own npm plugin

1

2

$ node ./bin/xu.js

>>> 输出一些插件usage。help信息

Copy after login
Regarding the commander, you can go to the author's Github to learn about it first. The parameters will not be explained here.

xu-generate.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/usr/bin/env node

const program = require('commander');

const chalk = require('chalk')

const xu = require('../src/generate');

/**

 * Usage.

 */

program

.command('generate')

.description('quick generate your file')

.alias('g')

.action(function(type, name){

  xu.run(type, name);

});

program.parse(process.argv);

Copy after login
This is the function command, which defines a generate command, .alias('g') is the abbreviation of the command, and then .action(function(type, name){xu.run(type, name); }); returns a function , this function is what we need to do to define this command.

Write function function

./src/generate.js

This file defines when we enter

1

$ xu g

Copy after login
The operation was done.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

/**

 * Created by xushaoping on 17/10/11.

 */

const fs = require('fs-extra')

const chalk = require('chalk')

exports.run = function(type, name) {

  switch (type) {

    case 'page':

      const pageFile = './src/page/' + name + '/' + name + '.vue'

      const styleFile = './src/page/' + name + '/' + name + '.less'

      fs.pathExists(pageFile, (err, exists) => {

        if (exists) {

          console.log('this file has created')

        else {

          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.vue', pageFile, err => {

            if (err) return console.error(err)

         

            console.log(pageFile + ' has created')

          })

          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.less', styleFile, err => {

            if (err) return console.error(err)

         

            console.log(styleFile + ' has created')

          })

        }

      })

      break;

    case 'component':

      const componentFile = './src/components/' + name + '.vue'

      fs.pathExists(componentFile, (err, exists) => {

        if (exists) {

          console.log('this file has created')

        else {

          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/component.vue', componentFile, err => {

            if (err) return console.error(err)

           

            console.log(componentFile + ' has created')

          })

        }

      })

      break;

    case 'store':

      const storeFile = './src/store/modules' + name + '.js'

      fs.pathExists(storeFile, (err, exists) => {

        if (exists) {

          console.log('this file has created')

        else {

          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/store.js', storeFile, err => {

            if (err) return console.error(err)

           

            console.log(storeFile + ' has created')

          })

        }

      })

      break;

    default:

      console.log(chalk.red(`ERROR: uncaught type , you should input like $ xu g page demo` ))

      console.log()

      console.log(' Examples:')

      console.log()

      console.log(chalk.gray('  # create a new page'))

      console.log('  $ xu g page product')

      console.log()

      console.log(chalk.gray('  # create a new component'))

      console.log('  $ xu g component product')

      console.log()

      console.log(chalk.gray('  # create a new store'))

      console.log('  $ xu g store product')

      console.log()

      break;

  }

};

Copy after login
There are two new dependencies here, namely command output color and a file operation plug-in, installed through npm.

1

2

$ npm i fs-extra --save

$ npm i chalk --save

Copy after login
This js file exports a run function to be called by xu-generate.js. We get the type and name input by the user through parameters, and then we can operate based on the type through the node fs module (a dependency is used here, but the principle is still fs) Copy the template file to your project.

At this point, we have completed the development of a command that can quickly generate the template file of the project.

Local Test

npm package development is not like web development. You can view it directly in the browser, create a test file in the instance directory, and then node test Just to test our logic. If there are some functions that need to be tested after publishing, npm has a link command that can connect to your local module. Of course, you can also publish it after Installing the plug-in test yourself is just like introducing a plug-in.

Publish npm package

First execute npm login in the project root directory

1

2

$ npm login 

$ npm publish

Copy after login
If there is an error here, it may be that you used the cnpm address and need to set the npm warehouse back

1

 $ npm config set registry https://registry.npmjs.org/

Copy after login
Then, update the npm package. The version number needs to be greater than the last time

Postscript

At this point, an entry-level npm package is completed. I was very moved. I remember when I first started working on the front-end, I saw other people’s plug-ins were really good. I could make it so beautiful with just a simple installation. I wanted to do it~ but when I saw a bunch of unfamiliar things, I was immediately discouraged (node ​​environment, There are a lot of things. I just copied vue-cli and saw a pair of codes. Please ignore them.)

Learning is a step-by-step process. Without a certain foundation and long-term accumulation of experience, the source code is difficult to learn. If you have to chew, that's fine, but the efficiency doesn't feel as good as step-by-step.

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

Using timers with AngualrJs

ReactJS operation form selection

The above is the detailed content of Npm makes cli command line tool. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1266
29
C# Tutorial
1239
24
What kind of software is a digital currency app? Top 10 Apps for Digital Currencies in the World What kind of software is a digital currency app? Top 10 Apps for Digital Currencies in the World Apr 30, 2025 pm 07:06 PM

With the popularization and development of digital currency, more and more people are beginning to pay attention to and use digital currency apps. These applications provide users with a convenient way to manage and trade digital assets. So, what kind of software is a digital currency app? Let us have an in-depth understanding and take stock of the top ten digital currency apps in the world.

Quantitative Exchange Ranking 2025 Top 10 Recommendations for Digital Currency Quantitative Trading APPs Quantitative Exchange Ranking 2025 Top 10 Recommendations for Digital Currency Quantitative Trading APPs Apr 30, 2025 pm 07:24 PM

The built-in quantization tools on the exchange include: 1. Binance: Provides Binance Futures quantitative module, low handling fees, and supports AI-assisted transactions. 2. OKX (Ouyi): Supports multi-account management and intelligent order routing, and provides institutional-level risk control. The independent quantitative strategy platforms include: 3. 3Commas: drag-and-drop strategy generator, suitable for multi-platform hedging arbitrage. 4. Quadency: Professional-level algorithm strategy library, supporting customized risk thresholds. 5. Pionex: Built-in 16 preset strategy, low transaction fee. Vertical domain tools include: 6. Cryptohopper: cloud-based quantitative platform, supporting 150 technical indicators. 7. Bitsgap:

Is the digital currency app formal? Top 10 formal and legal virtual currency trading apps in the world Is the digital currency app formal? Top 10 formal and legal virtual currency trading apps in the world Apr 30, 2025 pm 07:09 PM

Recommended cryptocurrency trading platforms include: 1. Binance: the world's largest trading volume, supports 1,400 currencies, FCA and MAS certification. 2. OKX: Strong technical strength, supports 400 currencies, approved by the Hong Kong Securities Regulatory Commission. 3. Coinbase: The largest compliance platform in the United States, suitable for beginners, SEC and FinCEN supervision. 4. Kraken: a veteran European brand, ISO 27001 certified, holds a US MSB and UK FCA license. 5. Gate.io: The most complete currency (800), low transaction fees, and obtained a license from multiple countries. 6. Huobi Global: an old platform that provides a variety of services, and holds Japanese FSA and Hong Kong TCSP licenses. 7. KuCoin

Ranking of the top ten formal virtual currency exchange apps in 2025 (digital currency trading platform app list) Ranking of the top ten formal virtual currency exchange apps in 2025 (digital currency trading platform app list) Apr 30, 2025 pm 05:39 PM

Ranking of the top ten formal virtual currency exchange apps in 2025: 1. OKX, 2. Binance, 3. Huobi, 4. Coinbase, 5. Kraken, 6. Bitfinex, 7. KuCoin, 8. Gemini, 9. Bitstamp, 10. Poloniex, each performs outstandingly in terms of security, user experience, transaction fees, liquidity, currency richness, professional tools, compliance, privacy protection, leveraged trading, degree of internationalization, customer service, etc.

How to download the Hong Kong Digital Currency Exchange app? The top ten digital currency exchange apps are included How to download the Hong Kong Digital Currency Exchange app? The top ten digital currency exchange apps are included Apr 30, 2025 pm 07:12 PM

The methods to download the Hong Kong Digital Currency Exchange APP include: 1. Select a compliant platform, such as OSL, HashKey or Binance HK, etc.; 2. Download through official channels, iOS users download on the App Store, Android users download through Google Play or official website; 3. Register and verify their identity, use Hong Kong mobile phone number or email address to upload identity and address certificates; 4. Set security measures, enable two-factor authentication and regularly check account activities.

Is there a future for digital currency apps? Apple mobile digital currency trading platform app download TOP10 Is there a future for digital currency apps? Apple mobile digital currency trading platform app download TOP10 Apr 30, 2025 pm 07:00 PM

The prospects of digital currency apps are broad, which are specifically reflected in: 1. Technology innovation-driven function upgrades, improving user experience through the integration of DeFi and NFT and AI and big data applications; 2. Regulatory compliance trends, global framework improvements and stricter requirements for AML and KYC; 3. Function diversification and service expansion, integrating lending, financial management and other services and optimizing user experience; 4. User base and global expansion, and the user scale is expected to exceed 1 billion in 2025.

What is the core difference between Huobi's previous Huoxin and OKX's current pay? What is the core difference between Huobi's previous Huoxin and OKX's current pay? Apr 30, 2025 pm 06:33 PM

Neither Huoxin nor OKX Pay directly supports fiat currency payment. Huoxin is mainly used for digital asset management and transactions, and users need to exchange fiat currency through the Huobi Exchange; OKX Pay focuses on digital asset payment and transfer, and users need to exchange fiat currency through the OKX platform.

What are the three giants in the currency circle? Top 10 Recommended Virtual Currency Main Exchange APPs What are the three giants in the currency circle? Top 10 Recommended Virtual Currency Main Exchange APPs Apr 30, 2025 pm 06:27 PM

In the currency circle, the so-called Big Three usually refers to the three most influential and widely used cryptocurrencies. These cryptocurrencies have a significant role in the market and have performed well in terms of transaction volume and market capitalization. At the same time, the mainstream virtual currency exchange APP is also an important tool for investors and traders to conduct cryptocurrency trading. This article will introduce in detail the three giants in the currency circle and the top ten mainstream virtual currency exchange APPs recommended.

See all articles