sleepyShen1989 / blog

MIT License
0 stars 0 forks source link

【常识】npm && pnpm基础 #19

Open sleepyShen1989 opened 1 year ago

sleepyShen1989 commented 1 year ago

npm

package.json配置

{
    private, // 当值为true时,npm不能发布(防止误操作)
    main,   // 入口文件,require('XXX') 找node_modules/XXX/{ mainValue }.js  commonjs
    module, // 入口文件,import xxx from 'XXX' esm
    unpkg,  // cdn 服务商
    jsdelivr, // cdn 服务商
    typings, // .d.ts文件位置
    engines, // 指定Node和npm版本号
    files, // 将符合规则的文件传入npm文件
    exports, // 支持条件判断 构建器支持exports 则读取exports,如果不支持,就使用之前的配置
    sideEffects: false // treeshaking
}

npx

直接调用当前目录node_modules/.bin下的命令

发包

  1. 注册npm
  2. 登录npm login
  3. 修改package.json
  4. 发布npm publish

删除

使用相关问题

  1. 不认import/require语法

pnpm

常用命令

软链接与硬链接

创立软链接与硬链接

格式:window/mac

权限问题:以管理员身份打开

优势

monorepo入门例子

  1. pnpm init
  2. 新建pnpm-workspace.yaml配置,定义工作空间的根目录
    packages:
    # 所有的前端项目存储的地方
    - 'packages/*'
    # 给我所有项目使用的公共组件 
    - 'components/**'
    # 公共方法 api
    - 'api/**'
  3. 新建api目录
    1. 执行pnpm init & pnpm add axios
    2. 新建base.js,user.js,index.js(main指向的入口)
      
      // base.js
      import axios from 'axios'
      let Axios = axios.create({
      baseURL: '/'
      })
      export default Axios

// user.js import Axios from './base' export const getUser = (data) => Axios.get(data)

// index.js export * from './user'

   3. 修改api内部`package.json`
```js
{
  "name": "@projectName/api",
  "private": true
}
  1. 新建packages目录,
    1. npm crate vite创建项目
    2. cd进入项目,pnpm i
    3. 需要在项目中使用api目录中公开的请求
      1. pnpm add @projectName/api
      2. 项目中的package.json中可以看到dependencies中存在依赖
      3. 项目中使用import {getUser} from "@projectName/api"
  2. 根目录执行npm crate vite创建components目录
    1. 内部创建Button.vue组件
    2. 安装依赖,否则打包报错
    3. 新建index.js, import Button from './dir/Button.vue'; export default Button
    4. 修改package.json
      {
      "name":"@projectName/components",
      "private": true,
      "main": "index.js"
      }
    5. 需要在项目中使用api目录中公开的组件
      1. pnpm add @projectName/api
      2. 项目中的package.json中可以看到dependencies中存在依赖
      3. 项目中使用import Button from "@projectName/components"
sleepyShen1989 commented 1 year ago

npm create

npm init的别名

npm create 过程

  1. 先去npm仓库找create-
  2. 执行npm exec create-命令
  3. 执行create-包里的create-脚本(由package.json里的bin指定)