美文网首页
开发 npm 包的一份配置

开发 npm 包的一份配置

作者: 风之化身呀 | 来源:发表于2019-04-08 17:56 被阅读0次
const gulp = require("gulp");
const { series, watch } = gulp;
const gulpBabel = require("gulp-babel");
const gulpSass = require("gulp-sass");
const gulpAutoprefixer = require("gulp-autoprefixer");

const fs = require("fs");
const path = require("path");
const semver = require("semver");
const pkg = require("./package.json");
const execFile = require("child_process").execFile;

function esToCjs() {
  return gulp
    .src(["dist/lib/**/*.js", "dist/lib/**/*.jsx"])
    .pipe(
      gulpBabel({
        presets: [
          [
            "@babel/env",
            {
              targets: {
                browsers: ["last 2 versions", "ie>=11"] //可取值:chrome, opera, edge, firefox, safari, ie, ios, android, node, electron.
              },
              modules: "commonjs", //可取值"amd" | "umd" | "systemjs" | "commonjs" | false, defaults to "commonjs".
              useBuiltIns: "usage",
              debug: true
            }
          ],
          "@babel/react"
        ],
        plugins: [
          "@babel/plugin-proposal-class-properties",
          "@babel/plugin-transform-runtime"
        ]
      })
    )
    .pipe(gulp.dest(`dist/lib`));
}

function scssToCss() {
  return gulp
    .src("src/**/*.scss")
    .pipe(
      gulpSass({
        outputStyle: "expanded"
      })
    )
    .pipe(gulpAutoprefixer())
    .pipe(gulp.dest("src/"));
}

function copy() {
  const sourceFiles = ["src/**/*", "!src/index.js"];
  const destination = "dist/lib/";
  return gulp.src(sourceFiles).pipe(gulp.dest(destination));
}

function generateExtraFile(cb) {
  pkg.version = semver.inc(pkg.version, "patch");
  fs.writeFileSync(
    path.resolve(__dirname, "./package.json"),
    JSON.stringify(pkg, null, 2)
  );
  delete pkg.devDependencies;
  delete pkg.scripts;

  fs.writeFileSync(
    path.resolve(__dirname, "./dist/package.json"),
    JSON.stringify(pkg, null, 2)
  );

  fs.copyFileSync("./README.md", "./dist/README.md");
  cb();
}

function devServer(cb) {
  execFile("react-app-rewired", ["start"]).stdout.on("data", function(data) {
    console.log(data);
  });
  cb();
}

function watchFile() {
  watch("src/**/*.scss", series(scssToCss));
}

exports.build = series(scssToCss, copy, esToCjs, generateExtraFile);
exports.dev = series(scssToCss, devServer, watchFile);

{
  "name": "@xx/scripts-store",
  "version": "0.1.9",
  "main": "lib/PluginStore/index.js",
  "dependencies": {
    "axios": "0.18.0",
    "core-js": "2.6.5",
    "events": "3.0.0",
    "react": "16.8.3",
    "react-dom": "16.8.3",
    "react-inlinesvg": "0.8.4"
  },
  "scripts": {
    "start": "gulp dev",
    "build-cjs": "rm -rf dist && mkdir dist && gulp build",
    "publish": "cd dist && npm publish"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "devDependencies": {
    "@babel/plugin-proposal-class-properties": "7.3.4",
    "@babel/plugin-transform-runtime": "7.3.4",
    "@babel/preset-react": "7.0.0",
    "@shimo/react-svg-loader": "2.1.3",
    "eslint-plugin-prettier": "2.6.1",
    "eslint-plugin-react": "7.5.1",
    "gulp": "4.0.0",
    "gulp-autoprefixer": "6.0.0",
    "gulp-babel": "8.0.0",
    "gulp-sass": "4.0.2",
    "react-app-rewired": "^2.1.1",
    "react-scripts": "2.1.5",
    "semver": "5.6.0"
  }
}

相关文章

  • 开发 npm 包的一份配置

  • 2018-02-24

    昨天在慕课网上跟着学了使用npm配置开发环境,之前也用npm install下载过安装包,但是这次才明白原来npm...

  • npm常用命令集锦

    npm查看包的信息: npm安装包: 查看和设置npm安装包的全局配置与缓存 想要恢复这个配置的默认值,删除C:\...

  • rollup配置 + webpack配置

    背景: 最近开发基于TS来做的npm包,在打包方面得到一些新思路。 webpack基本配置 rollup配置 得到...

  • 简易npm包的开发流程

    npm 设置 在开发一个Npm包的时候,最开始肯定是要初始化好环境: 设置好基础的配置后,后续在开发新的项目的时候...

  • (一)Vue.js2.0开发之路 - 环境搭建

    一 开发环境配置 node.js 安装 http://nodejs.cn/ 下载安装包安装成功后利用 npm ...

  • vue-cli小知识

    1.用npm装包时 -D表示是开发环境所依赖的东西,配置在package.json中的devDependencie...

  • webpack+es6+react+antd-design库构建

    一:配置react环境(webpack版本2) 1.cmd进到文件目录:npm init (初始化npm包的配置文...

  • package.json 中的属性详解

    npm是前端开发人员广泛使用的包管理工具,项目中通过package.json来管理项目中所依赖的npm包的配置。p...

  • 手动webpack vue项目的配置二

    配置eslint 统一代码风格方便团队开发 1.安装eslint包和依赖npm i eslint eslint-c...

网友评论

      本文标题:开发 npm 包的一份配置

      本文链接:https://www.haomeiwen.com/subject/bvguiqtx.html