summary refs log tree commit diff stats
path: root/user/settings/development/javascript.nix
blob: 9b8bdabfd7a17e96a5b69e13e12f97012195f74f (plain)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
{
  config,
  pkgs,
  ...
}: let
  nodejs = pkgs.nodejs-18_x;
in {
  nixpkgs.overlays = [
    (self: super: {
      node2nixPackages = super.callPackage ../../packages/node2nix {
        inherit nodejs;
      };
    })
  ];
  home.packages =
    (with pkgs;
      [
        nodejs
      ]
      ++ (
        if stdenv.isDarwin
        then [
        ]
        else [
          # npm install may use any of these
          binutils
          gnumake
          gcc
          python2
        ]
      ))
    ++ (with pkgs.nodePackages; [
      node2nix
      nodemon
      javascript-typescript-langserver
      typescript-language-server
      eslint_d
      typescript

      node-gyp
      node-gyp-build
      node-pre-gyp
    ])
    ++ (with pkgs.node2nixPackages; [
      pkgs.node2nixPackages."pnpm-7.12"

      pino-pretty
    ]);

  home.sessionVariables = {
    NO_UPDATE_NOTIFIER = "1"; # stop npm update-notifier
  };

  programs.zsh.shellAliases = {
    ava = "pnpx ava";
    avt = "pnpx ava --tap";
    avat = "pnpx ava --tap";
    avaw = "pnpx ava --watch";
    avaf = "pnpx ava --fail-fast";
    avafw = "pnpx ava --fail-fast --watch";
    avawf = "pnpx ava --fail-fast --watch";
    pino = "pino-pretty";
    mocha = "pnpx mocha";
    standard = "pnpx standard";
    tsc = "pnpx tsc";
    tslint = "pnpx tslint";
    tsnode = "pnpx ts-node";

    p = "pnpm";
    pi = "pnpm install --filter=.";
    pit = "pnpm install-test --filter=.";
    pl = "pnpm ls";
    pr = "pnpm run";
    pb = "pnpm run build";
    prb = "pnpm run build";
    pbd = "pnpm multi run build --filter={.}...";
    pmi = "pnpm multi install";
    pmx = "pnpm multi exec "; # expand command aliases
    pmr = "pnpm multi run";
    pa = "pnpm add";
    pad = "pnpm add --save-dev";
    pd = "pnpm uninstall";
    pou = "pnpm outdated";
    pt = "pnpm test";
    pmt = "pnpm multi test";
    pmd = "pnpm multi uninstall";
    pmit = "pnpm multi install-test";
    pup = "pnpm update";
    pupl = "pnpm update --latest";
    ppr = "pnpm prune";
    pprp = "pnpm prune --production";
    pli = "pnpm link";
    pdi = "pnpm dislink";
    pul = "pnpm unlink";
    px = "pnpx";

    np = "npm";
    npi = "npm install";
    npl = "npm ls";
    npr = "npm run";
    npb = "npm run build";
    nprb = "npm run build";
    npa = "npm install --save";
    npad = "npm install --save-dev";
    npd = "npm uninstall";
    npt = "npm test";
    npup = "npm update";
    nppr = "npm prune";
    npprp = "npm prune --production";
    npli = "npm link";
    npul = "npm unlink";
  };

  home.file.".npmrc".text = ''
    prefix=''${HOME}/.local
    cache=${config.xdg.cacheHome}/npm/
    store-dir=${config.xdg.cacheHome}/pnpm/
    script-shell=${pkgs.zsh}/bin/zsh
    always-auth=true
    sign-git-tag=true
    rebuild-bundle=false
    update-notifier=false
    registry=https://registry.npmjs.org/
  '';
}