Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将时间戳附加到npmbuild?_Npm_Webpack_Gulp_Npm Scripts - Fatal编程技术网

如何将时间戳附加到npmbuild?

如何将时间戳附加到npmbuild?,npm,webpack,gulp,npm-scripts,Npm,Webpack,Gulp,Npm Scripts,我只是想了解一下npm,然后用npm/webpack/build创建构建。 如何将时间戳作为文件名的一部分添加到使用npm/webpack生成的bundle.js中?有可用的模块吗?我知道没有现有的模块。但是,这可以使用以下解决方案实现: 编写一个自定义nodejs脚本,将时间戳附加到生成的bundle.js,即将文件重命名为类似于:bundle-2018-02-14-10-16-22.js 利用钩子调用自定义nodejs脚本 注意:我假设您执行npm run build命令来生成bundle.

我只是想了解一下npm,然后用npm/webpack/build创建构建。
如何将时间戳作为文件名的一部分添加到使用npm/webpack生成的bundle.js中?有可用的模块吗?

我知道没有现有的模块。但是,这可以使用以下解决方案实现:

  • 编写一个自定义nodejs脚本,将时间戳附加到生成的
    bundle.js
    ,即将文件重命名为类似于:
    bundle-2018-02-14-10-16-22.js
  • 利用钩子调用自定义nodejs脚本
  • 注意:我假设您执行
    npm run build
    命令来生成
    bundle.js
    。在这种情况下,下面的解决方案利用名为
    “postbuild”
    的npm脚本来调用添加时间戳的nodejs脚本


    timestamp.js

    创建一个自定义nodejs脚本,如下所示。让我们将文件命名为
    timestamp.js

    const fs=require('fs');
    const path=require('path');
    const src=process.argv[2];
    如果(!src){
    抛出新错误(“缺少文件路径参数”);
    }
    const tstamp=new Date().toISOString()
    .replace(/\.[\w\w]+?$/,'')//从点到点删除。
    .替换(/\:|\s | T/g,“-”);//用连字符替换冒号、空格和T。
    const ext=path.extname(src);
    const fname=path.basename(src.replace)(ext.);
    const fpath=path.dirname(src);
    const dest=path.join(fpath,${fname}-${tstamp}${ext});
    fs.rename(src、dest、function(err){
    如果(错误)抛出错误;
    });
    

    package.json

    package.json的
    scripts
    部分,添加
    postbuild
    脚本以调用
    timestamp.js
    ,如下所示:

    {
    ...
    “脚本”:{
    “构建”:,
    “后期生成”:“节点时间戳路径/to/bundle.js”
    },
    ...
    }
    
    注意:您当前的
    构建
    脚本应保持原样


    跑步

    执行
    npm run build
    命令时,构建步骤将正常运行。完成后,将自动调用
    postbuild
    脚本,并根据需要将timetsamp附加到文件名


    注释

    • postbuild
      脚本中的
      path/to/bundle.js
      部分应更改为生成的
      bundle.js
      文件的实际路径

    • 上面的示例
      postbuild
      脚本当前假定
      timestamp.js
      package.json
      位于同一目录中。例如,您可以将其保存在名为
      .scripts
      的隐藏目录中,该目录与
      package.json
      位于同一目录中。在这种情况下,您的
      postbuild
      脚本需要更改为:

      {
      ...
      “脚本”:{
      “构建”:,
      “后期生成”:“node.scripts/timestamp path/to/bundle.js”
      },
      ...
      }
      
    • 附加到文件名的时间戳当前使用的格式为:
      YYYY-MM-DD-hh-MM-ss

    • 您会注意到,
      timestamp.js
      行中使用了以下内容:

      const dest=path.join(fpath,`${fname}-${tstamp}${ext}`);
      
      但是,如果您运行的节点版本不支持这些,则将该行替换为以下内容(即使用
      +
      运算符进行字符串连接):

      const dest=path.join(fpath,fname+'-'+tstamp+ext);