{"_id":"33_webpack-lib","_rev":"1-be431fe5a0b55c78e5fb04cfd1cccb78","name":"33_webpack-lib","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"33_webpack-lib","version":"1.0.0","main":"index.js","license":"MIT","devDependencies":{"terser-webpack-plugin":"^2.3.5","webpack":"^4.41.6","webpack-cli":"^3.3.11"},"scripts":{"build":"webpack"},"description":"> 需求： 实现大型正整数相加，打包出开发环境用的js和生产环境用的.min.js。支持amd/cmj/es6/script标签引用等多种方式。 ### 1. 编写加法代码 ``` export default function add(a, b) {   let i = a.length - 1;   let j = b.length - 1;   let carry = 0;   let result = \"\";   while (i >= 0 || j >= 0) {     let x = 0; ","_id":"33_webpack-lib@1.0.0","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ZCJGQrQsRHAd68H5Ct6U6Y3e37XaRYcPsykePFlhgsq9eHEkUpz2RY3ddF+/Q94kjWrZZBiiUgznJ03bgDoPKA==","shasum":"b92d27005325cf81496bbb385930157b5d56fb48","tarball":"https://registry.npmjs.org/33_webpack-lib/-/33_webpack-lib-1.0.0.tgz","fileCount":8,"unpackedSize":112369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeT47BCRA9TVsSAnZWagAAVIcP/ibaBLt9ita9sgfVStI+\na1YXpybG0Pjd0misHaVF4fu8zDBYUWfZO4nNacSifycx52l48T/neJr5fdd0\nsnc+Od0O3hfBa2UTEwXF++aLHB3gkXw9n3TPo4DxM1GYYOcZIX10vs5u9nfF\noD2rjwZom5FmlUh1hnsPCkhB975ljLVZ7wdTSbGC1KE0kvD+11aBvPSSasb9\ndAixNEh/U9NU/88o1h9zkBJhvfAiI8IWrLSuTKl3rmBZEaMvHgg9mP9eWC7i\n58q+WYR1MMhGokMC0xTbUIX+FRja060GRRDtCOHytA1RifLXuLjG/yO07OtZ\n1gKWTwIZSYMK9oYX559HC6MpOZO/+yH4ZABHdzDl9SPB5yYWDUHvilJ8zC+Z\naUkb5eul1Z7L2A5gnRankZqHTC4TYwMBFvfodyk0oFALT6gmUZvacNIWCRXQ\ntGRnmo0N43ztenUNq0cisDJ/B23kGDEqD+0sy5XENfu+3WVdvdlBNtgODOOE\nFiSiSTVnVMkpftzAv/d0PrlYHt092YeVTMPgNjC37r92RJtcyzTlAXTFHIcl\nTrJSpIisLf5q3E3Syp/ipUizvDN2/44OVM5kFZm09UvqKXwxLb817lEGxCTd\nbkwLr4fogl4EYL67/IR403CNdRVT289LV+r6ient6540oRnBXdDi5vmV2n7N\n662m\r\n=9oSA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZGMDOu3vOk0ozQgDi+drOLYNnRktFCZc9RdKPGGAuHQIgICP1W9zFm1r9G31AHKyWxjY0xTNayRMiy+q4HGY4Ca0="}]},"maintainers":[{"name":"qingfengmy","email":"qingfengmy@126.com"}],"_npmUser":{"name":"qingfengmy","email":"qingfengmy@126.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/33_webpack-lib_1.0.0_1582272192631_0.2136302853122367"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-21T08:03:12.631Z","1.0.0":"2020-02-21T08:03:12.779Z","modified":"2022-04-04T10:20:24.218Z"},"maintainers":[{"name":"qingfengmy","email":"qingfengmy@126.com"}],"description":"> 需求： 实现大型正整数相加，打包出开发环境用的js和生产环境用的.min.js。支持amd/cmj/es6/script标签引用等多种方式。 ### 1. 编写加法代码 ``` export default function add(a, b) {   let i = a.length - 1;   let j = b.length - 1;   let carry = 0;   let result = \"\";   while (i >= 0 || j >= 0) {     let x = 0; ","license":"MIT","readme":"## webpack打包lib包\n> 需求： 实现大型正整数相加，打包出开发环境用的js和生产环境用的.min.js。支持amd/cmj/es6/script标签引用等多种方式。\n### 1. 编写加法代码\n```\nexport default function add(a, b) {\n  let i = a.length - 1;\n  let j = b.length - 1;\n  let carry = 0;\n  let result = \"\";\n  while (i >= 0 || j >= 0) {\n    let x = 0;\n    let y = 0;\n    if (i >= 0) {\n      x = a[i] - \"0\"; // 字符转为数字\n      i--;\n    }\n    if (j >= 0) {\n      y = b[j] - \"0\";\n      j--;\n    }\n    let sum = x + y + carry;\n\n    if (sum >= 10) {\n      carry = 1;\n      sum -= 10;\n    } else {\n      carry = 0;\n    }\n    result = sum + result;\n  }\n  if (carry) {\n    result = carry + result;\n  }\n\n  return result;\n}\n```\n### 2. webpack.config.js配置两个entry，打包出`.js`和`.min.js`\n```\nconst path = require('path')\nmodule.exports = {\n  entry: {\n    qingfengmyAdd: \"./src/index.js\",\n    \"qingfengmyAdd.min\": \"./src/index.js\"\n  },\n  output:{\n      path: path.resolve(__dirname, 'dist'),\n      filename:'[name].js'\n  },\n};\n```\n### 3. 解决只压缩`.min.js`的代码\n```\nmode:none,\noptimization: {\n    minimize: true,\n    minimizer: [new TerserPlugin({ include: /\\.min\\.js$/ })]\n}\n```\n安装依赖\n```\nyarn add terser-webpack-plugin -D\n```\n> terser-webpack-plugin，内容同UglifyjsWebpackPlugin，不过这个支持es6的代码压缩，uglifyjs最新版本也支持es6的压缩\n### 4. 设置lib的入口文件:package.json的main 字段为index.js\n```\n// index.js\nif (process.env.NODE_ENV === \"production\") {\n  module.exports = require(\"./dist/qingfengmyAdd.min.js\");\n} else {\n  module.exports = require(\"./dist/qingfengmyAdd.js\");\n}\n```\n### 5. 将库文件暴露出去\n```\noutput: {\n    filename: \"[name].js\",\n    library: \"qingfengmyAdd\", // 全局变量是什么？window.qingfengmyAdd\n    libraryExport: \"default\", // 默认值\n    libraryTarget: \"umd\"      // 都支持\n}\n```\n### 6. 发布到npm上\n```\nnpm login\n...\nnpm publish\n```\n### 7. 校验\n","readmeFilename":"README.md"}