Shell Scrpt动态变量名

本文介绍如何在Linux环境中利用bash shell script动态生成变量名来监控HCP流程中7个步骤的subject完成状态。由于采用了并行运行的方式,通过这种方式可以有效地组织和检查每个步骤的进度。

需要检查跑的数据跑好了没有,HCP 的7个步骤,看看subject分别完成到什么程度了,因为全开的并行,需要整理一下,所以需要用到动态变量名

  #1.check-1:PreFreeSurfer
  for out_file in $(ls -lt | awk '$5==0 && /PreFreeSurfer/{print $9}' | sed 's/.sh.e/.sh.o/g')
  do
      subject=$(cat
<think>根据用户的问题,用户希望配置HtmlWebpackPlugin以设置脚本引入路径。用户特别提到了“script引入路径”,这可能指的是如何自定义生成的HTML文件中引入的JavaScript文件的路径(例如,使用CDN路径或者修改输出目录的路径)。在HtmlWebpackPlugin的配置中,我们可以通过几个选项来控制脚本的引入路径:1.`publicPath`:在输出配置(output)中设置,它会影响所有webpack生成的资源的引入路径前缀。2.`filename`:在HtmlWebpackPlugin中设置,用于指定生成的HTML文件的路径和文件名。3.在HtmlWebpackPlugin中,还可以通过`scriptLoading`选项来控制脚本的加载方式(例如,'defer'、'module'等),但这不直接影响路径。4.如果需要为特定的脚本指定不同的路径(比如CDN),可以使用`externals`配置,并在HTML模板中手动引入,或者使用HtmlWebpackPlugin的`inject`选项结合自定义模板来实现。根据引用[1]和引用[3],HtmlWebpackPlugin的基本配置中,我们可以通过`template`选项指定一个模板文件,然后插件会自动将打包生成的js和css资源注入到HTML中。而资源的路径由webpack的`output.publicPath`决定。因此,要设置脚本引入路径,主要可以通过以下两种方式:-方式一:在webpack的output配置中设置`publicPath`,这样所有资源(包括由HtmlWebpackPlugin注入的脚本)的路径都会加上这个前缀。-方式二:在HtmlWebpackPlugin的配置中,可以通过`publicPath`选项覆盖全局的publicPath(但是注意,这个选项在HtmlWebpackPlugin中不是直接提供的,通常我们使用全局的publicPath)。另外,如果使用自定义模板,可以在模板中直接写死路径,但这样不够灵活。此外,引用[1]中还提到了在HtmlWebpackPlugin中导出cdn的配置,这通常用于CDN场景。我们可以通过在HtmlWebpackPlugin的配置中使用`cdn`对象(需要配合自定义模板)或者使用`inject`为false然后手动注入资源。具体步骤如下:###方法1:通过output.publicPath设置全局资源路径在webpack配置中设置output.publicPath,例如:```javascriptmodule.exports={output:{path:path.resolve(__dirname,'dist'),filename:'bundle.js',publicPath:'/assets/'//所有资源路径前都会加上/assets/},plugins:[newHtmlWebpackPlugin({template:'./src/index.html'})]};```这样,生成的HTML中引入的脚本路径就会是`/assets/bundle.js`。###方法2:在模板中手动控制(当使用CDN时)如果希望某些脚本使用CDN路径,可以:1.在webpack配置中配置externals,将某些库设置为外部依赖,不打包进bundle。2.在HTML模板中手动添加CDN的script标签。但是,如果只是希望修改所有由webpack生成的资源的路径,使用publicPath是最直接的。###方法3:使用HtmlWebpackPlugin的选项来修改资源路径实际上,HtmlWebpackPlugin本身并不提供直接修改资源路径的选项,它依赖于webpack的publicPath。但是,我们可以通过以下方式间接实现:-在HtmlWebpackPlugin配置中,有一个`publicPath`选项(注意:这个选项在官方文档中标记为已废弃,不推荐使用),或者使用`filename`来改变HTML文件的输出位置,但这并不改变资源路径。-更推荐的是在webpack的output中设置publicPath。###方法4:使用HtmlWebpackPlugin的模板变量在自定义模板中,可以使用HtmlWebpackPlugin提供的模板变量来输出资源路径。例如,在模板中:```html<scriptsrc="<%=htmlWebpackPlugin.options.customPath%>/bundle.js"></script>```然后在配置中传入customPath:```javascriptnewHtmlWebpackPlugin({template:'./src/index.html',customPath:'https://cdn.example.com'//自定义变量})```但是,这需要关闭自动注入(inject:false),然后手动在模板中编写脚本标签。###总结对于用户的问题,最常用的方法是设置webpack的output.publicPath。如果用户需要为不同的环境(如开发环境和生产环境)设置不同的路径,可以通过环境变量来动态设置publicPath。下面给出一个示例配置:```javascriptconstpath=require('path');module.exports={//其他配置...output:{path:path.resolve(__dirname,'dist'),filename:'[name].bundle.js',publicPath:process.env.NODE_ENV==='production'?'https://cdn.example.com/':'/'},plugins:[newHtmlWebpackPlugin({template:'./src/index.html',//其他配置...})]};```这样,在生产环境下,脚本的引入路径就会使用CDN地址;在开发环境下,使用根路径。如果用户有更具体的需求,比如只为某些脚本设置不同的路径,则需要结合使用多个配置或者编写自定义模板。###相关问题根据用户的问题,生成以下相关问题:1.如何在HtmlWebpackPlugin中为不同的入口文件设置不同的引入路径?2.如何在使用HtmlWebpackPlugin时排除某些脚本的自动注入?3.如何在webpack中根据环境变量动态设置publicPath?4.HtmlWebpackPlugin的inject选项有哪些值,分别代表什么含义?5.如何在HtmlWebpackPlugin中使用自定义模板变量?以上问题可以帮助用户深入理解HtmlWebpackPlugin的配置和资源路径的设置。</think>### HtmlWebpackPlugin 配置 script 引入路径详解 要配置 `HtmlWebpackPlugin` 的脚本引入路径,主要通过以下两种方式实现: #### 1. **通过 `publicPath` 全局配置** 在 webpack 的 `output` 中设置 `publicPath`,这会统一修改所有资源的引入路径(包括脚本): ```javascript // webpack.config.js const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { output: { path: path.resolve(__dirname, 'dist'), filename: 'js/[name].bundle.js', publicPath: 'https://cdn.example.com/', // 统一添加 CDN 路径前缀 }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html', }) ] }; ``` **效果**:生成的 HTML 中脚本路径变为: ```html <script src="https://cdn.example.com/js/main.bundle.js"></script> ``` #### 2. **通过插件参数精细控制** 在 `HtmlWebpackPlugin` 配置中使用 `scriptLoading` 或自定义模板: ```javascript new HtmlWebpackPlugin({ template: './src/index.html', scriptLoading: 'defer', // 控制加载方式:'blocking' | 'defer' | 'module' publicPath: '/custom-path/', // 覆盖全局 publicPath(插件特有选项) // 或通过 filename 控制 HTML 输出位置 filename: 'admin/index.html' }) ``` **效果**: - `scriptLoading: 'defer'` → `<script defer src="..."></script>` - `publicPath: '/custom-path/'` → 脚本路径变为 `/custom-path/js/main.bundle.js` #### 3. **使用自定义模板(高级)** 在模板文件中直接指定路径(需关闭自动注入): ```html <!-- src/index.html --> <head> <% if (htmlWebpackPlugin.options.cdn) { %> <script src="<%= htmlWebpackPlugin.options.cdn %>/vendor.js"></script> <% } %> </head> ``` 配置插件: ```javascript new HtmlWebpackPlugin({ template: './src/index.html', inject: false, // 关闭自动注入 cdn: 'https://static.example.com', // 自定义变量 }) ``` ### 关键配置说明 | **配置项** | **作用** | |------------------|-------------------------------------------------------------------------| | `output.publicPath` | 全局资源路径前缀(推荐) | | `scriptLoading` | 控制脚本加载行为(`defer`/`module`等) | | `filename` | 指定生成的 HTML 文件路径(间接影响相对路径) | | `inject: false` | 关闭自动注入,需手动在模板中控制脚本位置 | > **最佳实践**: > 1. CDN 部署优先使用 `output.publicPath`[^1][^3] > 2. 特殊加载需求(如 `defer`)使用 `scriptLoading` > 3. 复杂路径逻辑通过自定义模板实现[^4] ### 示例配置(CDN 场景) ```javascript // webpack.prod.js module.exports = { output: { publicPath: 'https://cdn.yourdomain.com/v1.0/', }, plugins: [ new HtmlWebpackPlugin({ template: 'public/index.html', minify: true, // 压缩HTML scriptLoading: 'defer' }) ] }; ``` 生成效果: ```html <!DOCTYPE html> <html> <body> <script defer src="https://cdn.yourdomain.com/v1.0/main.js"></script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值