前端开发项目发布到npm

文章序

本篇文章将指导你如何开发一个自己的npm项目,并列举其中一些细节

业务代码

可以是纯js,也可以使用框架和组件,看你个人需求

工程文件

package.json文件
main字段指向你打包后的产物的js入口文件,files字段表示发布到npm仓库中哪些文件和文件夹,devDependencies在其他人引用你的包时不会被安装,dependencies则会被安装

{
    "name": "my_project",
    "version": "1.0.0",
    "type": "module",
    "privae": false,
    "main": "dist/index.umd.cjs",
    "files": ["dist", "README.md"],
    "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview"
    },
    "dependencies": {
        "@element-plus/icons-vue": "^2.3.1",
        "axios": "^1.9.0",
        "codemirror": "^5.65.17",
        "codemirror-editor-vue3": "^2.7.0",
        "element-plus": "^2.9.11",
        "file-saver": "^2.0.5",
        "js-base64": "^3.7.7",
        "js-cookie": "^3.0.5",
        "mavon-editor": "^3.0.1",
        "pinia": "^3.0.3",
        "pinia-plugin-persistedstate": "^4.4.1",
        "spark-md5": "^3.0.2",
        "vue": "^3.5.13",
        "vue-router": "^4.5.1",
        "vue-simple-uploader": "^1.0.3"
    },
    "devDependencies": {
        "@vitejs/plugin-vue": "^5.2.3",
        "prettier": "^3.6.2",
        "sass": "^1.89.2",
        "sass-loader": "^16.0.5",
        "vite": "^6.3.5"
    }
}

构建文件

使用vite或webpack都可以,这里以vite为例
vite.config.js文件
主要看build对象,其中outDir定义打包后文件名称,lib对象中entry字段定义了项目的入口文件,name字段定义打包后js文件名称,fileName定义打包后css文件名称,rollupOptions中定义打包过程中需要使用哪些插件

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'node:path'
// https://vite.dev/config/
export default defineConfig(({ mode }) => {
    const env = loadEnv(mode, process.cwd(), '')
    const { VITE_APP_BASE_API_URL } = env
    return {
        plugins: [vue()],
        resolve: {
            alias: {
                '~': path.resolve(__dirname, './'),
                '@': path.resolve(__dirname, './src')
            },
            extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
        },
        server: {
            port: 8080,
            host: true,
            open: true,
            proxy: {
                '/dev-api': {
                    target: VITE_APP_BASE_API_URL,
                    changeOrigin: true,
                    rewrite: path => path.replace(/^\/dev-api/, '')
                }
            }
        },
        build: {
            outDir: 'dist', // 修改输出目录名称
            lib: {
                entry: path.resolve(__dirname, './src/main.js'),
                name: 'gwNetdisk',
                fileName: 'gwNetdisk'
            },
            rollupOptions: {
                external: ['vue', 'element-plus', 'axios'],
                output: {
                    globals: {
                        vue: 'Vue',
                        'element-plus': 'ElementPlus',
                        axios: 'axios'
                    }
                }
            }
        },
        css: {
            postcss: {
                plugins: [
                    {
                        postcssPlugin: 'internal:charset-removal',
                        AtRule: {
                            charset: atRule => {
                                if (atRule.name === 'charset') {
                                    atRule.remove()
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
})


发布

当你准备好了工程我们终于可以来到发布环节了

首先需要准备一个npm账号,可以去官网注册 https://www.npmjs.com/

注册号账号需要在npm设置你的账号密码

npm adduser

在后续对话里输入账号密码即可

一切准备就绪后进入你的项目根目录,也就是package.json那一层,执行

npm publish

如此,你的项目被成功发布到npm仓库中了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容