node.js & read argv

https://nodejs.org/docs/latest/api/process.html

https://flaviocopes.com/node-cli-args/

https://stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments-to-a-node-js-program


  1. "use strict";
  2. /**
  3. *
  4. * @author xgqfrms
  5. * @license MIT
  6. * @copyright xgqfrms
  7. *
  8. * @description APP_ENV Genarator
  9. * @augments
  10. * @example
  11. *
  12. */
  13. const fs = require("fs");
  14. const args = process.argv.slice(2);
  15. console.log(`process.argv =`, process.argv);
  16. console.log(`args =`, args);
  17. const filename = "./fs.open.js";
  18. fs.open(filename, "r", (err, fd) => {
  19. if (err) {
  20. fs.writeFile(filename, `export const APP_ENV = "preview";`, (err, fd) => {
  21. if(err) {
  22. console.log(`writeFile err =`, err);
  23. }
  24. console.log("The file was created!");
  25. let env = "preview";
  26. console.log("The file was saved!", env);
  27. });
  28. } else {
  29. // truncated 截断 === empty ???
  30. console.log("The file exists!");
  31. // console.log("The file isn't exists!");
  32. fs.writeFile(filename, `// truncated 截断 === empty`, (err, fd) => {
  33. if(err) {
  34. console.log(`writeFile err =`, err);
  35. }
  36. console.log("The file was truncated!");
  37. });
  38. }
  39. });
  1. ## js path
  2. $ node env-generator.js key=value

OK


  1. "use strict";
  2. /**
  3. *
  4. * @author xgqfrms
  5. * @license MIT
  6. * @copyright xgqfrms
  7. *
  8. * @description APP_ENV Genarator
  9. * @augments
  10. * @example
  11. *
  12. */
  13. const fs = require("fs");
  14. const args = process.argv.slice(2);
  15. console.log(`process.argv =`, process.argv);
  16. console.log(`args =`, args);
  17. console.log(`args.toString().substr(4) =`, args.toString().substr(4));
  18. const filename = "./fs.open.js";
  19. fs.open(filename, "r", (err, fd) => {
  20. if (err) {
  21. fs.writeFile(filename, `export const APP_ENV = "preview";`, (err, fd) => {
  22. if(err) {
  23. console.log(`writeFile err =`, err);
  24. }
  25. console.log("The file was created!");
  26. let env = "preview";
  27. console.log("The file was saved!", env);
  28. });
  29. } else {
  30. // truncated 截断 === empty ???
  31. console.log("The file exists!");
  32. // console.log("The file isn't exists!");
  33. fs.writeFile(filename, `// truncated 截断 === empty`, (err, fd) => {
  34. if(err) {
  35. console.log(`writeFile err =`, err);
  36. }
  37. console.log("The file was truncated!");
  38. });
  39. }
  40. });

APP_ENV


  1. const env={
  2. testing:'',
  3. dev:'',
  4. local:'',
  5. statging:'',
  6. product:''
  7. }

npm scripts

  1. $ node env-generator env=testing
  2. $ node env-generator env=dev
  3. $ node env-generator env=local
  4. $ node env-generator env=statging
  5. $ node env-generator env=product

OR

  1. $ node env-generator.js env=testing
  2. $ node env-generator.js env=dev
  3. $ node env-generator.js env=local
  4. $ node env-generator.js env=statging
  5. $ node env-generator.js env=product

  1. "use strict";
  2. /**
  3. *
  4. * @author xgqfrms
  5. * @license MIT
  6. * @copyright xgqfrms 2019.05.12
  7. *
  8. * @description APP_ENV Genarator
  9. * @augments
  10. * @example node env-generator.js env=dev
  11. *
  12. */
  13. const fs = require("fs");
  14. const env = process.argv.slice(2)[0].substr(4);
  15. const filename = "./env.js";
  16. fs.open(filename, "r", (err, fd) => {
  17. console.log("APP_ENV =", env);
  18. if (err) {
  19. fs.writeFile(filename, `export const APP_ENV = "${env}";`, (err, fd) => {
  20. if(err) {
  21. console.log(`writeFile err =`, err);
  22. }
  23. });
  24. } else {
  25. fs.writeFile(filename, `export const APP_ENV = "${env}";`, (err, fd) => {
  26. if(err) {
  27. console.log(`writeFile err =`, err);
  28. }
  29. });
  30. }
  31. });

new version

  1. "use strict";
  2. /**
  3. *
  4. * @author xgqfrms
  5. * @license MIT
  6. * @copyright xgqfrms 2019.05.12
  7. *
  8. * @description APP_ENV Genarator
  9. * @augments
  10. * @example node env-generator.js env=dev
  11. *
  12. */
  13. const fs = require("fs");
  14. const env = process.argv.slice(2)[0].substr(4);
  15. const filename = "./env.js";
  16. fs.open(filename, "r", (err, fd) => {
  17. console.log("APP_ENV =", env);
  18. if (err) {
  19. fs.writeFile(filename, `const APP_ENV = "${env}";\nexport default APP_ENV;`, (err, fd) => {
  20. if(err) {
  21. console.log(`writeFile err =`, err);
  22. }
  23. });
  24. } else {
  25. fs.writeFile(filename, `const APP_ENV = "${env}";\nexport default APP_ENV;`, (err, fd) => {
  26. if(err) {
  27. console.log(`writeFile err =`, err);
  28. }
  29. });
  30. }
  31. });

app.js

  1. import APP_ENV from "./env";
  2. console.log(`APP_ENV = `, APP_ENV, typeof(APP_ENV), APP_ENV.length);

  1. // import * as APP_ENV from "./env";
  2. // console.log(`APP_ENV = `, APP_ENV, typeof(APP_ENV), APP_ENV.length);
  3. // APP_ENV = {APP_ENV: "dev", __esModule: true}
  4. import * as ENV from "./env";
  5. console.log(`ENV.APP_ENV = `, ENV.APP_ENV, typeof(ENV.APP_ENV), ENV.APP_ENV.length);
  6. // ENV.APP_ENV = dev string 3
  7. // import * as APP_ENV from "./env";
  8. // console.log(`APP_ENV = `, APP_ENV, typeof(APP_ENV), APP_ENV.length);
  9. // APP_ENV = {APP_ENV: "dev", __esModule: true}
  10. // import * as ENV from "./env";
  11. // console.log(`ENV.APP_ENV = `, ENV.APP_ENV, typeof(ENV.APP_ENV), ENV.APP_ENV.length);
  12. // ENV.APP_ENV = dev string 3
  13. import {APP_ENV} from "./env";
  14. console.log(`APP_ENV = `, APP_ENV, typeof(APP_ENV), APP_ENV.length);

node.js & read argv的更多相关文章

  1. Node.js:进程、子进程与cluster多核处理模块

    1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...

  2. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  3. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  4. Node.js process 模块常用属性和方法

    Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...

  5. 为Node.js编写组件的几种方式

    本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍 ...

  6. Node.js入门:模块机制

    CommonJS规范      早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...

  7. 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

    了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发) Guillermo Rauch 编   赵静 译 ISBN 978-7-121-21769-2 2 ...

  8. NODE.JS开发指南学习笔记2

    1.核心模块 核心模块是Node.js的心脏,由一些精简高效的库组成,为其提供了基本的API.2.全局对象 global.所有的的全局变量都是其属性.其根本的作用是作为全局变量的宿主.3.全局变量 1 ...

  9. [转]ReactPHP── PHP版的Node.js

    FROM : http://www.csdn.net/article/2015-10-12/2825887 摘要:ReactPHP作为Node.js的PHP版本.在实现思路,使用方法,应用场景上的确有 ...

随机推荐

  1. By default, the connection will be closed if the proxied server does not transmit any data within 60 seconds.

    WebSocket proxying https://nginx.org/en/docs/http/websocket.html By default, the connection will be ...

  2. loj2587铁人两项

    无向图,图中选出定点三元组(a,b,c),a->b->c的路径没有重复边.问方案有多少? -------------------------------------------- 首先求出 ...

  3. MySQL的索引为什么用B+Tree?InnDB的数据存储文件和MyISAM的有何不同?

    前言 这篇文章的题目,是我真实在面试过程中遇到的问题,某互联网众筹公司在考察面试者MySQL相关知识的第一个问题,我当时还是比较懵的,没想到这年轻人不讲武德,不按套路出牌,一般的问MySQL的相关知识 ...

  4. hadoop的Namenode HA原理详解

    为什么要Namenode HA? 1. NameNode High Availability即高可用. 2. NameNode 很重要,挂掉会导致存储停止服务,无法进行数据的读写,基于此NameNod ...

  5. java切割~~百万 十万 万 千 百 十 个 角 分

    /** * @param value * @return */ @SuppressWarnings("unused") public static void convertLoan ...

  6. idea--忽略隐藏文件、文件夹的设置操作

    文章由来 公司同事在群里问了个问题,如下: 为了大家看清,将图特意贴出来: 这人还删除idae重装了下,哈哈,才到群里问的. 解决思路(按顺序) 1.我让他直接拉会,共享桌面我给看了下,首先是open ...

  7. 在线工具生成接入信息mqtt.fx快速接入阿里云

    在线工具生成接入信息mqtt.fx快速接入阿里云 在使用阿里云获取的三元组信息进行接入的时候,往往需要加密生成接入信息之后才能进行接入,因此我根据阿里云提供的加密工具实现了一个阿里云物联网平台mqtt ...

  8. Pytest(1)安装与入门

    pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍,它 ...

  9. WPF 之 Binding 对数据的校验与转换(三)

    一.前言 ​ Binding 的作用就是架在 Source 和 Target 之间的桥梁,数据可以在这座桥梁的帮助下来流通.就像现实中的桥梁会设置一些关卡进行安检一样,Binding 这座桥上也可以设 ...

  10. HDU6403 Card Game【基环树 + 树形DP】

    HDU6403 Card Game 题意: 给出\(N\)张卡片,卡片正反两面都有数字,现在要翻转一些卡片使得所有卡片的正面的值各不相同,问最小翻转次数和最小翻转情况下的不同方案数 \(N\le 10 ...