有没有办法让Webpack将#!/usr/bin/env node
保留在我的文件顶部?
我试图将CLI与模块捆绑在一起...仅使用一个配置文件单独导出index.js / cli.js
并使cli需要索引有点棘手。我开始工作了......
然而..我没有找到任何办法让#!/usr/bin/env node
保持在我的cli文件的顶部,任何想法?
简而言之,webpack输出如下文件:
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
..............................................................
但我需要的是
#!/usr/bin/env node //<------ HEREEEE
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
..............................................................
答案 0 :(得分:25)
您应该能够将BannerPlugin与原始模式一起使用。使用此插件,您可以在捆绑包顶部添加所需的任何字符串。通过使用原始模式,它不会将字符串包装在注释中。
在webpack.config.js
文件中:
plugins: [
new webpack.BannerPlugin({ banner: "#!/usr/bin/env node", raw: true }),
]
答案 1 :(得分:1)
您现在可以使用 webpack-shebang-plugin 作为一个多合一的工具集来在源条目文件中保留 hashbang。
BannerPlugin 只会将 hashbang 添加到您的输出包中,但它不会:
删除源文件中的 hashbang,它作为 Webpack 语法检查的错误发生。您还需要一个 shebang-loader 或一个 babel-plugin-shebang 来处理源文件。
确保输出包的文件权限为“可执行”。当您在本地 npm-link 项目以测试 bin 文件时,这很有用。
这些都是由webpack-shebang-plugin通过简单的调用
来完成的new ShebangPlugin()
,并且是可配置的。