npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@growing-web-examples/wpm

v0.0.2

Published

A package manager tool based on importmap

Downloads

6

Readme

wpm

这是一个基于 importmap 的包管理工具。

安装

npm install -g @growing-web-examples/wpm

指南

配置文件

web-module.json 将作为 wpm 的配置文件。

{
  "defaultProvider": "dancf",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": {
    "react": "^17.0.2"
  }
}

安装模块

wpm install

运行命令后,它将会生成 importmap.json 文件,它是 导入映射 的标准格式,你可以用它管理模块。

{
  "imports": {
    "react": "https://es.dancf.com/npm:[email protected]/index.js"
  },
  "scopes": {
    "https://es.dancf.com/": {
      "object-assign": "https://es.dancf.com/npm:[email protected]/index.js"
    }
  }
}

与本地依赖保持一致

{
  "defaultProvider": "dancf",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": {
    "$ref": "./package.json#/dependencies"
  }
}

web-module.json 支持使用 $ref 语法,它可以引入外部定义的 JSON 内容。

合并多个依赖表

{
  "defaultProvider": "dancf",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": [{
    "$ref": "./package.json#/dependencies"
  }, {
    "react": "^17.0.2"
  }]
}

内部将使用 Object.assign(...dependencies) 进行合并,因此右边的优先级高于左边。

工作空间模块

{
  "defaultProvider": "dancf",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": {
    "test": "workspace:*"
  }
}

workspace:* 协议可以根据工作空间内的本地包来确定版本号,也就是说 wpm 安装的时候会最终读取工作空间对应的包的版本号来工作。

固定远程模块

{
  "defaultProvider": "dancf",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": {
    "vue": "https://cdn.com/vue.js"
  }
}

wpm 会忽略 https: 定义的远程模块,它不会去解析它。

切换 CDN

defaultProvider 可以指定默认的模块提供者,你可以在公共 CDN 或者 nodemodules 切换,默认值是 jspm

本地调试

通常情况下将使用 CDN 而不是 nodemodules 来管理模块,如果需要单独调试某个包,可以将其映射到本地来。

首先,创建 web-module.dev.json 文件,并且设置环境变量 NODE_ENVdevelopment

将所有模块映射到本地:

{
  "defaultProvider": "nodemodules",
  "providers": {},
  "env": ["production", "browser", "module"],
  "dependencies": [{
    "$ref": "./package.json#/dependencies"
  }, {
    "react": "^17.0.2"
  }]
}

只映射特定的模块:

{
  "defaultProvider": "dancf",
  "providers": {
    "react": "nodemodules"
  },
  "env": ["production", "browser", "module"],
  "dependencies": [{
    "$ref": "./package.json#/dependencies"
  }, {
    "react": "^17.0.2"
  }]
}