{"versions":{"1.0.0":{"name":"@hussar/esm-builder","version":"1.0.0","description":"轻骑兵模块打包器","keywords":["webpack5","esm","builder"],"type":"module","main":"index.js","repository":{"type":"git","url":"git@192.168.2.106:hussarfe/hussar-esm-builder.git"},"author":{"name":"@HUSSAR-FE"},"license":"MIT","private":false,"dependencies":{"@babel/core":"^7.12.16","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-syntax-jsx":"^7.22.5","@babel/preset-env":"7.20.2","@vue/babel-helper-vue-jsx-merge-props":"^1.4.0","@vue/babel-plugin-jsx":"^1.0.3","@vue/babel-plugin-transform-vue-jsx":"^1.4.0","@vue/babel-preset-jsx":"^1.4.0","autoprefixer":"^10.2.4","babel-loader":"^8.2.2","cross-env":"^7.0.3","css-loader":"^6.11.0","css-minimizer-webpack-plugin":"^3.0.2","file-loader":"^6.2.0","less":"^3.9.0","less-loader":"^5.0.0","mini-css-extract-plugin":"^2.5.3","postcss-loader":"^6.1.1","sass":"^1.32.7","sass-loader":"^12.0.0","style-loader":"^3.3.4","url-loader":"^4.1.1","webpack":"^5.96.1","webpack-5-chain":"^8.0.2","webpack-bundle-analyzer":"^4.4.0","webpack-cli":"^5.1.4","webpack-merge":"^5.10.0"},"files":["package.json","index.js","README.md","lib/"],"readmeFilename":"README.md","gitHead":"36cfb0b579ac84e125eebd1296bbec43a4197524","_id":"@hussar/esm-builder@1.0.0","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-kn/MH8XZxeKUselPK1D9i9ie1WnlWrA0dKX/4D86UpcbzhrOlEu8Q3de0yZp08IKBZAYCjMCbannCO/0GRF9ZQ==","shasum":"96a53e7e6fe1f9810b2cc5b015647cf01359588d","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@hussar/esm-builder/-/esm-builder-1.0.0.tgz"},"contributors":[]},"1.0.12":{"name":"@hussar/esm-builder","version":"1.0.12","description":"轻骑兵模块打包器","type":"module","keywords":["webpack5","esm","builder"],"main":"index.js","repository":{"type":"git","url":"git@192.168.2.106:hussarfe/hussar-esm-builder.git"},"author":{"name":"@HUSSAR-FE"},"license":"MIT","private":false,"dependencies":{"@babel/core":"^7.12.16","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-syntax-jsx":"^7.22.5","@babel/preset-env":"7.20.2","@vue/babel-helper-vue-jsx-merge-props":"^1.4.0","@vue/babel-plugin-jsx":"^1.0.3","@vue/babel-plugin-transform-vue-jsx":"^1.4.0","@vue/babel-preset-jsx":"^1.4.0","autoprefixer":"^10.2.4","babel-loader":"^8.2.2","cross-env":"^7.0.3","css-loader":"^6.11.0","css-minimizer-webpack-plugin":"^3.0.2","file-loader":"^6.2.0","less":"^3.9.0","less-loader":"^5.0.0","mini-css-extract-plugin":"^2.5.3","postcss-loader":"^6.1.1","sass":"^1.32.7","sass-loader":"^12.0.0","style-loader":"^3.3.4","url-loader":"^4.1.1","webpack":"^5.96.1","webpack-5-chain":"^8.0.2","webpack-bundle-analyzer":"^4.4.0","webpack-cli":"^5.1.4","webpack-merge":"^5.10.0"},"files":["package.json","index.js","README.md","lib/"],"readmeFilename":"README.md","_id":"@hussar/esm-builder@1.0.12","_integrity":"sha512-hpdakPmA7hiMxGfuWgq3Zojz8U5OSIp3JpB/rWgJbsVb7Ldzw5u7QUp/g+2sZfvE1n7cF4+BOU6AxlSyyVnsrg==","_resolved":"/var/jenkins_home/workspace/fusion/common/front-npm-transfer/packages/@hussar_esm-builder@1.0.12.tgz","_from":"file:/var/jenkins_home/workspace/fusion/common/front-npm-transfer/packages/@hussar_esm-builder@1.0.12.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-hpdakPmA7hiMxGfuWgq3Zojz8U5OSIp3JpB/rWgJbsVb7Ldzw5u7QUp/g+2sZfvE1n7cF4+BOU6AxlSyyVnsrg==","shasum":"f8d82ecb870a84075b7349f674cfbfc6517b9634","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@hussar/esm-builder/-/esm-builder-1.0.12.tgz"},"contributors":[]},"1.0.15":{"name":"@hussar/esm-builder","version":"1.0.15","description":"轻骑兵模块打包器","type":"module","keywords":["webpack5","esm","builder"],"main":"index.js","repository":{"type":"git","url":"git@192.168.2.106:hussarfe/hussar-esm-builder.git"},"author":{"name":"@HUSSAR-FE"},"license":"MIT","private":false,"dependencies":{"@babel/core":"^7.12.16","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-syntax-jsx":"^7.22.5","@babel/preset-env":"7.20.2","@vue/babel-helper-vue-jsx-merge-props":"^1.4.0","@vue/babel-plugin-jsx":"^1.0.3","@vue/babel-plugin-transform-vue-jsx":"^1.4.0","@vue/babel-preset-jsx":"^1.4.0","autoprefixer":"^10.2.4","babel-loader":"^8.2.2","cross-env":"^7.0.3","css-loader":"^6.11.0","css-minimizer-webpack-plugin":"^3.0.2","cssnano":"^5.0.0","file-loader":"^6.2.0","less":"^3.9.0","less-loader":"^5.0.0","mini-css-extract-plugin":"^2.5.3","postcss-loader":"^6.1.1","sass":"^1.32.7","sass-loader":"^12.0.0","style-loader":"^3.3.4","url-loader":"^4.1.1","webpack":"^5.96.1","webpack-5-chain":"^8.0.2","webpack-bundle-analyzer":"^4.4.0","webpack-cli":"^5.1.4","webpack-merge":"^5.10.0"},"files":["package.json","index.js","README.md","lib/"],"readmeFilename":"README.md","gitHead":"27ef097026c00545251222ec20a3b221ecdeb55e","_id":"@hussar/esm-builder@1.0.15","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-Ik7p4cJRrBI3AXdA4HWxeKF3g7S5Ieiv6RXVyu8Kwzn77N3YOIGWfM6pPqeC5kg/d1RD2Hap766WkLFljdW6PQ==","shasum":"6e69469add8ac18a13fb3140298f5cacd5da26d2","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@hussar/esm-builder/-/esm-builder-1.0.15.tgz"},"contributors":[]},"1.1.0":{"name":"@hussar/esm-builder","version":"1.1.0","description":"轻骑兵模块打包器","keywords":["webpack5","esm","builder"],"main":"index.mjs","repository":{"type":"git","url":"git@192.168.2.106:hussarfe/hussar-esm-builder.git"},"author":{"name":"@HUSSAR-FE"},"license":"MIT","private":false,"dependencies":{"@babel/core":"^7.12.16","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-syntax-jsx":"^7.22.5","@babel/preset-env":"7.20.2","@vue/babel-helper-vue-jsx-merge-props":"^1.4.0","@vue/babel-plugin-jsx":"^1.0.3","@vue/babel-plugin-transform-vue-jsx":"^1.4.0","@vue/babel-preset-jsx":"^1.4.0","autoprefixer":"^10.2.4","babel-loader":"^8.2.2","cross-env":"^7.0.3","css-loader":"^6.11.0","css-minimizer-webpack-plugin":"^3.0.2","cssnano":"^5.0.0","file-loader":"^6.2.0","less":"^3.9.0","less-loader":"^5.0.0","mini-css-extract-plugin":"^2.5.3","postcss-loader":"^6.1.1","sass":"^1.32.7","sass-loader":"^12.0.0","style-loader":"^3.3.4","url-loader":"^4.1.1","webpack":"^5.96.1","webpack-5-chain":"^8.0.2","webpack-bundle-analyzer":"^4.4.0","webpack-cli":"^5.1.4","webpack-merge":"^5.10.0"},"files":["package.json","index.mjs","README.md","lib/","plugins"],"readmeFilename":"README.md","_id":"@hussar/esm-builder@1.1.0","_integrity":"sha512-OdsgCzG9cpknSP6+BhtcevYbyrzEwnfQzPZ6iS/WCnWyhVhIvembxa5dpRbexuz4YIw59WalQ4XdJLlNJ0D7VQ==","_resolved":"/var/jenkins_home/workspace/fusion/common/front-npm-transfer/packages/@hussar_esm-builder@1.1.0.tgz","_from":"file:/var/jenkins_home/workspace/fusion/common/front-npm-transfer/packages/@hussar_esm-builder@1.1.0.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-OdsgCzG9cpknSP6+BhtcevYbyrzEwnfQzPZ6iS/WCnWyhVhIvembxa5dpRbexuz4YIw59WalQ4XdJLlNJ0D7VQ==","shasum":"cf72c53afdddfec729a5d99b4e00e469fa035923","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@hussar/esm-builder/-/esm-builder-1.1.0.tgz"},"contributors":[]}},"dist-tags":{"latest":"1.1.0"},"name":"@hussar/esm-builder","time":{"modified":"2026-01-17T14:19:45.776Z","created":"2025-01-24T07:39:00.114Z","1.0.0":"2025-01-24T07:39:00.114Z","1.0.12":"2025-06-18T03:20:43.902Z","1.0.15":"2025-08-12T01:14:19.459Z","1.1.0":"2026-01-17T14:19:45.776Z"},"readme":"# hussar-esm-builder\n\n轻骑兵模块打包工具，底层基于webpack5封装，构建库输出文件保留import和export语法，符合esm规范。\n\n## 1. 用法\n\n### 1.1 安装\n\n```sh\nyarn add @hussar/esm-builder -D \n```\n\n### 1.2 配置 webpack.config.mjs\n\n```js\nimport { defineConfig } from '@hussar/esm-builder';\n\nexport default defineConfig({\n  entry: './src/main.js', // 打包入口文件\n  outputPath: './dist', // 输出目录，相对于当前配置文件所在的的相对路径\n  publicPath: './', // 默认 './'  设置图片路径 publicPath\n  css: {} // css 配置相关\n  configureWebpack: { // 直接配置，和默认配置进行merge\n    ...\n  }, \n  configureWebpack (config) { // 函数返回配置，和默认配置进行merge\n    return {};\n  },\n  chainWebpack(config) { // 对于修改一些配置性的可以使用chain修改。\n    // chain webpack \n    // code ...\n\n    // 示例\n    config.optimization\n    .minimizer('css')\n    .use(OptimizeCSSAssetsPlugin, [{ cssProcessorOptions: { safe: true } }]);\n\n  }\n });\n```\n\n### 1.3 配置 打包脚本\n\n```json\n{\n  \"name\": \"esm-lib-demo\",\n  \"scripts\": {\n    \"build\": \"webpack --config webpack.config.mjs --progress --color\",\n    // 方式1：给 webpack-cli 传递参数 --analyze 本地自动启动 http://127.0.0.1:8888/ 分析报告\n    \"build:analyze\": \"webpack --config webpack.config.mjs --progress --color --analyze\",\n    // 方式2：使用report参数，在在dist/生成 report.html，report=true 或者 report=1 开启，否则不开启\n    \"build:report\": \"cross-env report=true npm run build\" \n  }\n}\n```\n\n\n## 2. 配置说明\n\n### 2.1 entry 打包入口文件\n\n> 详细说明见 [webpack entry api](https://webpack.docschina.org/configuration/entry-context/#entry)\n\n默认值：`./src/main.js`\n\n```js\n\n// 默认导出的库名是 index.esm.js index.css\ndefineConfig({\n  entry: './src/main.js',\n});\n\n// 指定入口名称，输出 main.esm.js main.css\ndefineConfig({\n  entry: {\n    main: './src/main.js'\n  },\n})\n\n// 指定多个入口，名称，输出 index.esm.js index.css main.esm.js main.css\ndefineConfig({\n  entry: {\n    index: './src/main.js',\n    main: './src/main.js'\n  },\n})\n```\n\n\n### 2.2 outputPath 输出文件路径\n\n默认值：`./dist`\n\n相对于当前配置文件的文件目录。\n\n```js\ndefineConfig({\n  outputPath: './dist',\n})\n```\n\n和以下方法配置相同\n\n```js\ndefine({\n  // 方式1\n  configureWebpack (config) {\n    return {\n      output: {\n        path: './dist'\n      }\n    }\n  },\n  // 方式二\n  chainWebpack (config) {\n    config.output.path('./dist');\n  }\n})\n```\n\n###  css 配置loader\n\n- loaderOptions\n\n默认值为空\n\n```js\ndefineConfig({\n  css: {\n    extract: true, // 默认值 true，为 true 时提取css到单独文件，为 false 时内联到js(不建议使用)\n    loaderOptions: {\n      css: {\n        // 这里的选项会传递给 css-loader\n      },\n      postcss: {\n        // 这里的选项会传递给 postcss-loader\n      },\n      sass: {\n        // 这里的选项会传递给 sass-loader\n      },\n      less: {\n        // 这里的选项会传递给 lass-loader\n      }\n    }\n  }\n})\n\n```\n\n向预处理器传递参数\n\n```js\ndefineConfig({\n  css: {\n    loaderOptions: {\n      // 给 sass-loader 传递选项\n      sass: {\n        // @/ 是 src/ 的别名\n        // 所以这里假设你有 `src/variables.sass` 这个文件\n        prependData: `@import \"~@/variables.sass\"`\n      },\n      // 默认情况下 `sass` 选项会同时对 `sass` 和 `scss` 语法同时生效\n      // 因为 `scss` 语法在内部也是由 sass-loader 处理的\n      // 但是在配置 `prependData` 选项的时候\n      // `scss` 语法会要求语句结尾必须有分号，`sass` 则要求必须没有分号\n      // 在这种情况下，我们可以使用 `scss` 选项，对 `scss` 语法进行单独配置\n      scss: {\n        additionalData: `@import \"~@/variables.scss\";`\n      },\n      // 给 less-loader 传递 Less.js 相关选项\n      less:{\n        // http://lesscss.org/usage/#less-options-strict-units `Global Variables`\n        // `primary` is global variables fields name\n        globalVars: {\n          primary: '#fff'\n        }\n      }\n    }\n  }\n})\n```","users":{}}