template里.eslintrc.js之类的文件无法复制到新项目

template里.eslintrc.js之类的文件无法复制到新项目

模板http://img1.sycdn.imooc.com//climg/5e7742720917289d02030242.jpg

实际生成的项目:http://img1.sycdn.imooc.com//climg/5e77428709b7f74002210168.jpg

.XXX这类格式的文件都无法复制到新项目

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 陈小明 2020-03-23 11:55:31
module.exports = class extends Generator {
  prompting() {
    // Have Yeoman greet the user.
    this.log(
      yosay(`Welcome to the divine ${chalk.red('generator-charming-vue-temp')} generator!`)
    );

    const prompts = [{
        type: 'input',
        name: 'name',
        message: '请输入项目名?',
        default: 'charming-vue-temp'
      }, {
        type: 'input',
        name: 'description',
        message: '请输入项目描述?',
        default: 'a simple description'
      }, {
        type: 'input',
        name: 'author',
        message: '请输入项目作者?',
        default: ''
      }
    ];

    return this.prompt(prompts).then(props => {
      // To access props later use this.props.someAnswer;
      this.props = props;
    });
  }

  writing() {
    this.fs.copy(
      this.templatePath('**'),
      this.destinationPath('./')
    );
    // 下面文件默认不能直接应用在新项目里,故指定复制一份
    const specFileList = ['.browserslistrc', '.eslintrc.js']
    specFileList.forEach(file => {
      this.fs.copy(this.templatePath(file), this.destinationPath(file));  
    })
    // 改写package.json
    this.initPackage();
  }
  initPackage () {
    let pkg = this.fs.readJSON(this.templatePath('./package.json'), {});
    const { props } = this;

    Object.assign(pkg, {
      name: props.name,
      description: props.description,
      author: props.author
    });
    this.fs.extendJSON(this.destinationPath('./package.json'), pkg);
  }
};

自己改写了一下yeoman的index.js文件:

  1. 增加了三个问题,让用户输入项目名,项目描述,和作者,并更新到package.json

  2. 增加了对.xxx这类型的文件的支持(支持.eslintrc.js

  3. 关闭了默认的自动安装依赖(国内安装依赖时间太长,不想让用户觉得是因为使用我的脚手架而导致时间长)

Brian 2020-03-22 22:35:40

你是不是把文件夹的属性给设置成隐藏了?!

可以复制的啊,可以试试你的shell中复制,使用cp命令。

或者自己创建一个,别偷懒~~

  • 提问者 陈小明 #1
    老师你好,你看我的模板文件夹里是有这些文件的。我的问题是:为什么我的模板里面有.eslintrc.js,但是用yo my-project-name 命令来生成的项目里面就没有这些文件
    2020-03-22 22:59:35
  • 提问者 陈小明 #2
    const specFileList = ['.browserslistrc', '.eslintrc.js'] specFileList.forEach(file => { this.fs.copy(this.templatePath(file), this.destinationPath(file)); }) 我直接把不能复制的文件指定去复制了...
    2020-03-23 11:52:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师