env-creator 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -17
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,8 +56,8 @@ env-creator create
|
|
|
56
56
|
- [1. Create an empty or pre-filled `.env` file](#1-create-an-empty-or-pre-filled-env-file-alias-c)
|
|
57
57
|
- [2. Create from JSON](#2-create-from-json-alias-cfj)
|
|
58
58
|
- [3. Split `.env` for specific environments](#3-split-env-for-specific-environments-alias-s)
|
|
59
|
-
- [4.
|
|
60
|
-
- [5.
|
|
59
|
+
- [4. Sort `.env` keys alphabetically](#4-sort-env-keys-alphabetically-alias-srt)
|
|
60
|
+
- [5. Delete an `.env` file](#5-delete-an-env-file-alias-d)
|
|
61
61
|
- [6. Generate environment constants](#6-generate-environment-constants-alias-gc)
|
|
62
62
|
|
|
63
63
|
### 1. Create an empty or pre-filled `.env` file (alias: `c`)
|
|
@@ -138,21 +138,7 @@ DB_USER=
|
|
|
138
138
|
DB_PASS=
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
### 4.
|
|
142
|
-
|
|
143
|
-
Deletes a specific environment file. If no filename is provided, it defaults to deleting `.env`.
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
pnpx env-creator delete [file]
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Examples:**
|
|
150
|
-
```bash
|
|
151
|
-
pnpx env-creator delete # Deletes .env
|
|
152
|
-
pnpx env-creator delete .env.production # Deletes .env.production
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### 5. Sort `.env` keys alphabetically (alias: `srt`)
|
|
141
|
+
### 4. Sort `.env` keys alphabetically (alias: `srt`)
|
|
156
142
|
|
|
157
143
|
Reads an environment file and reorders all `KEY=VALUE` lines alphabetically. By default, it operates in a **flat sort mode**, meaning it binds each comment or empty line to the closest variable immediately below it, and sorts these blocks of keys.
|
|
158
144
|
|
|
@@ -210,6 +196,20 @@ APP_NAME=my-app
|
|
|
210
196
|
PORT=3000
|
|
211
197
|
```
|
|
212
198
|
|
|
199
|
+
### 5. Delete an `.env` file (alias: `d`)
|
|
200
|
+
|
|
201
|
+
Deletes a specific environment file. If no filename is provided, it defaults to deleting `.env`.
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
pnpx env-creator delete [file]
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Examples:**
|
|
208
|
+
```bash
|
|
209
|
+
pnpx env-creator delete # Deletes .env
|
|
210
|
+
pnpx env-creator delete .env.production # Deletes .env.production
|
|
211
|
+
```
|
|
212
|
+
|
|
213
213
|
### 6. Generate environment constants (alias: `gc`)
|
|
214
214
|
|
|
215
215
|
Reads an environment file (defaults to `.env`), extracts the keys, and creates a JavaScript file exporting each key inside a constant object (defaults to `envConstants.js`). You can specify a custom output file using the `--out` flag.
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import r from"fs";import u from"path";import w from"readline";import x from"util";var n={SUCCESS:"green",WARN:"yellow",ERROR:"red"};function t(s,o){return typeof x.styleText=="function"?x.styleText(s,o):o}var l=process.argv.slice(2);l.length===0&&(y(),process.exit(0));function y(){console.log("Usage: env-creator <command> [options]"),console.log(" or: env <command> [options]"),console.log("Commands:"),console.log(" c, create [KEY=value...] Create a .env file (optionally with values)"),console.log(" cfj, create-from-json <json> [--env <name>] Create .env or .env.<name> from JSON"),console.log(" s, split --env <dev|prod> Create environment-specific file from .env"),console.log("
|
|
1
|
+
import r from"fs";import u from"path";import w from"readline";import x from"util";var n={SUCCESS:"green",WARN:"yellow",ERROR:"red"};function t(s,o){return typeof x.styleText=="function"?x.styleText(s,o):o}var l=process.argv.slice(2);l.length===0&&(y(),process.exit(0));function y(){console.log("Usage: env-creator <command> [options]"),console.log(" or: env <command> [options]"),console.log("Commands:"),console.log(" c, create [KEY=value...] Create a .env file (optionally with values)"),console.log(" cfj, create-from-json <json> [--env <name>] Create .env or .env.<name> from JSON"),console.log(" s, split --env <dev|prod> Create environment-specific file from .env"),console.log(" srt, sort [-g/--groups] [file] Sort keys alphabetically (default: .env). Use -g to sort inside existing groups."),console.log(" d, delete [file] Delete an environment file (default: .env)"),console.log(" gc, generate-constants [file] [--out <file>] Generate a JS file with env variable constants"),console.log("Options:"),console.log(" -h, --help Show this help message")}var h=l[0];(h==="--help"||h==="-h"||h==="help")&&(y(),process.exit(0));switch(h){case"c":case"create":{let s=u.join(process.cwd(),".env");if(r.existsSync(s))console.log(t(n.WARN,".env already exists"));else{let o=l.slice(1),g="";if(o.length>0){let i=o.filter(d=>d.includes("="));g=i.join(`
|
|
2
2
|
`)+(i.length>0?`
|
|
3
3
|
`:"")}r.writeFileSync(s,g),console.log(g?t(n.SUCCESS,"Created .env with specified fields"):t(n.SUCCESS,"Created empty .env"))}break}case"cfj":case"create-from-json":{let s=l[1];s||(console.error(t(n.ERROR,"Please provide a JSON file")),process.exit(1)),r.existsSync(s)||(console.error(t(n.ERROR,"JSON file not found")),process.exit(1));let o=l.indexOf("--env"),i=`.env${o!==-1&&l[o+1]?`.${l[o+1]}`:""}`;if(r.existsSync(i)){console.log(t(n.WARN,`${i} already exists`));break}let d=JSON.parse(r.readFileSync(s,"utf-8")),S="";for(let e in d)S+=`${e}=${d[e]}
|
|
4
4
|
`;r.writeFileSync(i,S),console.log(t(n.SUCCESS,`Created ${i} from JSON`));break}case"s":case"split":{let s=l.indexOf("--env");(s===-1||!l[s+1])&&(console.error(t(n.ERROR,"Please specify environment with --env <dev|prod>")),process.exit(1));let o=l[s+1],g=u.join(process.cwd(),".env");r.existsSync(g)||(console.error(t(n.ERROR,".env file not found")),process.exit(1));let d=r.readFileSync(g,"utf-8").split(/\r?\n/).filter(e=>e.trim()!==""&&!e.startsWith("#")).map(e=>e.split("=")[0]+"=").join(`
|
|
5
|
-
`),S=u.join(process.cwd(),`.env.${o}`);if(r.existsSync(S)){console.log(t(n.WARN,`.env.${o} already exists`));break}r.writeFileSync(S,d),console.log(t(n.SUCCESS,`Created .env.${o} with keys only`));break}case"
|
|
5
|
+
`),S=u.join(process.cwd(),`.env.${o}`);if(r.existsSync(S)){console.log(t(n.WARN,`.env.${o} already exists`));break}r.writeFileSync(S,d),console.log(t(n.SUCCESS,`Created .env.${o} with keys only`));break}case"srt":case"sort":{let s=l.includes("--groups")||l.includes("-g"),g=l.slice(1).find(p=>p!=="--groups"&&p!=="-g")||".env",i=u.join(process.cwd(),g);r.existsSync(i)||(console.error(t(n.ERROR,`File ${g} does not exist`)),process.exit(1));let d=r.readFileSync(i,"utf-8").split(/\r?\n/),S=d[d.length-1]===""?d.slice(0,-1):d,e=[];if(s){let p=[];for(let f of S)if(!f.startsWith("#")&&f.trim()!==""&&f.includes("="))p.push(f);else{if(p.length>0&&(p.sort((a,v)=>a.split("=")[0].trim().localeCompare(v.split("=")[0].trim())),e.push(...p),p=[],f.trim()!==""&&e.push("")),f.trim()===""&&e.length>0&&e[e.length-1].trim()==="")continue;e.push(f)}for(p.length>0&&(p.sort((f,c)=>f.split("=")[0].trim().localeCompare(c.split("=")[0].trim())),e.push(...p));e.length>0&&e[e.length-1].trim()==="";)e.pop()}else{let p=[],f=[];for(let c of S)!c.startsWith("#")&&c.trim()!==""&&c.includes("=")?(p.push({header:f,entry:c,key:c.split("=")[0].trim()}),f=[]):c.trim()!==""&&f.push(c);p.sort((c,a)=>c.key.localeCompare(a.key));for(let c of p)e.push(...c.header),e.push(c.entry);e.push(...f)}r.writeFileSync(i,e.join(`
|
|
6
6
|
`)+`
|
|
7
|
-
`),console.log(t(n.SUCCESS,`Sorted keys in ${g}`));break}case"gc":case"generate-constants":{let s=l.indexOf("--out"),o=s!==-1&&l[s+1]?l[s+1]:"envConstants.js",i=(s!==-1?l.filter((a,v)=>v!==s&&v!==s+1):l)[1]||".env",d=u.join(process.cwd(),i);if(!r.existsSync(d)){let v=r.readdirSync(process.cwd()).filter(m=>m.startsWith(".env")&&!m.endsWith(".example"));v.length>0?(i=v[0],d=u.join(process.cwd(),i),console.log(t(n.WARN,`File ${l[1]||".env"} not found. Using ${i} instead.`))):(console.error(t(n.ERROR,`File ${i} does not exist and no fallback .env* files were found`)),process.exit(1))}let e=r.readFileSync(d,"utf-8").split(/\r?\n/).filter(a=>!a.startsWith("#")&&a.trim()!==""&&a.includes("=")).map(a=>a.split("=")[0].trim());if(e.length===0){console.log(t(n.WARN,`No variables found in ${i}`));break}let f=`export const ENV = {
|
|
7
|
+
`),console.log(t(n.SUCCESS,`Sorted keys in ${g}`));break}case"d":case"delete":{let s=l[1]||".env",o=u.join(process.cwd(),s);r.existsSync(o)?(r.unlinkSync(o),console.log(t(n.SUCCESS,`Deleted ${s}`))):console.log(t(n.WARN,`File ${s} does not exist`));break}case"gc":case"generate-constants":{let s=l.indexOf("--out"),o=s!==-1&&l[s+1]?l[s+1]:"envConstants.js",i=(s!==-1?l.filter((a,v)=>v!==s&&v!==s+1):l)[1]||".env",d=u.join(process.cwd(),i);if(!r.existsSync(d)){let v=r.readdirSync(process.cwd()).filter(m=>m.startsWith(".env")&&!m.endsWith(".example"));v.length>0?(i=v[0],d=u.join(process.cwd(),i),console.log(t(n.WARN,`File ${l[1]||".env"} not found. Using ${i} instead.`))):(console.error(t(n.ERROR,`File ${i} does not exist and no fallback .env* files were found`)),process.exit(1))}let e=r.readFileSync(d,"utf-8").split(/\r?\n/).filter(a=>!a.startsWith("#")&&a.trim()!==""&&a.includes("=")).map(a=>a.split("=")[0].trim());if(e.length===0){console.log(t(n.WARN,`No variables found in ${i}`));break}let f=`export const ENV = {
|
|
8
8
|
${e.map(a=>` ${a}: process.env.${a},`).join(`
|
|
9
9
|
`)}
|
|
10
10
|
};
|