Skip to content

Commit

Permalink
♻️ Refactor dts and prepare scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
CryogenicPlanet committed Jan 14, 2022
1 parent ab1c2cc commit f2ab571
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 42 deletions.
16 changes: 7 additions & 9 deletions cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,19 @@ func SetupCliApp() (cli.App, error) {
Name: "dts",
Usage: "Will emit .d.ts files and bundle them",
},
// &cli.BoolFlag{
// Name: "sourcemap",
// Usage: "Will emit source maps",
// },
// &cli.StringFlag{
// Name: "dist",
// Usage: "Set output directory",
// Value: "dist",
// },
},
Action: func(c *cli.Context) error {

return commands.HandleBuildCommand(c.Args().First(), c.Bool("dts"))
},
},
{
Name: "dts",
Usage: "Emit .d.ts files for package",
Action: func(c *cli.Context) error {
return commands.RunDts()
},
},
{
Name: "prettier",
Usage: "Will run pretty-quick",
Expand Down
33 changes: 1 addition & 32 deletions internal/commands/build.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package commands

import (
"errors"
"fmt"
"internal/types"
"internal/utils"
"os"
"sync"
Expand All @@ -13,35 +11,6 @@ import (

var buildWg sync.WaitGroup

func emitDts(cwd string, name string) error {
if _, err := os.Stat(types.BUNDLE_DTS_PATH); errors.Is(err, os.ErrNotExist) {

fmt.Println("[WARN] You can only use --dts flag if you have installed tsdev as a dependency")
buildWg.Done()
return nil
}
utils.ExecWithOutput(cwd, "tsc", "--outDir", "dist/src/")
return bundleDts(cwd, name)
}

func bundleDts(cwd string, name string) error {

if _, err := os.Stat(types.BUNDLE_DTS_PATH); errors.Is(err, os.ErrNotExist) {

if _, err := os.Stat(types.BUNDLE_BACKUP_DTS_PATH); errors.Is(err, os.ErrNotExist) {
fmt.Println("[WARN] You can only use --dts flag if you have installed tsdev as a dependency")
return errors.New("cannot find bundle-dts path")
}
utils.ExecWithOutput(cwd, "node", types.BUNDLE_BACKUP_DTS_PATH, "--name", name, "--main", "dist/src/index.d.ts", "--out", "../index.d.ts")
buildWg.Done()
return nil
}

utils.ExecWithOutput(cwd, "node", types.BUNDLE_DTS_PATH, "--name", name, "--main", "dist/src/index.d.ts", "--out", "../index.d.ts")
buildWg.Done()
return nil
}

func buildCJS(entryPoint string, cwd string) {
result := api.Build(api.BuildOptions{
EntryPoints: []string{entryPoint},
Expand Down Expand Up @@ -117,7 +86,7 @@ func HandleBuildCommand(entryPoint string, dts bool) error {
buildWg.Add(1)
name, err := utils.GetName()
utils.CheckErr(err)
go emitDts(cwd, name)
go EmitDts(cwd, name)
}
buildWg.Wait()

Expand Down
23 changes: 22 additions & 1 deletion internal/commands/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,27 @@ func cloneTemplate(name string) error {
// Will generate package json
func generatePackageJson(name string) {

var prepareScript string

switch projectConfig.PackageManager {
case types.Pnpm:
{
prepareScript = "pnpm build && pnpm dts"
}
case types.Yarn:
{
prepareScript = "yarn build && yarn dts"
}
case types.Npm:
{
prepareScript = "npm run build && npm run dts"
}
default:
{
prepareScript = "npm run build && npm run dts"
}
}

// Default package json
packageJson := types.PackageJSON{
Name: name,
Expand All @@ -136,7 +157,7 @@ func generatePackageJson(name string) {
Typings: "dist/index.d.ts",
Module: "dist/index.es.js",
Files: []string{"dist"},
Scripts: map[string]string{"start": "tsdev start", "build": "tsdev build", "dev": "tsdev dev", "lint": "tsdev lint"},
Scripts: map[string]string{"start": "tsdev start", "build": "tsdev build", "dev": "tsdev dev", "lint": "tsdev lint", "dts": "tsdev dts", "prepare": prepareScript},
DevDependencies: map[string]string{"typescript": "latest", "husky": "latest", "prettier": "latest", "prettier-config-standard": "latest", "@cryogenicplanet/tsdev": "latest"},
Husky: map[string]map[string]string{"hooks": {"pre-commit": "tsdev prettier", "pre-push": "tsdev lint"}},
Engines: map[string]string{"node": ">12"},
Expand Down
69 changes: 69 additions & 0 deletions internal/commands/dts.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package commands

import (
"errors"
"fmt"
"internal/types"
"internal/utils"
"os"
)

func EmitDts(cwd string, name string) error {

packageJson, err := utils.ReadPackageJson(cwd + "/package.json")

if err != nil {
fmt.Println("Could not read package.json", cwd+"./package.json")
buildWg.Done()
return err
}

if _, err := os.Stat(types.BUNDLE_DTS_PATH); errors.Is(err, os.ErrNotExist) {

if _, err := os.Stat(types.BUNDLE_BACKUP_DTS_PATH); errors.Is(err, os.ErrNotExist) {
fmt.Println("[WARN] You can only use --dts flag if you have installed tsdev as a dependency. Error:", err)
buildWg.Done()
return errors.New("cannot find bundle-dts path")
}
}
fmt.Println("Package manager is ", packageJson.TSDEV.PackageManager)
err = utils.ExecWithOutput(cwd, utils.GetPackageManager(packageJson.TSDEV.PackageManager), "tsc", "--outDir", "dist/src/")
if err != nil {
buildWg.Done()
return err
}
return bundleDts(cwd, name)
}

func bundleDts(cwd string, name string) error {

if _, err := os.Stat(types.BUNDLE_DTS_PATH); errors.Is(err, os.ErrNotExist) {

if _, err := os.Stat("./" + types.BUNDLE_BACKUP_DTS_PATH); errors.Is(err, os.ErrNotExist) {
fmt.Println("[WARN] You can only use --dts flag if you have installed tsdev as a dependency. Error:", err)
return errors.New("cannot find bundle-dts path")
}
utils.ExecWithOutput(cwd, "node", types.BUNDLE_BACKUP_DTS_PATH, "--name", name, "--main", "dist/src/index.d.ts", "--out", "../index.d.ts")
buildWg.Done()
return nil
}

utils.ExecWithOutput(cwd, "node", types.BUNDLE_DTS_PATH, "--name", name, "--main", "dist/src/index.d.ts", "--out", "../index.d.ts")
buildWg.Done()
return nil
}

func RunDts() error {

cwd, err := os.Getwd()

utils.CheckErr(err)
name, err := utils.GetName()
utils.CheckErr(err)
buildWg.Add(1)

go EmitDts(cwd, name)

buildWg.Wait()
return nil
}
25 changes: 25 additions & 0 deletions internal/utils/packageManger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package utils

import "internal/types"

func GetPackageManager(packageManger types.PackageManagerType) string {

switch packageManger {
case types.Pnpm:
{
return "pnpm"
}
case types.Yarn:
{
return "yarn"
}
case types.Npm:
{
return "npm"
}
default:
{
return "npm"
}
}
}

0 comments on commit f2ab571

Please sign in to comment.