自定义封装组件打包发布到npm(ts)

前言

  • 使用tsdx进行项目初始化,这个库可以解决大部分ts打包成库的配置设置问题,对于不会配置的小伙伴及其友好(基本上都配置完了)
  • 自动生成example文件,也不需要对webpack进行配置了
  • 因为项目需求需要打包发布npm,发布完成后学习的过程来这里记录一下

 Git官网

        https://github.com/jaredpalmer/tsdx#quick-start

正文

  • 初始化项目
npx tsdx create mylib      //mylib是初始化项目名称
  • 会出现三个选项供你选择,这里我选的是react

  •  完成初始化后的目录,dist目录是打包后的文件目录,example是实例目录,可以在里面实时调用你已经封装好的组件或者方法,确认无误后再打包发布等等,src就是主文件目录了

  •  src文件目录结构(lib是封装组件的目录,index文件为暴露组件文件)

  •  index文件将组件抛出

  •  index.config.ts配置文件,因为打包是不支持scss,less和svg的,所以如果要使用的话,需要配置转换,需要在index.config.ts和tsdx.config.js中配置
//index.config.ts配置文件

declare module '*.less' {
    const content: any;
    export default content;
}
declare module '*.scss' {
    const content: any;
    export default content;
}


declare module '*.svg' {
    import * as React from "react";
    export const ReactComponent: React.FunctionComponent<
        React.SVGProps<SVGSVGElement> & { title?: string }
    >;
    const src: string;
    export default src;
}
//tsdx.config.js配置文件

const postcss = require('rollup-plugin-postcss');
// const autoprefixer = require('autoprefixer');
const image = require('@rollup/plugin-image');
const json = require('@rollup/plugin-json')
// const cssnano = require('cssnano');


module.exports = {
    configureWebpack: {
        module: {
            rules: [
                {
                    test: /\.geojson$/,
                    loader: 'json-loader'
                }
            ]
        },
    },

    rollup(config, options) {
        config.plugins.push(
            json({
                kml: true
            }),
            postcss({
                // plugins: [
                //     autoprefixer(),
                //     cssnano({
                //         preset: 'default',
                //     }),
                // ],
                inject: true, // 是否主动注入css到js中(设置为true,则在引用组件的时候,就无需再单独引入css了)
                extract: !!options.writeMeta, //
                // modules: true, // 使用css modules
                camelCase: true, // 支持驼峰
                sass: true, // 是否使用sass
                less: true, // 是否使用less
            }),
        );
        // 截至2021年3月: 必须使用 unshift 添加 image 插件, 否则报错
        config.plugins.unshift(image({
            svg: true
        }));
        return config;
    },
};

项目启动和运行

  •  需要打开两个终端,一个是项目的根目录,还有一个是通过cd example进入example目录下

  •  通过yarn start就会进行编译和运行,成功启动后在http://localhost:1234(默认的)页面中看到自己封装的组件效果,运行成功状态如下:

  •  注意:初始化项目的时候需要在根目录和example终端分别yarn一下安装依赖

 打包和发布到npm

  • 通过yarn build 打包组件
  • 根目录下package.json中的配置,version就是发布组件的版本,license是认证这个就填MIT(麻省理工)就可以了,name是你的组件包的名称

安装的配置文件(可参考):

  •  打包成功后的dist文件目录

  •  在终端运行npm login 登录npm账号,按照提示输入username、password、email,登录后,可以通过npm whoami来查看登录用户信息
npm whoami   //查看当前登录的npm用户
  • 发布到npm
npm push --access=public  

可能遇到的问题

  • 打包发布可能会遇到命名重复问题,只要修改name再次打包发布就可以了
  • 开发途中还遇到了不少问题,但具体很多都忘记了,所以评论区可以交流交流打包发布过程遇到的问题
  • 以及文章中有不对的地方请指正
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue是一种用于构建用户界面的渐进式JavaScript框架,它可以通过封装组件来实现可复用、模块化以及易于维护的代码。下面我将介绍如何对Vue组件进行封装,并将其打包发布npm上供他人使用。 首先,我们需要创建一个Vue项目,并在项目中使用Vue CLI来进行组件的开发和构建。可以通过以下命令创建一个新的Vue项目: ``` vue create my-component ``` 接下来,您可以通过Vue CLI支持的任何方式(如单文件组件JavaScript脚本等)创建自定义组件。在组件的开发过程中,可以利用Vue提供的各种功能和特性,比如计算属性、生命周期钩子函数、模板语法等。确保你的组件功能完备、可复用且易于理解。 完成组件的开发后,我们需要将其打包成可用的npm包。Vue CLI可以帮助我们自动进行打包,只需执行以下命令: ``` npm run build ``` 该命令将生成一个dist文件夹,其中包含了打包后的组件代码。 接下来,我们需要在项目的根目录中创建一个package.json文件,用于描述我们的npm包,并设置一些配置信息。其中,name字段用于定义npm包的名称,version字段用于定义npm包的版本号。其他字段根据您的需要进行设置。然后,执行以下命令将package.json文件拷贝到dist文件夹中: ``` cp package.json dist/ ``` 然后,我们需要登录到npm官方网站,并创建一个账户。接着,使用以下命令进行登录: ``` npm login ``` 在登录成功后,使用以下命令发布npm包: ``` npm publish dist/ ``` 完成上述步骤后,您的自定义Vue组件就已经发布到了npm上。其他开发者可以通过以下命令安装并使用您的组件: ``` npm install your-component ``` 然后,在他们的Vue项目中,可以通过import语句引入您的组件,并在模板中使用它。 至此,我们已经学习了如何封装自定义Vue组件,并通过npm发布,供他人使用。希望这能帮助到您!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值